面試官:如何理解TCP/IP協(xié)議?
本文轉(zhuǎn)載自微信公眾號(hào)「JS每日一題」,作者灰灰。轉(zhuǎn)載本文請(qǐng)聯(lián)系JS每日一題公眾號(hào)。
一、是什么
TCP/IP,「?jìng)鬏斂刂茀f(xié)議」/「網(wǎng)際協(xié)議」,是指能夠在多個(gè)不同網(wǎng)絡(luò)間實(shí)現(xiàn)信息傳輸?shù)膮f(xié)議簇
- TCP(傳輸控制協(xié)議)
一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議
- IP(網(wǎng)際協(xié)議)
用于封包交換數(shù)據(jù)網(wǎng)絡(luò)的協(xié)議
TCP/IP協(xié)議不僅僅指的是TCP和IP兩個(gè)協(xié)議,而是指一個(gè)由FTP、SMTP、TCP、UDP、IP等協(xié)議構(gòu)成的協(xié)議簇,
只是因?yàn)樵赥CP/IP協(xié)議中TCP協(xié)議和IP協(xié)議最具代表性,所以通稱為T(mén)CP/IP協(xié)議族(英語(yǔ):TCP/IP Protocol Suite,或TCP/IP Protocols)
二、劃分
TCP/IP協(xié)議族按層次分別了五層體系或者四層體系
五層體系的協(xié)議結(jié)構(gòu)是綜合了 OSI 和 TCP/IP 優(yōu)點(diǎn)的一種協(xié)議,包括應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層和物理層
五層協(xié)議的體系結(jié)構(gòu)只是為介紹網(wǎng)絡(luò)原理而設(shè)計(jì)的,實(shí)際應(yīng)用還是 TCP/IP 四層體系結(jié)構(gòu),包括應(yīng)用層、傳輸層、網(wǎng)絡(luò)層(網(wǎng)際互聯(lián)層)、網(wǎng)絡(luò)接口層
如下圖所示:
五層體系
應(yīng)用層
TCP/IP 模型將 OSI參考模型中的會(huì)話層、表示層和應(yīng)用層的功能合并到一個(gè)應(yīng)用層實(shí)現(xiàn),通過(guò)不同的應(yīng)用層協(xié)議為不同的應(yīng)用提供服務(wù)
如:FTP、Telnet、DNS、SMTP 等
傳輸層
該層對(duì)應(yīng)于 OSI 參考模型的傳輸層,為上層實(shí)體提供源端到對(duì)端主機(jī)的通信功能
傳輸層定義了兩個(gè)主要協(xié)議:傳輸控制協(xié)議(TCP)和用戶數(shù)據(jù)報(bào)協(xié)議(UDP)
其中面向連接的 TCP 協(xié)議保證了數(shù)據(jù)的傳輸可靠性,面向無(wú)連接的 UDP 協(xié)議能夠?qū)崿F(xiàn)數(shù)據(jù)包簡(jiǎn)單、快速地傳輸
網(wǎng)絡(luò)層
負(fù)責(zé)為分組網(wǎng)絡(luò)中的不同主機(jī)提供通信服務(wù),并通過(guò)選擇合適的路由將數(shù)據(jù)傳遞到目標(biāo)主機(jī)
在發(fā)送數(shù)據(jù)時(shí),網(wǎng)絡(luò)層把運(yùn)輸層產(chǎn)生的報(bào)文段或用戶數(shù)據(jù)封裝成分組或包進(jìn)行傳送
數(shù)據(jù)鏈路層
數(shù)據(jù)鏈路層在兩個(gè)相鄰節(jié)點(diǎn)傳輸數(shù)據(jù)時(shí),將網(wǎng)絡(luò)層交下來(lái)的IP數(shù)據(jù)報(bào)組裝成幀,在兩個(gè)相鄰節(jié)點(diǎn)之間的鏈路上傳送幀
物理層
保數(shù)據(jù)可以在各種物理媒介上進(jìn)行傳輸,為數(shù)據(jù)的傳輸提供可靠的環(huán)境
四層體系
TCP/IP 的四層結(jié)構(gòu)則如下表所示:
層次名稱 | 單位 | 功 能 | 協(xié) 議 |
---|---|---|---|
網(wǎng)絡(luò)接口層 | 幀 | 負(fù)責(zé)實(shí)際數(shù)據(jù)的傳輸,對(duì)應(yīng)OSI參考模型的下兩層 | HDLC(高級(jí)鏈路控制協(xié)議)PPP(點(diǎn)對(duì)點(diǎn)協(xié)議) SLIP(串行線路接口協(xié)議) |
網(wǎng)絡(luò)層 | 數(shù)據(jù)報(bào) | 負(fù)責(zé)網(wǎng)絡(luò)間的尋址數(shù)據(jù)傳輸,對(duì)應(yīng)OSI參考模型的第三層 | IP(網(wǎng)際協(xié)議) ICMP(網(wǎng)際控制消息協(xié)議)ARP(地址解析協(xié)議) RARP(反向地址解析協(xié)議) |
傳輸層 | 報(bào)文段 | 負(fù)責(zé)提供可靠的傳輸服務(wù),對(duì)應(yīng)OSI參考模型的第四層 | TCP(控制傳輸協(xié)議) UDP(用戶數(shù)據(jù)報(bào)協(xié)議) |
應(yīng)用層 | 負(fù)責(zé)實(shí)現(xiàn)一切與應(yīng)用程序相關(guān)的功能,對(duì)應(yīng)OSI參考模型的上三層 | FTP(文件傳輸協(xié)議) HTTP(超文本傳輸協(xié)議) DNS(域名服務(wù)器協(xié)議)SMTP(簡(jiǎn)單郵件傳輸協(xié)議)NFS(網(wǎng)絡(luò)文件系統(tǒng)協(xié)議) |
三、總結(jié)
OSI 參考模型與 TCP/IP 參考模型區(qū)別如下:
相同點(diǎn):
- OSI 參考模型與 TCP/IP 參考模型都采用了層次結(jié)構(gòu)
- 都能夠提供面向連接和無(wú)連接兩種通信服務(wù)機(jī)制
不同點(diǎn):
- OSI 采用的七層模型;TCP/IP 是四層或五層結(jié)構(gòu)
- TCP/IP 參考模型沒(méi)有對(duì)網(wǎng)絡(luò)接口層進(jìn)行細(xì)分,只是一些概念性的描述;OSI 參考模型對(duì)服務(wù)和協(xié)議做了明確的區(qū)分
- OSI 參考模型雖然網(wǎng)絡(luò)劃分為七層,但實(shí)現(xiàn)起來(lái)較困難。TCP/IP 參考模型作為一種簡(jiǎn)化的分層結(jié)構(gòu)是可以的
- TCP/IP協(xié)議去掉表示層和會(huì)話層的原因在于會(huì)話層、表示層、應(yīng)用層都是在應(yīng)用程序內(nèi)部實(shí)現(xiàn)的,最終產(chǎn)出的是一個(gè)應(yīng)用數(shù)據(jù)包,而應(yīng)用程序之間是幾乎無(wú)法實(shí)現(xiàn)代碼的抽象共享的,這也就造成 OSI 設(shè)想中的應(yīng)用程序維度的分層是無(wú)法實(shí)現(xiàn)的
三種模型對(duì)應(yīng)關(guān)系如下圖所示:
參考文獻(xiàn)
https://zh.wikipedia.org/wiki/TCP/IP%E5%8D%8F%E8%AE%AE%E6%97%8F
https://zhuanlan.zhihu.com/p/103162095
https://segmentfault.com/a/1190000039204681
https://leetcode-cn.com/leetbook/detail/networks-interview-highlights/
https://vue3js.cn/interview