1. 程式人生 > >HTTP報文如何連線

HTTP報文如何連線

TCP/IP

HTTP 是個應用層協議。HTTP 無需操心網路通訊的具體細節;它把聯網的細節都 交給了通用、可靠的因特網傳輸協議 TCP/IP。 TCP 提供了: 

• 無差錯的資料傳輸;

• 按序傳輸(資料總是會按照發送的順序到達);

• 未分段的資料流(可以在任意時刻以任意尺寸將資料傳送出去)。

HTTP 網路協議棧

 連線、IP地址及埠號

在 HTTP 客戶端向伺服器傳送報文之前,需要用網際協議(Internet Protocol,IP) 地址和埠號在客戶端和伺服器之間建立一條 TCP/IP 連線。

在 TCP 中,你需要知道伺服器的 IP 地址,以及與伺服器上執行的特定軟體相關的 TCP 埠號。

這就行了,但最初怎麼獲得 HTTP 伺服器的 IP 地址和埠號呢?當然是通過 URL 了!我們前面曾提到過,URL 就是資源的地址,所以自然能夠為我們提供儲存資源 的機器的 IP 地址。

我們來看幾個 URL:

http://207.200.83.29:80/index.html

http://www.netscape.com:80/index.html

http://www.netscape.com/index.html

第一個 URL 使用了機器的 IP 地址,207.200.83.29 以及埠號 80。

第二個 URL 沒有使用數字形式的 IP 地址,它使用的是文字形式的域名,或者稱為 主機名(www.netscape.com)。主機名就是 IP 地址比較人性化的別稱。可以通過一 種稱為域名服務(Domain Name Service,DNS)的機制方便地將主機名轉換為 IP 地址,這樣所有問題就都解決了。

最後一個 URL 沒有埠號。HTTP 的 URL 中沒有埠號時,可以假設預設埠號是 80。

基本的瀏覽器連線處理

步驟如下:

(a) 瀏覽器從 URL 中解析出伺服器的主機名;

(b) 瀏覽器將伺服器的主機名轉換成伺服器的 IP 地址;

(c) 瀏覽器將埠號(如果有的話)從 URL 中解析出來;

(d) 瀏覽器建立一條與 Web 伺服器的 TCP 連線;

(e) 瀏覽器向伺服器傳送一條 HTTP 請求報文;

(f) 伺服器向瀏覽器回送一條 HTTP 響應報文;

(g) 關閉連線,瀏覽器顯示文件。