當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 程序喵大人
[導(dǎo)讀]???? 瀏覽器的請(qǐng)求數(shù)據(jù)包如何到達(dá)web服務(wù)器? ???? 很多讀者對(duì)于其中的完整流程不是特別的了解,下面一口君通過(guò)這22張圖,詳細(xì)的講解我們點(diǎn)擊瀏覽器的網(wǎng)址之后,數(shù)據(jù)包是如何經(jīng)過(guò)重重險(xiǎn)阻到達(dá)web server的。 1. LAN網(wǎng)絡(luò)中的用戶要訪問(wèn)位于遠(yuǎn)程網(wǎng)絡(luò)中的服務(wù)器

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

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


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

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

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


2. 瀏覽器發(fā)出HTTP Get請(qǐng)求。應(yīng)用層添加第7層報(bào)頭,用于標(biāo)識(shí)應(yīng)用程序和數(shù)據(jù)類型。數(shù)據(jù)區(qū)需要按照HTTP協(xié)議填充對(duì)應(yīng)數(shù)據(jù),格式參考RFC2616。


3. 傳輸層標(biāo)識(shí)上層服務(wù)是萬(wàn)維網(wǎng)(WWW)客戶端。然后,傳輸層將此服務(wù)與TCP協(xié)議相關(guān)聯(lián)并分配端口號(hào)。它使用隨機(jī)選擇的與此所建回話相關(guān)聯(lián)的源端口12345,目的端口(80)與www服務(wù)相關(guān)聯(lián)。
進(jìn)行網(wǎng)絡(luò)通信的進(jìn)程必須綁定一個(gè)端口號(hào),該端口號(hào)用于區(qū)分網(wǎng)絡(luò)通信的進(jìn)程。一個(gè)端口號(hào)只能被1個(gè)進(jìn)程綁定。通常web服務(wù)器的端口號(hào)為80,8080。


4. TCP還發(fā)送確認(rèn)號(hào),告知www服務(wù)器期待接收的下一TCP數(shù)據(jù)短的序列號(hào),序列號(hào)將指示此數(shù)據(jù)段在一系列相關(guān)數(shù)據(jù)段中所處的位置。此外還會(huì)根據(jù)建立會(huì)話的需要適當(dāng)設(shè)置標(biāo)志。該序列號(hào)非常有用,TCP要保證數(shù)據(jù)正確到達(dá)對(duì)方,并且對(duì)方要能夠讓數(shù)據(jù)有序重組,重組的依據(jù)就是這個(gè)序列號(hào)。


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


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


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


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

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


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


10. 網(wǎng)絡(luò)層將數(shù)據(jù)包的目的IPv4地址與路由表中的路由進(jìn)行比對(duì)。找到與下一跳出接口S0/0/0相關(guān)聯(lián)的符合項(xiàng)。然后將路由器B中的數(shù)據(jù)包傳送到S0/0/0接口的電路。路由器值會(huì)查看數(shù)據(jù)包的IP層信息,并根據(jù)目的IP地址來(lái)查找路由表,路由器是搭建網(wǎng)路最重要的一個(gè)設(shè)備,用來(lái)連接不同的網(wǎng)絡(luò)。


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


11.路由器B創(chuàng)建PPP幀,通過(guò)WAN傳輸數(shù)據(jù)包。PPP報(bào)頭中添加了01111110二進(jìn)制標(biāo)志,表示幀的開(kāi)始位置。然后添加地址字段1111111,表示廣播(意思是“發(fā)送到所有站點(diǎn)”)。由于PPP是點(diǎn)對(duì)點(diǎn)協(xié)議,用作兩個(gè)節(jié)點(diǎn)之間的直接鏈路,所以此字段沒(méi)有實(shí)際意義。路由器的所有接口地址都不能處于同一網(wǎng)段,一般一個(gè)出接口連接一個(gè)獨(dú)立的網(wǎng)段。路由器和路由器之間兩個(gè)網(wǎng)口傳輸數(shù)據(jù)一般用PPP協(xié)議。


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


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


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


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


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

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


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


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


19. 當(dāng)確認(rèn)該幀未損壞時(shí),再比對(duì)幀中的目的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)識(shí)出上層協(xié)議是TCP,并將包含的數(shù)據(jù)段傳送到傳輸層的TCP服務(wù)。


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

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


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


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


本例雖然組網(wǎng)基礎(chǔ)相對(duì)簡(jiǎn)單,但是萬(wàn)變不離其宗,基本原理一致。網(wǎng)絡(luò)博大精深,在實(shí)際開(kāi)發(fā)產(chǎn)品中應(yīng)用非常廣泛,后面一口君還會(huì)陸續(xù)發(fā)布關(guān)于網(wǎng)絡(luò)的文章,敬請(qǐng)關(guān)注下方微信號(hào)。



一口君個(gè)人微信


添加一口君個(gè)人微信即送Linux、嵌入式等獨(dú)家入門視頻


→ 精選技術(shù)資料共享

→ 高手如云交流社群





本公眾號(hào)全部原創(chuàng)干貨已整理成一個(gè)目錄,請(qǐng)?jiān)诠娞?hào)里回復(fù)「 m 」獲??!或者關(guān)注進(jìn)入后臺(tái)點(diǎn)擊左下角干貨」!

推薦閱讀



【1】手把手教Linux驅(qū)動(dòng)1-模塊化編程
【2】手把手教Linux驅(qū)動(dòng)2-模塊參數(shù)param和符號(hào)導(dǎo)出export用法
【3】手把手教Linux驅(qū)動(dòng)3-之字符設(shè)備架構(gòu)詳解,有這篇就夠了

【4】手把手教Linux驅(qū)動(dòng)4-進(jìn)程、文件描述符、file、inode關(guān)系詳解
【5】
玩轉(zhuǎn)內(nèi)核鏈表list_head,如何管理不同類型節(jié)點(diǎn)的實(shí)現(xiàn)(萬(wàn)字文)可以收藏
【6】I2C干貨-基于Cortex-A9(重新整理)
【7】一文搞懂ADC裸機(jī)和基于Linux驅(qū)動(dòng)編寫方法
【8】一文講懂什么是vlan、三層交換機(jī)、網(wǎng)關(guān)、DNS、子網(wǎng)掩碼、MAC地址
【9】詳解實(shí)時(shí)查看網(wǎng)卡流量的幾款工具
【10】如何高效閱讀代碼?Linux大神拍了拍你并教給你這三個(gè)步驟


5T技術(shù)資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,單片機(jī),樹(shù)莓派,等等。在公眾號(hào)內(nèi)回復(fù)「1024」,即可免費(fèi)獲?。?!




先贊,在看 天天變美,月月變瘦 ↓↓↓





免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