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