More  

收藏本站

電腦請使用 Ctrl + D 加入最愛
手機請使用 收藏
關閉

小編的世界 優質文選 主機

22張圖詳解瀏覽器請求數據包如何到達web服務器


字體大小:
2020年9月03日 -
:     
 

《酷扯兒》官方帳號

2. 瀏覽器發出HTTP Get請求。應用層添加第7層報頭,用於標識應用程序和數據類型。

數據區需要按照HTTP協議填充對應數據,格式參考RFC2616。

3. 傳輸層標識上層服務是萬維網(WWW)客戶端。然後,傳輸層將此服務與TCP協議相關聯並分配端口號。它使用隨機選擇的與此所建回話相關聯的源端口(12345),目的端口(80)與www服務相關聯。

進行網絡通信的進程必須綁定一個端口號,該端口號用於區分網絡通信的進程。一個端口號只能被1個進程綁定。

通常web服務器的端口號為80,8080。

4. TCP還發送確認號,告知www服務器期待接收的下一TCP數據短的序列號,序列號將指示此數據段在一系列相關數據段中所處的位置。此外還會根據建立會話的需要適當設置標志。

該序列號非常有用,TCP要保證數據正確到達對方,並且對方要能夠讓數據有序重組,重組的依據就是這個序列號。

5. 網絡層構建IP數據包,以便標識源主機和目的主機。就目的地址而言,客戶端主機使用主機表中緩存的www服務器主機名關聯的IP地址。而原地址則使用本機的IPv4地址。網絡層還標識出此數據包中封裝的上層協議為TCP數據段。

6.數據鏈路層參照地址解析協議(ARP)緩存來確定與路由器B接口關聯的MAC地址,該接口被制定為默認網關。然後,它使用此地址構建以太網II幀,通過本地介質傳輸IPv4數據包。該幀中使用筆記本電腦的MAC地址作為源MAC地址,使用路由器B的Fa0/0接口的MAC地址作為目的MAC地址。

7. 該幀的類型字段中還使用值0800指示IPv4上層協議。該幀以前導碼和幀首(SOF)指示符開始,以幀尾幀校驗序列中用於產錯校驗的循環冗餘校驗(CRC)結束。然後,它使用CSMA/CD來控制將幀放置到介質上的過程。

8. 物理層開始將幀逐位編碼到介質中。路由器A和服務器之間的網段是10Base-T網段;因此,對此比特編碼時使用的是曼徹斯特差分編碼。路由器B會緩沖收到的比特。

10BASE-T是雙絞線以太網。

9. 路由器檢查前導碼和SOF中的比特位,查找表示幀開始位置的連續兩個1的比特位。然後,路由器B開始緩存這些比特,作為重建幀的一部分。收到整個幀之後,路由器B生成幀的CRC。然後將此與幀結束位置的FCS進行對比,確定接收的幀完整無缺。當確認該幀未損壞時,再比對幀中的目的MAC地址和接口(Fa0/0)的MAC地址。如果二者相符,則刪除幀頭並將數據包向上傳送到網絡層。

10. 網絡層將數據包的目的IPv4地址與路由表中的路由進行比對。找到與下一跳出接口S0/0/0相關聯的符合項。然後將路由器B中的數據包傳送到S0/0/0接口的電路。

路由器值會查看數據包的IP層信息,並根據目的IP地址來查找路由表,路由器是搭建網路最重要的一個設備,用來連接不同的網絡。

網絡搭建好之後,每個路由器中都要提前建立好到各個網段的路由。通常路由條目由動態路由協議RIP、OSPF來動態創建。

11.路由器B創建PPP幀,通過WAN傳輸數據包。PPP報頭中添加了01111110二進制標志,表示幀的開始位置。然後添加地址字段1111111,表示廣播(意思是“發送到所有站點”)。由於PPP是點對點協議,用作兩個節點之間的直接鏈路,所以此字段沒有實際意義。

路由器的所有接口地址都不能處於同一網段,一般一個出接口連接一個獨立的網段。

路由器和路由器之間兩個網口傳輸數據一般用PPP協議。

