企業應用架構研究系列十二:網絡模型與網絡協議


  最近研究IOT相關的技術與架構,由於網絡上的資料質量並不是很好,很多文章把一些網絡模型與協議混淆,因此梳理了一下這些概念。無論是做IOT平台還是微服務都是離不開網絡開發這個一個重要的環節。

  首先先說一下什么是網絡七層模型,如下圖(網絡盜圖)

  物理層:解決兩個硬件之間怎么通信的問題,常見的物理媒介有光纖、電纜、中繼器等。它主要定義物理設備標准,如網線的接口類型、光纖的接口類型、各種傳輸介質的傳輸速率等。它的主要作用是傳輸比特流(就是由1、0轉化為電流強弱來進行傳輸,到達目的地后在轉化為1、0,也就是我們常說的數模轉換與模數轉換)。這一層的數據叫做比特。

  數據鏈路層:在計算機網絡中由於各種干擾的存在,物理鏈路是不可靠的。該層的主要功能就是:通過各種控制協議,將有差錯的物理信道變為無差錯的、能可靠傳輸數據幀的數據鏈路。它的具體工作是接收來自物理層的位流形式的數據,並封裝成幀,傳送到上一層;同樣,也將來自上層的數據幀,拆裝為位流形式的數據轉發到物理層。這一層的數據叫做幀。

  網絡層:計算機網絡中如果有多台計算機,怎么找到要發的那台?如果中間有多個節點,怎么選擇路徑?這就是路由要做的事。該層的主要任務就是:通過路由選擇算法,為報文(該層的數據單位,由上一層數據打包而來)通過通信子網選擇最適當的路徑。這一層定義的是IP地址,通過IP地址尋址,所以產生了IP協議。

  傳輸層:當發送大量數據時,很可能會出現丟包的情況,另一台電腦要告訴是否完整接收到全部的包。如果缺了,就告訴丟了哪些包,然后再發一次,直至全部接收為止。

簡單來說,傳輸層的主要功能就是:監控數據傳輸服務的質量,保證報文的正確傳輸。

  會話層:雖然已經可以實現給正確的計算機,發送正確的封裝過后的信息了。但我們總不可能每次都要調用傳輸層協議去打包,然后再調用IP協議去找路由,所以我們要建立一個自動收發包,自動尋址的功能。於是會話層出現了:它的作用就是建立和管理應用程序之間的通信。

  表示層:表示層負責數據格式的轉換,將應用處理的信息轉換為適合網絡傳輸的格式,或者將來自下一層的數據轉換為上層能處理的格式。

  應用層:應用層是計算機用戶,以及各種應用程序和網絡之間的接口,其功能是直接向用戶提供服務,完成用戶希望在網絡上完成的各種工作。

   

   這七層是OSI開放性的通信系統模型,組成了網絡互通的基礎。作為應用軟件開發者來說,我們只需關注傳輸層(TCP/UDP)以上網絡層的開發。傳輸層,我們只需知道TCP協議,提供可靠性的服務連接,UDP協議提供不可靠性的服務連接。下層的網絡協議大學的時候課堂都講得非常清晰了。

  我們着重研究一下上三層模型,這三層是最容易讓人混淆的,因為會話層、表示層、應用層在四/五層模型里面統稱為應用層,在應用層里面最容易混淆的就是把 TCP/IP,HTTP1.1/HTTP2,RPC、SOA、長連接短連接 這些概念混淆,把協議和技術混淆,就如上圖(盜圖)把RPC放到會話層其實是不對的,RPC(Remote Procedure Call)是一個技術概念,不屬於國際標准協議,RPC 技術有很多優秀的框架,如最近比較火爆的Google gRpc,ZeroC ICE等,這些框架為了適配各種開發語言,規定了一些開發協議和規范。還有MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸協議)也是一種基於網絡層的應用開發協議,提供可靠的消息傳輸。無論gRpc還是MQTT它們都不是網絡協議的范疇。

  接着再說一下網絡傳輸協議的應用層,應用層的核心協議就HTTP(Hyper Text Transfer Protocol)協議,HTTP1.0 之前,主要是基於TCP傳輸協議,但是隨着互聯網的爆發性增長,HTTP2.0 衍生出來了,HTTP2.0  在1.0的基礎上優化了首部壓縮和多路復用技術等,大大提高了網絡IO吞吐量。gRPC框架就是基於HTTP2.0 協議衍生出來的RPC開發框架。順便提一下,Asp.Net Core 6.0 后,也默認使用HTTP2.0 協議。

   說完HTTP再接着說一下MQTT協議,MQTT協議也是基於TCP傳輸層之上的一個網絡應用層協議,是為硬件性能低下的遠程設備以及網絡狀況糟糕的情況下而設計的發布/訂閱型消息協議,主要應用與工業互聯網行業。由於MQTT協議更簡潔輕量,有人測試過MQTT協議比HTTP協議傳輸快100倍,非常適合工業互聯時代。

  上述見解如有表述有誤,歡迎大咖指導。

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM