加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

22張圖詳解瀏覽器請求數(shù)據(jù)包如何到達(dá)web服務(wù)器(搞懂網(wǎng)絡(luò)可以出師了)

07/30 16:53
1642
閱讀需 11 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

瀏覽器的請求數(shù)據(jù)包如何到達(dá)web服務(wù)器?

很多讀者對于其中的完整流程不是特別的了解,下面一口君通過這22張圖,詳細(xì)的講解我們點(diǎn)擊瀏覽器的網(wǎng)址之后,數(shù)據(jù)包是如何經(jīng)過重重險阻到達(dá)web server的。

1. LAN網(wǎng)絡(luò)中的用戶要訪問位于遠(yuǎn)程網(wǎng)絡(luò)中的服務(wù)器存儲的網(wǎng)頁。用戶首先激活網(wǎng)頁上的鏈接。

如果該域名對應(yīng)的IP地址本地已經(jīng)緩存,就直接訪問該地址的80端口或者8080端口;如果沒有緩存,那么瀏覽器會發(fā)出DNS請求給DNS服務(wù)器,獲得該域名對應(yīng)的IP地址。

獲得地址后,瀏覽器會通過socket首先向服務(wù)器發(fā)送三次握手,建立起TCP連接。

2. 瀏覽器發(fā)出HTTP Get請求。應(yīng)用層添加第7層報頭,用于標(biāo)識應(yīng)用程序和數(shù)據(jù)類型。

數(shù)據(jù)區(qū)需要按照HTTP協(xié)議填充對應(yīng)數(shù)據(jù),格式參考RFC2616。

3. 傳輸層標(biāo)識上層服務(wù)是萬維網(wǎng)(WWW)客戶端。然后,傳輸層將此服務(wù)與TCP協(xié)議相關(guān)聯(lián)并分配端口號。它使用隨機(jī)選擇的與此所建回話相關(guān)聯(lián)的源端口(12345),目的端口(80)與www服務(wù)相關(guān)聯(lián)。

進(jìn)行網(wǎng)絡(luò)通信的進(jìn)程必須綁定一個端口號,該端口號用于區(qū)分網(wǎng)絡(luò)通信的進(jìn)程。一個端口號只能被1個進(jìn)程綁定。

通常web服務(wù)器的端口號為80,8080。

4. TCP還發(fā)送確認(rèn)號,告知www服務(wù)器期待接收的下一TCP數(shù)據(jù)短的序列號,序列號將指示此數(shù)據(jù)段在一系列相關(guān)數(shù)據(jù)段中所處的位置。此外還會根據(jù)建立會話的需要適當(dāng)設(shè)置標(biāo)志。

該序列號非常有用,TCP要保證數(shù)據(jù)正確到達(dá)對方,并且對方要能夠讓數(shù)據(jù)有序重組,重組的依據(jù)就是這個序列號。

5. 網(wǎng)絡(luò)層構(gòu)建IP數(shù)據(jù)包,以便標(biāo)識源主機(jī)和目的主機(jī)。就目的地址而言,客戶端主機(jī)使用主機(jī)表中緩存的www服務(wù)器主機(jī)名關(guān)聯(lián)的IP地址。而原地址則使用本機(jī)的IPv4地址。網(wǎng)絡(luò)層還標(biāo)識出此數(shù)據(jù)包中封裝的上層協(xié)議為TCP數(shù)據(jù)段。

6.數(shù)據(jù)鏈路層參照地址解析協(xié)議(ARP)緩存來確定與路由器B接口關(guān)聯(lián)的MAC地址,該接口被制定為默認(rèn)網(wǎng)關(guān)。然后,它使用此地址構(gòu)建以太網(wǎng)II幀,通過本地介質(zhì)傳輸IPv4數(shù)據(jù)包。該幀中使用筆記本電腦的MAC地址作為源MAC地址,使用路由器B的Fa0/0接口的MAC地址作為目的MAC地址。

7. 該幀的類型字段中還使用值0800指示IPv4上層協(xié)議。該幀以前導(dǎo)碼和幀首(SOF)指示符開始,以幀尾幀校驗(yàn)序列中用于產(chǎn)錯校驗(yàn)的循環(huán)冗余校驗(yàn)(CRC)結(jié)束。然后,它使用CSMA/CD來控制將幀放置到介質(zhì)上的過程。

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

10BASE-T是雙絞線以太網(wǎng)。

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

10. 網(wǎng)絡(luò)層將數(shù)據(jù)包的目的IPv4地址與路由表中的路由進(jìn)行比對。找到與下一跳出接口S0/0/0相關(guān)聯(lián)的符合項(xiàng)。然后將路由器B中的數(shù)據(jù)包傳送到S0/0/0接口的電路。

路由器值會查看數(shù)據(jù)包的IP層信息,并根據(jù)目的IP地址來查找路由表,路由器是搭建網(wǎng)路最重要的一個設(shè)備,用來連接不同的網(wǎng)絡(luò)。

網(wǎng)絡(luò)搭建好之后,每個路由器中都要提前建立好到各個網(wǎng)段的路由。通常路由條目由動態(tài)路由協(xié)議RIP、OSPF來動態(tài)創(chuàng)建。

