安利:網絡是怎樣鏈接的

有個經典的前端面試題:從輸入 URL 到頁面加載發生了什麼?html

《HTTP權威指南》中列出了瀏覽器怎樣經過HTTP顯示位於遠端服務器中的某個簡單HTML資源的步驟:前端

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

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

(c)瀏覽器將端口號(若是有的話)從URL中解析出來;瀏覽器

(d)瀏覽器創建一條與 Web 服務器的 TCP 鏈接;緩存

(e)瀏覽器向服務器發送一條 HTTP 請求報文;性能優化

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

(g)關閉鏈接,瀏覽器顯示文檔。網絡

這幾個步驟實際上是歸納地很籠統抽象的,而在 《網絡是怎樣鏈接的》 這本書中,對幾個步驟進行了詳盡的擴充,它用圖解的方式生動形象地介紹了網絡是如何鏈接的。看完這本書,也就能天然而然地能在腦中浮現出前面那道經典面試題的過程了,固然,不止這些。架構

首先,書的開頭就給咱們展示了一副網絡探索線路圖:

網絡鏈接路線圖

網絡 = 網絡應用程序(如瀏覽器和Web服務器) + 負責搬運數字信息的機制。

【♠ Web瀏覽器】 當咱們輸入這樣的網址時:www.lab.glasscom.com/sample1.htm… 瀏覽器就會按照必定的規則去分析這個網址的含義, 而後根據其含義生成請求消息。接着,瀏覽器會委託操做系統中的網絡控制軟件將消息數據發送出去。

【協議棧、網卡】 接下來,協議棧(即網絡控制軟件)會將從瀏覽器接收到的消息打包,而後加上目的地址等控制信息以後,將包交給網卡(負責以太網或無線網絡通訊的硬件)。而後,網卡會將包轉換爲電信號並經過網線發送出去。

【集線器、交換機、路由器】 網卡發送的包會通過交換機等設備,到達用來接入互聯網的路由器。路由器的後面就是互聯網,網絡運營商會負責將包送到目的地。

【接入網、網絡運營商】 互聯網的入口線路成爲接入網,接入網鏈接到簽約的網絡運營商,並接入被成爲接入點的設備。接入點的實體是一臺專爲運營商設計的路由器,接入點的後面就是互聯網的骨幹部分,存在不少運營商和大量的路由器,這些路由器相互鏈接,組成一張巨大的網, 而咱們的網絡包就在其中通過若干路由器的接力, 最終被髮送到目標 Web 服務器上。

【防火牆、緩存服務器】 經過骨幹網以後,網絡包最終到達了 Web 服務器所在的局域網中。接着,它會遇到防火牆,防火牆會對進入的包進行檢查。檢查完以後,網絡包接下來可能還會遇到緩存服務器。網頁數據中有一部分是能夠重複利用的,這些能夠重複利用的數據就被保存在緩存服務器中。

【♠ Web服務器】 當網絡包到達 Web 服務器後, 數據會被解包並還原爲原始的請求消息,而後交給 Web 服務器程序。和客戶端同樣,這個操做也是由操做系統中的協議棧(網絡控制軟件)來完成的。接下來,Web 服務器程序分析請求消息的含義,並按照其中的指示將數據裝入響應消息中,而後發回給客戶端。

主要關鍵詞

讓咱們用幾張圖來表明吧!

TCP、IP軟件採用分層架構.png

(1)生成HTTP請求

瀏覽器如何解析網址:

Web瀏覽器解析URL的過程.png

請求消息實際的樣子:

HTTP消息的格式.png

(2)向 DNS 服務器查詢 Web 服務器的 IP 地址

瀏覽器如何向 DNS 服務器查詢域名對應的 IP 地址:

找到目標DNS服務器.png

DNS服務器的基本工做.png

DNS 服務器進行接力的方法:

DNS服務器之間的查詢操做.png

(3)委託協議棧發送消息

委託是如何完成的:

調用解析器時計算機內部的工做流程.png

數據經過相似管道的結構來流動.png

客戶端和服務器之間收發數據操做的情形.png

心動的話,一塊兒來學習鴨ᕦ(・ㅂ・)ᕤ,感受得看上好幾遍才能印象深入呢~

ps:看完這本書,也能理解不少Web性能優化方面的知識呢,好比減小HTTP請求、使用CDN、減小DNS查詢、避免重定向等等。

其它回答

相關文章
相關標籤/搜索