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