在 HTTP 客戶端向服務器發送報文之前,需要用在客戶端和服務器之間建立一條 TCP/IP 連接。
要想建立TCP/IP 連接連接,需要知道服務器的 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。
有了 IP 地址和端口號,客戶端就可以很方便地通過 TCP/IP 進行通信了。
瀏覽器是怎樣通過 HTTP 顯示位於遠端服務器中的某個簡單 HTML 資源的?
步驟如下:
(a) 瀏覽器從 URL 中解析出服務器的主機名;
(b) 瀏覽器通過域名解析機制將服務器的主機名轉換成服務器的 IP 地址;(如何直接使用了IP而不是域名,a,b步驟可省略)
(c) 瀏覽器將端口號(如果有的話)從 URL 中解析出來;
(d) 瀏覽器通過IP地址和端口號建立一條與 Web 服務器的 TCP 連接;
(e) 瀏覽器向服務器發送一條 HTTP 請求報文;
(f) 服務器向瀏覽器回送一條 HTTP 響應報文;
(g) 關閉連接,瀏覽器顯示文檔。