鍵入網址到網頁顯示,期間發生了什麼?
孤單小弟——HTTP
真實地址查詢——DNS
指南好幫手——協議棧
可靠傳輸——TCP
遠端定位——IP
兩點傳輸——MAC
出口——網絡卡
送別者——交換機
出境大門——路由器
互相扒皮——伺服器與客戶端
一個數據包的感受
孤單小弟——HTTP
瀏覽器做的第一步工作是解析 URL
首先瀏覽器做的第一步工作就是要對 URL
進行解析,從而生成傳送給 Web
伺服器的請求資訊。
讓我們看看一條長長的 URL 裡的各個元素的代表什麼,見下圖:
所以圖中的長長的 URL 實際上是請求伺服器裡的檔案資源。
要是上圖中的藍色部分 URL 元素都省略了,那應該是請求哪個檔案呢?
當沒有路徑名時,就代表訪問根目錄下事先設定的預設檔案,也就是 /index.html
或者 /default.html
這些檔案,這樣就不會發生混亂了。
生產 HTTP 請求資訊
對 URL
進行解析之後,瀏覽器確定了 Web 伺服器和檔名,接下來就是根據這些資訊來生成 HTTP 請求訊息了。
一個孤單 HTTP 資料包表示:“我這麼一個小小的資料包,沒親沒友,直接發到浩瀚的網路,誰會知道我呢?誰能載我一程呢?誰能保護我呢?我的目的地在哪呢?”。
充滿各種疑問的它,沒有停滯不前,依然踏上了征途!
真實地址查詢 —— DNS
通過瀏覽器解析 URL 並生成 HTTP 訊息後,需要委託作業系統將訊息傳送給 Web
但在傳送之前,還有一項工作需要完成,那就是查詢伺服器域名對應的 IP 地址,因為委託作業系統傳送訊息時,必須提供通訊物件的 IP 地址。
比如我們打電話的時候,必須要知道對方的電話號碼,但由於電話號碼難以記憶,所以通常我們會將對方電話號 + 姓名儲存在通訊錄裡。
所以,有一種伺服器就專門儲存了 Web
伺服器域名與 IP
的對應關係,它就是 DNS
伺服器。
域名的層級關係
DNS 中的域名都是用句點來分隔的,比如 www.server.com
,這裡的句點代表了不同層次之間的界限。
在域名中,越靠右的位置表示其層級越高。
畢竟域名是外國人發明,所以思維和中國人相反,比如說一個城市地點的時候,外國喜歡從小到大的方式順序說起(如 XX 街道 XX 區 XX 市 XX 省),而中國則喜歡從大到小的順序(如 XX 省 XX 市 XX 區 XX 街道)。
實際上域名最後還有一個點,比如 www.server.com.
,這個最後的一個點代表根域名。
也就是,.
根域是在最頂層,它的下一層就是 .com
頂級域,再下面是 server.com
。
所以域名的層級關係類似一個樹狀結構:
- 根 DNS 伺服器(.)
- 頂級域 DNS 伺服器(.com)
- 權威 DNS 伺服器(server.com)
根域的 DNS 伺服器資訊儲存在網際網路中所有的 DNS 伺服器中。
這樣一來,任何 DNS 伺服器就都可以找到並訪問根域 DNS 伺服器了。
因此,客戶端只要能夠找到任意一臺 DNS 伺服器,就可以通過它找到根域 DNS 伺服器,然後再一路順藤摸瓜找到位於下層的某臺目標 DNS 伺服器。
域名解析的工作流程