12. 此外還包括值為0021(十六進制)的協議字段,表示封裝的是IPv4數據包。幀尾以幀校驗序列中用於差錯校驗的循環冗餘校驗結束。值為01111110的二進制標志表示PPP幀的結束位置。

13. 由於兩台路由器之間已經建立了電路和PPP會話,因此物理層開始將幀逐位編碼到介質中。接收路由器(路由器A)會緩沖收到的比特。比特的表示類型和編碼類型取決於使用的WAN技術的類型。

14. 路由器A檢查標志中的比特,確定幀的開始位置。然後,路由器A開始緩存這些比特,作為重建幀的一部分。按照幀尾中的標志所示收到整個幀之後,路由器A生成幀的CRC。然後將此與幀結束位置的FCS進行比對,確定接收的幀完整無缺。當確認該幀未損壞時,則刪除幀頭並將數據包向上傳送到路由器A的網絡層。

15. 網絡層將數據包的目的IPv4地址與路由表中的路由進行比對。找到直接連接到接口Fa0/0的匹配項。然後,將路由器A中的數據包傳送到Fa0/0接口的電路。

16. 數據鏈路層參照路由器A的ARP緩存來確定Web服務器接口關聯的MAC地址。然後,它使用此MAC地址構建以太網Ⅱ幀,通過本地介質將IPv4數據包傳輸到服務器。該幀中使用路由器A的fa0/0接口的MAC地址作為源MAC地址,使用服務器的MAC地址作為目的MAC地址。該幀的類型字段中還使用值0800指示IPv4上層協議。該幀以前導碼和幀首(SOF)指示符開始,以幀尾幀校驗序列中用於差錯校驗的循環貳餘校驗結束。然後,它使用CSMA/CD來控制將幀放置到介質上的過程。

CSMA/CD即載波偵聽多路訪問/沖突檢測,是廣播型信道中采用一種隨機訪問技術的競爭型訪問方法,具有多目標地址的特點。

17. 物理層開始將幀逐位編碼到介質中。路由器A和服務器之間的網段是100Base-T網段;因此,對比特編碼時使用的是4B/5B編碼。服務器會緩沖收到的比特。

18. Web服務器檢前導碼和SOF中的比特位,查找表示幀開始位置的連續兩個1的比特位。然後,服務器開始緩存這些比特,作為重建幀的一部分。收到整個幀之後,服務器生成幀的CRC。然後將此與幀結束位置的FCS進行比對,確定接收的幀完整無缺。

19. 當確認該幀未損壞時,再比對幀中的目的MAC地址與服務器網卡的MAC地址。如果二者相符,則刪除幀頭並將數據包向上傳送到網絡層。

20. 網絡層檢查數據包的目的IPv4地址,確定目的主機。由於此地址與其自身的IPv4地址相符,因此服務器處理該數據包。網絡層標識出上層協議是TCP,並將包含的數據段傳送到傳輸層的TCP服務。

21. 服務器的傳輸層檢查TCP數據段,確定數據段中包含的數據所屬的會話。此操作通過檢查源端口和目的端口來完成。唯一的源端口和目的端口標識與Web服務器服務的現有會話。使用序列號按照正確的順序放置此數據段,向上發送到應用層。

前面說過一個端口只能被一個進程綁定,所以該數據只會傳送給web服務器進程,而不會被其他進程截獲。

22. 在應用層,HTTP Get請求傳送到Web服務器服務(httpd)。然後,該服務可以確定對請求做出的響應。

實際的網絡環境中,服務器直接連接的路由器A和本地路由器B之間可能連接了非常多的網絡設備,比如衛星、網橋、光纖等,這些設備的組網會更加複雜,涉及到的網絡協議也更多。所有這些基礎網絡設施都由運營商建設,造價特別的昂貴,如果沒有中興、華為大力發展網絡設備,我們基本不可能用如此低的價格來上網沖浪,也不會誕生美團、支付寶、微信、抖音這些互聯網公司。相信隨著5G的普及,未來會有更多的中國本土的新興互聯網公司。

本例雖然組網基礎相對簡單,但是萬變不離其宗,基本原理一致。網絡博大精深,在實際開發產品中應用非常廣泛,後面一口君還會陸續發布關於網絡的文章,敬請關注下方微信號。