一次完整的網(wǎng)絡(luò)請求都經(jīng)歷了什么

首先上一張網(wǎng)絡(luò)分層圖


網(wǎng)絡(luò)分層

本文以五層網(wǎng)絡(luò)協(xié)議來講解一下每層的用處,其他分層結(jié)構(gòu)只是做了細(xì)分或者合并,此處不再細(xì)說。

1. 物理層

主要是一些物理連接,包括網(wǎng)線、光纜等等,傳輸?shù)氖请娦盘?,1

2.數(shù)據(jù)鏈路層

定義了信號的分組方式,一組電信號構(gòu)成一個數(shù)據(jù)包,一個數(shù)據(jù)包稱為一幀,一幀包含標(biāo)頭和數(shù)據(jù)兩部分
標(biāo)頭包含一些傳輸信息,如發(fā)送方和接收方信息。
以太網(wǎng)協(xié)議就處于數(shù)據(jù)鏈路層,同一子網(wǎng)絡(luò)的所有設(shè)備是靠以太網(wǎng)協(xié)議進(jìn)行數(shù)據(jù)傳輸?shù)?,以太網(wǎng)協(xié)議規(guī)定傳輸信息必須包含雙方設(shè)備的mac地址,此mac地址在數(shù)據(jù)標(biāo)頭中,傳輸時以廣播形式通知本子網(wǎng)絡(luò)內(nèi)所有設(shè)備,所有接收設(shè)備拿到數(shù)據(jù)標(biāo)頭里的接收方mac地址與自身mac地址匹配,相同則處理,不同則丟棄。

3.網(wǎng)絡(luò)層

由于以太網(wǎng)協(xié)議的局限性,廣播方式是無法作用于不同子網(wǎng)絡(luò)間的信息傳輸?shù)?。此時網(wǎng)絡(luò)層就出現(xiàn)了,網(wǎng)絡(luò)層定義了不同子網(wǎng)絡(luò)的網(wǎng)絡(luò)地址,也就是所熟知的IP地址,區(qū)分兩個地址是否是處于同一個子網(wǎng)絡(luò),單純看IP地址是無法區(qū)分,還要結(jié)合子網(wǎng)掩碼做相應(yīng)運(yùn)算之后得出。

4.傳輸層

有了IP地址和mac地址,已經(jīng)可以實(shí)現(xiàn)不同網(wǎng)絡(luò)下設(shè)備間的通信,但是同一設(shè)備下可能存在多個程序,此時就需要有一個參數(shù)來區(qū)分不同程序。傳輸層就定義了這樣一個參數(shù),端口。

"傳輸層"的功能,就是建立"端口到端口"的通信。相比之下,"網(wǎng)絡(luò)層"的功能是建立"主機(jī)到主機(jī)"的通信。只要確定主機(jī)和端口,我們就能實(shí)現(xiàn)程序之間的交流。因此,Unix系統(tǒng)就把主機(jī)+端口,叫做"套接字"(socket)。有了它,就可以進(jìn)行網(wǎng)絡(luò)應(yīng)用程序開發(fā)了。

5.應(yīng)用層

應(yīng)用層用于規(guī)定數(shù)據(jù)傳輸格式的,常用的HTTP、FTP、SMTP等都是應(yīng)用層協(xié)議

案例分析

在瀏覽器搜索框輸入https://www.baidu.com

  1. 首先需要DNS服務(wù)器根據(jù)域名解析出對應(yīng)IP地址,因?yàn)閿?shù)據(jù)傳輸是需要知道雙方IP、mac地址、端口號等信息的。所以按下回車鍵的那一刻,會先向DNS服務(wù)器發(fā)送一個數(shù)據(jù)包(DNS服務(wù)器的地址在電腦的網(wǎng)絡(luò)設(shè)置里面已經(jīng)配好了),此后收到DNS服務(wù)器解析好的IP地址數(shù)據(jù)。

2.有了IP地址,在結(jié)合子網(wǎng)掩碼(也在電腦的網(wǎng)絡(luò)設(shè)置里配置好了),判斷此IP地址是否與當(dāng)前網(wǎng)絡(luò)處于同一網(wǎng)絡(luò)下

  • 處于同一網(wǎng)絡(luò)下,則通過ARP協(xié)議,根據(jù)IP地址獲取到接收方的mac地址,然后依靠以太網(wǎng)協(xié)議,通過廣播方式進(jìn)行數(shù)據(jù)傳輸
  • 不處于同一網(wǎng)絡(luò)下,則需要通過網(wǎng)關(guān)進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)(網(wǎng)關(guān)地址也在電腦的網(wǎng)絡(luò)設(shè)置里配置好了)
  • 經(jīng)過多個網(wǎng)關(guān)的轉(zhuǎn)發(fā),百度服務(wù)器收到了以太網(wǎng)數(shù)據(jù)包。根據(jù)IP標(biāo)頭的序號,百度服務(wù)器將數(shù)據(jù)包拼起來,取出完整的TCP數(shù)據(jù)包,然后讀出里面的"HTTP請求",接著做出"HTTP響應(yīng)",再用TCP協(xié)議發(fā)回來。
  • 本機(jī)收到HTTP響應(yīng)以后,就可以將網(wǎng)頁顯示出來,完成一次網(wǎng)絡(luò)通信。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容