首先上一張網(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
- 首先需要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ò)通信。