首先 TCP/UDP 和 HTTP/FTP/SMTP 不屬于同一層。 TCP/UDP 屬于 OSI 模型的第四層傳輸層,HTTP/FTP/SMTP 才是屬于應(yīng)用層。
我就用代碼組織結(jié)構(gòu)來解釋吧。通常我們會(huì)把可以被復(fù)用的代碼封裝成一個(gè)模塊,這個(gè)模塊提供的功能通常是業(yè)務(wù)無關(guān)的,只是用來實(shí)現(xiàn)一些基礎(chǔ)功能的,比如寫文件、讀文件,這個(gè)模塊不會(huì)關(guān)心讀寫的是 MP3 文件還是 TXT 文件。
不同的業(yè)務(wù)模塊甚至功能完全不同的兩個(gè)軟件(比如一個(gè)音樂播放器和一個(gè)文本閱讀器)就可以使用這個(gè)模塊的『文件讀寫功能』,因?yàn)橐魳奋浖枰蜷_ MP3 文件,而文本閱讀器需要打開 TXT 文件,這兩個(gè)軟件使用了同一個(gè)『文件讀寫模塊』實(shí)現(xiàn)了基礎(chǔ)的文件讀取功能,進(jìn)而實(shí)現(xiàn)它們各自特有的功能:播放音樂和顯示文本。
TCP 就相當(dāng)于例子中『文件讀寫模塊』,HTTP 就相當(dāng)于音樂播放器/文本閱讀器。
也可以這樣理解整個(gè) OSI 模型,越往下層走,數(shù)據(jù)的封裝越原始、功能越單一,而這些下層的東西是實(shí)現(xiàn)大多數(shù)需要數(shù)據(jù)傳輸?shù)膽?yīng)用必不可少的基礎(chǔ)。
像其中一個(gè)答案里說的,你甚至可以基于 OSI 第二層數(shù)據(jù)鏈路層實(shí)現(xiàn) HTTP 協(xié)議,這樣你首先得自己實(shí)現(xiàn)所有 IP 和 TCP 已經(jīng)實(shí)現(xiàn)的功能(數(shù)據(jù)切分、數(shù)據(jù)包re-ordering,數(shù)據(jù)包重傳等等),才能夠真正實(shí)現(xiàn)一個(gè)可用可靠的 HTTP。
網(wǎng)絡(luò)協(xié)議是通信計(jì)算機(jī)雙方必須共同遵從的一組約定。如怎么樣建立連接、怎么樣互相識(shí)別等。只有遵守這個(gè)約定,計(jì)算機(jī)之間才能相互通信交流。它的三要素是:語法、語義、時(shí)序。不同的協(xié)議請(qǐng)見對(duì)應(yīng)的RFC。
TCP和UDP屬于TCP/IP協(xié)議族的傳輸層協(xié)議,可以比喻為火車和高鐵,一個(gè)可靠,一個(gè)不可靠。HTTP, FTP,SMTP屬于應(yīng)用層的封裝協(xié)議,這些協(xié)議在傳輸協(xié)議有對(duì)應(yīng)的端口,比如HTTP對(duì)應(yīng)TCP的80端口,F(xiàn)TP對(duì)應(yīng)TCP的21和22端口,SMTP對(duì)應(yīng)TCP的25端口。
應(yīng)用層協(xié)議規(guī)定了不同應(yīng)用的數(shù)據(jù)的封裝格式,可以理解為貨物的包裝以及標(biāo)簽等信息,當(dāng)用操作應(yīng)用產(chǎn)生數(shù)據(jù)時(shí),用戶終端內(nèi)部會(huì)根據(jù)應(yīng)用的不同選擇對(duì)應(yīng)的應(yīng)用層協(xié)議對(duì)數(shù)據(jù)進(jìn)行封裝,然后經(jīng)由對(duì)應(yīng)的傳輸層協(xié)議進(jìn)行端到端的傳輸,到達(dá)對(duì)端,再根據(jù)不同的應(yīng)用解封裝,交個(gè)對(duì)端的應(yīng)用。當(dāng)然應(yīng)用層的數(shù)據(jù)在傳輸期間還要經(jīng)過網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層的處理,這里就不多說了。
更多相關(guān)內(nèi)容可點(diǎn)擊瘋貓網(wǎng)絡(luò)官網(wǎng):https://www.loscat.com/
聯(lián)系客服