11.路由器B創(chuàng)建PPP幀,通過WAN傳輸數(shù)據(jù)包。PPP報頭中添加了01111110二進(jìn)制標(biāo)志,表示幀的開始位置。然后添加地址字段1111111,表示廣播(意思是“發(fā)送到所有站點(diǎn)”)。由于PPP是點(diǎn)對點(diǎn)協(xié)議,用作兩個節(jié)點(diǎn)之間的直接鏈路,所以此字段沒有實(shí)際意義。

路由器的所有接口地址都不能處于同一網(wǎng)段,一般一個出接口連接一個獨(dú)立的網(wǎng)段。

路由器和路由器之間兩個網(wǎng)口傳輸數(shù)據(jù)一般用PPP協(xié)議。

12. 此外還包括值為0021(十六進(jìn)制)的協(xié)議字段,表示封裝的是IPv4數(shù)據(jù)包。幀尾以幀校驗(yàn)序列中用于差錯校驗(yàn)的循環(huán)冗余校驗(yàn)結(jié)束。值為01111110的二進(jìn)制標(biāo)志表示PPP幀的結(jié)束位置。

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

14.路由器A檢查標(biāo)志中的比特,確定幀的開始位置。然后,路由器A開始緩存這些比特,作為重建幀的一部分。按照幀尾中的標(biāo)志所示收到整個幀之后,路由器A生成幀的CRC。然后將此與幀結(jié)束位置的FCS進(jìn)行比對,確定接收的幀完整無缺。當(dāng)確認(rèn)該幀未損壞時,則刪除幀頭并將數(shù)據(jù)包向上傳送到路由器A的網(wǎng)絡(luò)層。

15. 網(wǎng)絡(luò)層將數(shù)據(jù)包的目的IPv4地址與路由表中的路由進(jìn)行比對。找到直接連接到接口Fa0/0的匹配項(xiàng)。然后,將路由器A中的數(shù)據(jù)包傳送到Fa0/0接口的電路。

16.數(shù)據(jù)鏈路層參照路由器A的ARP緩存來確定Web服務(wù)器接口關(guān)聯(lián)的MAC地址。然后,它使用此MAC地址構(gòu)建以太網(wǎng)Ⅱ幀,通過本地介質(zhì)將IPv4數(shù)據(jù)包傳輸?shù)椒?wù)器。該幀中使用路由器A的fa0/0接口的MAC地址作為源MAC地址,使用服務(wù)器的MAC地址作為目的MAC地址。該幀的類型字段中還使用值0800指示IPv4上層協(xié)議。該幀以前導(dǎo)碼和幀首(SOF)指示符開始,以幀尾幀校驗(yàn)序列中用于差錯校驗(yàn)的循環(huán)貳余校驗(yàn)結(jié)束。然后,它使用CSMA/CD來控制將幀放置到介質(zhì)上的過程。

CSMA/CD即載波偵聽多路訪問/沖突檢測,是廣播型信道中采用一種隨機(jī)訪問技術(shù)的競爭型訪問方法,具有多目標(biāo)地址的特點(diǎn)。

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

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

19. 當(dāng)確認(rèn)該幀未損壞時,再比對幀中的目的MAC地址與服務(wù)器網(wǎng)卡的MAC地址。如果二者相符,則刪除幀頭并將數(shù)據(jù)包向上傳送到網(wǎng)絡(luò)層。

20. 網(wǎng)絡(luò)層檢查數(shù)據(jù)包的目的IPv4地址,確定目的主機(jī)。由于此地址與其自身的IPv4地址相符,因此服務(wù)器處理該數(shù)據(jù)包。網(wǎng)絡(luò)層標(biāo)識出上層協(xié)議是TCP,并將包含的數(shù)據(jù)段傳送到傳輸層的TCP服務(wù)。

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

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

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

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

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
XRCGB25M000F3A00R0 1 Murata Manufacturing Co Ltd Parallel - Fundamental Quartz Crystal, 25MHz Nom, ROHS AND REACH COMPLIANT, SMALL, SMD, 3 PIN

ECAD模型

下載ECAD模型
$0.34 查看
M25P05-AVMN6P 1 Rochester Electronics LLC 64KX8 FLASH 2.7V PROM, PDSO8, 0.150 INCH, ROHS COMPLIANT, PLASTIC, SOP-8
$0.79 查看
S29GL256P10FFI020 1 AMD Flash, 16MX16, 100ns, PBGA64,
$9.29 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

公眾號『一口Linux』號主彭老師,擁有15年嵌入式開發(fā)經(jīng)驗(yàn)和培訓(xùn)經(jīng)驗(yàn)。曾任職ZTE,某研究所,華清遠(yuǎn)見教學(xué)總監(jiān)。擁有多篇網(wǎng)絡(luò)協(xié)議相關(guān)專利和軟件著作。精通計算機(jī)網(wǎng)絡(luò)、Linux系統(tǒng)編程、ARM、Linux驅(qū)動、龍芯、物聯(lián)網(wǎng)。原創(chuàng)內(nèi)容基本從實(shí)際項(xiàng)目出發(fā),保持原理+實(shí)踐風(fēng)格,適合Linux驅(qū)動新手入門和技術(shù)進(jìn)階。