物聯(lián)網(wǎng)數(shù)據(jù)接入篇- 網(wǎng)絡(luò)層和數(shù)據(jù)傳輸層協(xié)議(3)
在前面的文章中,我們分析了TCP/IP模型和網(wǎng)絡(luò)接口層的協(xié)議。這篇文章,我們來(lái)解釋下第二層和第三層的網(wǎng)絡(luò)和數(shù)據(jù)傳輸層的協(xié)議及其功能。
第二層:網(wǎng)絡(luò)層協(xié)議
將數(shù)據(jù)傳輸?shù)侥繕?biāo)地址。目標(biāo)地址可以是多個(gè)網(wǎng)絡(luò)通過(guò)路由器連接而成的某個(gè)地址。因此這一層主要負(fù)責(zé)尋址和路由選擇。
包括 IP、ICMP、IGMP、ARP、RARP 協(xié)議。
1. IP 協(xié)議
網(wǎng)際協(xié)議,Internet Protocol,IP 協(xié)議,又稱(chēng)互聯(lián)網(wǎng)協(xié)議,是互聯(lián)網(wǎng)協(xié)議包中的網(wǎng)絡(luò)層通信協(xié)議,用于跨網(wǎng)絡(luò)邊界分組交換。它的路由功能實(shí)現(xiàn)了互聯(lián)互通,并從本質(zhì)上建立了互聯(lián)網(wǎng)。IP 的作用是在復(fù)雜的網(wǎng)絡(luò)環(huán)境中將數(shù)據(jù)包發(fā)送給最終目的主機(jī)。面向的是 IP 地址。
IP是在TCP/IP協(xié)議族中網(wǎng)絡(luò)層的主要協(xié)議,任務(wù)是僅根據(jù)數(shù)據(jù)包標(biāo)頭中的IP地址將數(shù)據(jù)包從源主機(jī)傳遞到目標(biāo)主機(jī)。為此,IP協(xié)議定義了封裝要傳遞的數(shù)據(jù)的數(shù)據(jù)包結(jié)構(gòu)。它還定義了用于用源和目的地信息標(biāo)記數(shù)據(jù)報(bào)的尋址方法。
第一個(gè)架構(gòu)的主要版本為IPv4,目前仍然是廣泛使用的互聯(lián)網(wǎng)協(xié)議,盡管世界各地正在積極部署IPv6。
組成部分
IP 地址:用于標(biāo)識(shí)網(wǎng)絡(luò)中的節(jié)點(diǎn)。
報(bào)文:包含版本、頭部長(zhǎng)度、服務(wù)類(lèi)型、總長(zhǎng)度、標(biāo)識(shí)、標(biāo)志、片偏移等字段。
工作原理
網(wǎng)際協(xié)議由數(shù)據(jù)封裝、尋址和路由組成。
當(dāng)源主機(jī)要發(fā)送數(shù)據(jù)時(shí),它將數(shù)據(jù)進(jìn)行分組,并在數(shù)據(jù)報(bào)的首部填寫(xiě)源 IP 地址和目的 IP 地址等信息。然后數(shù)據(jù)報(bào)被發(fā)送到網(wǎng)絡(luò)中,路由器根據(jù)目的 IP 地址進(jìn)行路由選擇,將數(shù)據(jù)報(bào)轉(zhuǎn)發(fā)到下一跳,直到最終到達(dá)目的主機(jī)。
特點(diǎn)
不可靠:它只負(fù)責(zé)盡力傳輸數(shù)據(jù)報(bào),但不保證一定到達(dá)或順序正確。
無(wú)連接:發(fā)送方和接收方在傳輸數(shù)據(jù)前不需要建立連接。
盡力而為服務(wù):會(huì)盡力把數(shù)據(jù)報(bào)送到目的地,但可能出現(xiàn)丟失、重復(fù)、延遲等情況。
提供全球統(tǒng)一的編址方式:使得不同網(wǎng)絡(luò)中的設(shè)備能夠相互通信。
應(yīng)用
應(yīng)用在互聯(lián)網(wǎng)通信,是整個(gè)互聯(lián)網(wǎng)運(yùn)行的基礎(chǔ)。
有 IP 地址的物聯(lián)網(wǎng)設(shè)備,可以直連網(wǎng)絡(luò):
一些較為復(fù)雜和功能強(qiáng)大的智能設(shè)備,如智能家電(某些高端智能電視、智能冰箱等)、工業(yè)自動(dòng)化設(shè)備等,它們直接接入網(wǎng)絡(luò)并擁有獨(dú)立的 IP 地址,可與其他設(shè)備或服務(wù)器直接通信。
因?yàn)椋篒P 唯一性:確保每個(gè)設(shè)備在網(wǎng)絡(luò)中都是唯一的,可以準(zhǔn)確尋址。 能通信:使設(shè)備能夠通過(guò)網(wǎng)絡(luò)相互通信,發(fā)送和接收數(shù)據(jù)包。 便管理:方便網(wǎng)絡(luò)管理員管理和監(jiān)控設(shè)備,排查網(wǎng)絡(luò)問(wèn)題。
沒(méi)有 IP 地址的物聯(lián)網(wǎng)設(shè)備,不可以直連網(wǎng)絡(luò),需要轉(zhuǎn)換器(網(wǎng)關(guān)等):
大量的簡(jiǎn)單傳感器和執(zhí)行器,它們通常通過(guò)網(wǎng)關(guān)等中間設(shè)備與網(wǎng)絡(luò)連接,自身不具備直接的 IP 地址。這些設(shè)備可能包括環(huán)境監(jiān)測(cè)傳感器、簡(jiǎn)單的控制裝置等,它們的數(shù)據(jù)需要經(jīng)過(guò)網(wǎng)關(guān)進(jìn)行收集和轉(zhuǎn)發(fā)。
無(wú) IP 的設(shè)備,無(wú)網(wǎng)絡(luò)需求:設(shè)備的功能不需要通過(guò)網(wǎng)絡(luò)實(shí)現(xiàn)。直接連接:通過(guò)非網(wǎng)絡(luò)方式(如 USB、藍(lán)牙、針腳線)連接和通信。低成本和復(fù)雜性:沒(méi)有網(wǎng)絡(luò)功能的設(shè)備通常更簡(jiǎn)單、更便宜。
沒(méi)有 IP 地址的設(shè)備想要聯(lián)網(wǎng),可以通過(guò)網(wǎng)關(guān)設(shè)備、網(wǎng)絡(luò)適配器、串口服務(wù)器、智能控制器和嵌入式網(wǎng)絡(luò)模塊等方法來(lái)間接實(shí)現(xiàn)網(wǎng)絡(luò)連接。
2. ICMP 協(xié)議
ICMP: Internet Control Message Protocol,互聯(lián)網(wǎng)控制報(bào)文協(xié)議,差錯(cuò)報(bào)告、網(wǎng)絡(luò)診斷、路徑控制和擁塞控制、傳遞控制信息。通俗講,ICMP 主要的功能包括:確認(rèn) IP 包是否成功送達(dá)目標(biāo)地址、報(bào)告發(fā)送過(guò)程中 IP 包被廢棄的原因和改善網(wǎng)絡(luò)設(shè)置等。 ICMP 報(bào)文是封裝在 IP 包里面,它工作在網(wǎng)絡(luò)層,是 IP 協(xié)議的助手。 ping 應(yīng)用的底層(ping 當(dāng)然是屬于應(yīng)用層),用的是網(wǎng)絡(luò)層的ICMP協(xié)議。
常見(jiàn)的 ICMP 消息類(lèi)型:
- Echo Request 和 Echo Reply:用于 ping 命令,檢查目標(biāo)主機(jī)是否可達(dá)。
- Destination Unreachable:當(dāng)路由器或主機(jī)無(wú)法傳遞數(shù)據(jù)包時(shí),發(fā)送該消息通知源主機(jī)。
- Time Exceeded:當(dāng)數(shù)據(jù)包在網(wǎng)絡(luò)中存活時(shí)間(TTL)超過(guò)限制時(shí),發(fā)送該消息。
- Redirect:通知主機(jī)選擇更好的路由。
3. IGMP 協(xié)議
IGMP(Internet Group Management Protocol,互聯(lián)網(wǎng)組管理協(xié)議)是用于管理 IP 組播通信的協(xié)議。
當(dāng)主機(jī)希望加入某個(gè)組播組時(shí),它會(huì)通過(guò) IGMP 向本地網(wǎng)絡(luò)中的路由器發(fā)送加入請(qǐng)求。路由器收到請(qǐng)求后,會(huì)記錄該主機(jī)所在的組播組信息。當(dāng)有組播數(shù)據(jù)要發(fā)送到該組時(shí),路由器根據(jù)這些記錄將數(shù)據(jù)只發(fā)送到有成員加入的網(wǎng)絡(luò)段。大大節(jié)約了網(wǎng)絡(luò)資源。
以下圖為例,如果服務(wù)器把數(shù)據(jù)傳給 5 臺(tái)電腦,采用 IP 方式傳送,服務(wù)器需要發(fā)送 5 份數(shù)據(jù),目標(biāo)地址分別是 IP1、IP2……;但是先把接收端的 4 臺(tái)電腦用 IGMP 分組之后,服務(wù)器只需要發(fā)送一份數(shù)據(jù),經(jīng)過(guò)的路由器也是只需要轉(zhuǎn)發(fā)一次數(shù)據(jù)。需要分組和訂閱。
在視頻直播等應(yīng)用中,IGMP 確保只有對(duì)該直播內(nèi)容感興趣的主機(jī),訂閱或者關(guān)注主播,才會(huì)接收到視頻數(shù)據(jù),你們訂閱了我的微信公眾號(hào)躍曰了嗎,沒(méi)有的話(huà)訂閱一下感受一下 IGMP。
4. ARP 協(xié)議
ARP:Address Resolution Protocol,地址解析協(xié)議。根據(jù) IP 地址找到對(duì)應(yīng)的 MAC 地址。
ARP 根據(jù) IP 地址獲取 MAC 地址的方法:主機(jī)發(fā)送一個(gè)廣播,誰(shuí)的 IP 叫 xx。然后 xx IP 回答說(shuō)我是 xx IP,我的 MAC 地址是 yy。操作系統(tǒng)會(huì)把第一次通過(guò) ARP 獲取的 MAC 地址緩存起來(lái)。
5. RARP 協(xié)議
RARP:Reverse Address Resolution Protocol,反向地址解析協(xié)議。根據(jù) MAC 地址找 IP 地址。一些無(wú)盤(pán)工作站等設(shè)備在啟動(dòng)時(shí)不知道自己的 IP 地址,但知道自己的 MAC 地址。它們會(huì)發(fā)送 RARP 請(qǐng)求,請(qǐng)求網(wǎng)絡(luò)中的 RARP 服務(wù)器根據(jù)其 MAC 地址來(lái)告知對(duì)應(yīng)的 IP 地址。
我是一臺(tái)打印機(jī),我的 MAC 地址是 xx,當(dāng)打印機(jī)聯(lián)網(wǎng)時(shí),需要一個(gè) IP,這個(gè)時(shí)候打印機(jī)像 RARP 服務(wù)器求分配一個(gè) IP。
打印機(jī)通過(guò) RARP 服務(wù)器靜態(tài)的獲得 IP地址:
打印機(jī)通過(guò) DHCP (這個(gè)是個(gè)應(yīng)用層協(xié)議,之后文章再講)服務(wù)器動(dòng)態(tài)分配的 IP 地址:
第三層:傳輸層協(xié)議
起著可靠傳輸?shù)淖饔?。只在通信雙方節(jié)點(diǎn)上進(jìn)行處理,而無(wú)需在路由器上處理。面向的是端口號(hào)。
1. TCP 協(xié)議
傳輸控制協(xié)議,Transmission Control Protocol,TCP 是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。TCP層是位于IP層之上,應(yīng)用層之下的中間層,即傳輸層。
工作原理
TCP 協(xié)議的運(yùn)行可劃分為三個(gè)階段:連接建立(connection establishment)、數(shù)據(jù)傳送(data transfer)和連接終止(connection termination)。這就是典型的三次握手四次揮手,三握四揮。
應(yīng)用層向TCP層發(fā)送用于網(wǎng)間傳輸?shù)?、?位字節(jié)表示的數(shù)據(jù)流,然后TCP把數(shù)據(jù)流分割成適當(dāng)長(zhǎng)度的報(bào)文段。TCP把結(jié)果包傳給IP層,由它來(lái)透過(guò)網(wǎng)絡(luò)將包傳送給接收端實(shí)體的TCP層。
TCP 協(xié)議確保接收端接收的網(wǎng)絡(luò)包是無(wú)損壞、無(wú)間隔、非冗余和按序的。
數(shù)據(jù)在TCP層稱(chēng)為流(Stream),數(shù)據(jù)分組稱(chēng)為分段(Segment)。作為比較,數(shù)據(jù)在IP層稱(chēng)為Datagram,數(shù)據(jù)分組稱(chēng)為分片(Fragment)。 UDP 中分組稱(chēng)為Message。
組成部分
TCP(Transmission Control Protocol,傳輸控制協(xié)議)的組成部分主要包括:
端口號(hào):用于標(biāo)識(shí)不同的應(yīng)用程序。
序列號(hào)和確認(rèn)號(hào):確保數(shù)據(jù)傳輸?shù)捻樞蛐院涂煽啃浴?/p>
特點(diǎn)
使用序號(hào),對(duì)收到的TCP報(bào)文段進(jìn)行排序以及檢測(cè)重復(fù)的數(shù)據(jù);使用校驗(yàn)和檢測(cè)報(bào)文段的錯(cuò)誤,即無(wú)錯(cuò)傳輸;使用確認(rèn)和計(jì)時(shí)器來(lái)檢測(cè)和糾正丟包或延時(shí);流控制(Flow control);擁塞控制(Congestion control);丟失包的重傳。所以他有一下特點(diǎn):
面向連接:在數(shù)據(jù)傳輸前需建立連接。那就是資源消耗大。不靈活。
可靠傳輸:通過(guò)多種機(jī)制保證數(shù)據(jù)的正確到達(dá)。帶寬消耗大。
全雙工通信:雙方可同時(shí)進(jìn)行數(shù)據(jù)收發(fā)。
流量控制:防止接收方被數(shù)據(jù)淹沒(méi)。
擁塞控制:避免網(wǎng)絡(luò)擁塞。
應(yīng)用
文件傳輸:如 FTP 等,保證數(shù)據(jù)的準(zhǔn)確和完整。
電子郵件:確保郵件內(nèi)容可靠傳輸。
網(wǎng)頁(yè)瀏覽:HTTP 基于 TCP。
遠(yuǎn)程登錄:如 Telnet。
采用TCP傳輸?shù)膽?yīng)用層協(xié)議有:MQTT、DDS、Modbus-TCP、XMPP、AMQP、POP3、HTTP、HTTPS、FTP、Telnet、SMTP。
2. UDP 協(xié)議
用戶(hù)數(shù)據(jù)報(bào)協(xié)議,User Datagram Protocol,UDP;又稱(chēng)用戶(hù)數(shù)據(jù)包協(xié)議,是一個(gè)簡(jiǎn)單的面向數(shù)據(jù)包的通信協(xié)議,位于OSI模型的傳輸層。數(shù)據(jù) UDP 中分組稱(chēng)為Message。
在TCP/IP模型中,UDP為網(wǎng)絡(luò)層以上和應(yīng)用層以下提供了一個(gè)簡(jiǎn)單的接口。UDP只提供數(shù)據(jù)的不可靠傳遞,它一旦把應(yīng)用程序發(fā)給網(wǎng)絡(luò)層的數(shù)據(jù)發(fā)送出去,就不保留數(shù)據(jù)備份。
UDP 是不可靠連接傳輸,注意還是需要連接的。對(duì)比下應(yīng)用層協(xié)議的 MQTT 的消息訂閱模式。
組成部分
UDP(User Datagram Protocol,用戶(hù)數(shù)據(jù)報(bào)協(xié)議)的組成部分主要有:源端口和目的端口:用于標(biāo)識(shí)發(fā)送方和接收方的應(yīng)用程序。
工作原理
發(fā)送方將數(shù)據(jù)封裝成 UDP 數(shù)據(jù)報(bào),其中包含源端口、目的端口以及要傳輸?shù)臄?shù)據(jù)。然后直接將數(shù)據(jù)報(bào)發(fā)送到網(wǎng)絡(luò)中,不需要像 TCP 那樣先建立連接。
數(shù)據(jù)報(bào)在網(wǎng)絡(luò)中進(jìn)行傳輸,可能會(huì)經(jīng)過(guò)多個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)。由于 UDP 不提供可靠傳輸機(jī)制,所以它不會(huì)對(duì)數(shù)據(jù)報(bào)進(jìn)行確認(rèn)、重傳等操作,也不會(huì)對(duì)數(shù)據(jù)的順序進(jìn)行嚴(yán)格保證。
接收方通過(guò)目的端口來(lái)識(shí)別屬于自己的 UDP 數(shù)據(jù)報(bào),并從數(shù)據(jù)報(bào)中提取出數(shù)據(jù)進(jìn)行處理。
特點(diǎn)
高效性:不需要建立連接和進(jìn)行復(fù)雜的確認(rèn)等機(jī)制,數(shù)據(jù)傳輸速度快,延遲低,能快速響應(yīng)。
低開(kāi)銷(xiāo):協(xié)議簡(jiǎn)單,在網(wǎng)絡(luò)資源的使用上較為節(jié)省。
實(shí)時(shí)性好:適合實(shí)時(shí)性要求高的應(yīng)用,如實(shí)時(shí)音頻、視頻傳輸,能及時(shí)發(fā)送數(shù)據(jù)而不會(huì)因連接建立等環(huán)節(jié)造成較大延遲。
靈活性高:可以快速發(fā)送少量數(shù)據(jù),在一些特定場(chǎng)景下非常適用。
能穿透部分防火墻:相比 TCP 有時(shí)更容易穿過(guò)一些網(wǎng)絡(luò)限制。
應(yīng)用
UDP適用于不需要或在程序中執(zhí)行錯(cuò)誤檢查和糾正的應(yīng)用,它避免了協(xié)議棧中此類(lèi)處理的開(kāi)銷(xiāo)。對(duì)時(shí)間有較高要求的應(yīng)用程序通常使用UDP,因?yàn)閬G棄數(shù)據(jù)包比等待或重傳導(dǎo)致延遲更可取。
許多關(guān)鍵的互聯(lián)網(wǎng)應(yīng)用程序使用UDP,包括:DNS、SNMP、TFTP、DHCP、CoAP、Modbus-UDP、RIP、NTP。
實(shí)時(shí)應(yīng)用不需要實(shí)時(shí)可靠連接:允許一些丟包、出錯(cuò)或擁塞,從來(lái)保障傳輸速度。流媒體、網(wǎng)絡(luò)游戲、IP電話(huà)(VoIP)等等使用 UDP 優(yōu)勢(shì)明顯。
下面是 TCP 和 UDP 的區(qū)別:
后記
這里講了第二層網(wǎng)絡(luò)傳、第三層傳輸層的協(xié)議以及其功能。下一篇終于到了第四層應(yīng)用層協(xié)議,也是最精彩的一層。
理解 TCP/IP 四層框架是學(xué)習(xí)物聯(lián)網(wǎng)相關(guān)協(xié)議的基礎(chǔ)。學(xué)習(xí)協(xié)議是做好物聯(lián)網(wǎng)設(shè)備數(shù)據(jù)接入、監(jiān)控、報(bào)警、下控、運(yùn)維、數(shù)據(jù)分析、智控的基礎(chǔ)。
我閱讀了大量的書(shū)籍和文章,匯總出了 TCP/IP 四層框架的主要協(xié)議、物聯(lián)網(wǎng)設(shè)備的主要協(xié)議。工作量之大,超出預(yù)期。我看了 B 站《希賽關(guān)于軟考網(wǎng)絡(luò)工程師的全套視頻教程》,看了《圖解 TCP/IP》,看了大量的文章。又結(jié)合之前的物聯(lián)網(wǎng)行業(yè)的從業(yè)經(jīng)驗(yàn),整理出來(lái)這篇文章。 期望大家的鼓勵(lì)與支持,歡迎大家交流。
參考文獻(xiàn)
15 張圖, 把TCP/IP 講得一清二楚!-騰訊云開(kāi)發(fā)者社區(qū)-騰訊云
什么是OPC UA&它是如何工作的?_嗶哩嗶哩_bilibili
探索 OSI 會(huì)話(huà)層:建立和管理通信會(huì)話(huà)的關(guān)鍵_不同機(jī)器之間用戶(hù)會(huì)話(huà)的建立與管理-CSDN博客
3、物聯(lián)網(wǎng)的物理層協(xié)議 – 孤情劍客 – 博客園
【2024軟考】《網(wǎng)絡(luò)工程師》新版精講視頻-希賽網(wǎng)(零基礎(chǔ)系統(tǒng)教程,建議收藏)!_嗶哩嗶哩_bilibili
MQTT協(xié)議_mqtt payload一定要字符串嗎-CSDN博客
MQTT協(xié)議_mqtt payload一定要字符串嗎-CSDN博客
物聯(lián)網(wǎng)協(xié)議之COAP簡(jiǎn)介及Java實(shí)踐-CSDN博客
如何使用CoAP的對(duì)稱(chēng)加密自主接入和DTLS自主接入_物聯(lián)網(wǎng)平臺(tái)(IoT)-阿里云幫助中心
DTU和RTU的區(qū)別_rtu和dtu的區(qū)別-CSDN博客
最后一個(gè)很好啊,圖畫(huà)的也很好,https://www.xiaolincoding.com/,小林 x 圖解計(jì)算機(jī)基礎(chǔ),推薦給大家。
本文由 @躍曰 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來(lái)自Unsplash,基于CC0協(xié)議。
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
- 目前還沒(méi)評(píng)論,等你發(fā)揮!