天天看點

OSI模型詳解OSI模型資料傳輸步驟交換機和路由器的差別網絡為什麼要分層

今天,我們詳解OSI(Open System Inter-connection Reference Model)模型,來看看工業物聯網的網絡互聯和資料互通。

OSI模型

1984年,國際标準化組織(International Organization for Standardization,ISO)釋出了著名的ISO/IEC 7498标準,它定義了網絡互聯的7層架構,即開放式系統互聯參考模型。OSI參考模型将整個網絡分為7層,從底層往上分别是實體層、資料鍊路層、網絡層、傳輸層、會話層、表示層和應用層。

  1. 現場總線涉及OSI參考模型的第1層(實體層)、第2層(資料鍊路層)及第7層(應用層) ;
  2. 工業以太網涉及OSI參考模型的第1、2、7層;對于非實時資料,它也支援TCP/IP通道,此時涉及第3層(網絡層)和第4層(傳輸層);

想了解網絡層次,可以看“詹姆斯·F·庫羅斯”與“基思·W·羅斯”合著的《計算機網絡:自頂向下方法》。

OSI模型詳解OSI模型資料傳輸步驟交換機和路由器的差別網絡為什麼要分層

1、實體層

實體層是OSI參考模型的底層,主要作用是利用實體傳輸媒體為資料鍊路層提供實體連接配接,以便傳輸比特流,它規定了網絡連接配接的一些電氣特性,負責傳送0和1信号,實體媒體可以是雙絞銅線、同軸電纜、多模光纖、無線信道如Wi-Fi、蜂窩等。

2、資料鍊路層(MAC協定)

資料鍊路層負責傳輸電路的0和1信号,由于單純的數字0和1缺乏實際含義,是以要定義解讀方式:多少個0和1為一組,每個信号代表什麼含義。這就是鍊路層的作用,它在實體層之上,将比特組合成位元組,進而拼接成幀,确定0和1的分組方式,一個封包幀由若幹首部字段和資料字段構成。

成幀功能之外,鍊路層的作用還包括鍊路接入、差錯檢測和糾正、可靠傳遞。鍊路接入規定媒體通路控制機制,例如采用總線拓撲時,確定同一時刻隻能有一個節點向總線發送資料,避免發生沖突。

以太網802.3、無線區域網路802.11都屬于資料鍊路層協定,其鍊路接入機制為大家所熟知的媒體通路控制(Media Access Control,MAC)協定。以太網規定接入網絡的所有裝置須具有“網卡”接口,網卡的身份資訊由MAC位址辨別,全球唯一,MAC位址長度為6個位元組,例如C1:63:9C:1D:6A:D1。

差錯檢測和糾正指鍊路層基于硬體電路對傳輸資料進行校驗,信号衰減和電磁噪聲幹擾導緻資料幀中某個值為1的比特在接收方被錯誤地識别為0,而鍊路層具有發現錯誤的能力,必要時還能夠糾正錯誤。可靠傳遞指鍊路層通過确認和重傳機制保證資料無差錯地移動,可靠傳遞服務通常應用于高差錯率的鍊路,例如無線鍊路,而對于低比特差錯率的鍊路如有線連接配接,可靠傳遞被認為是非必要的,為了減少開銷,有些鍊路層将不提供可靠傳遞服務。

3、網絡層(IP協定)

網絡層和傳輸層以TCP/IP為例進行說明。在以太網建構的網絡中,不同的計算機直接通過MAC位址互相識别并交換資料,這在一個小區域網路内完全沒有問題。假如世界上所有計算機都基于MAC位址識别和交換資料,此時就變得非常困難了,因為MAC位址沒有分組的概念,通過MAC位址無法知道計算機是否屬于同一個子網絡。所有的計算機如果連接配接在一起,彼此之間要互相通信,不可能采用點對點的方式進行,需要引入網絡拓撲,例如樹形拓撲。相距較遠的兩台計算機之間通信時,須在整個網絡拓撲中為它們規劃一條路徑,在樹形拓撲中則涉及一級一級向上追溯,最後規劃出最優路徑。

網絡層代表協定——IP引進了一套新的位址體系,使得計算機及網絡裝置能夠快速區分計算機是否屬于同一個子網。例如192.168.43.193和192.168.43.22屬于同一個子網,192.168.43.193和192.168.22.17則不在同一個子網(如果子網路遮罩為255.255.255.0),通過IP位址很好識别。網絡裝置将根據IP位址快速規劃出路徑,同一個子網内的對話隻需基于MAC位址轉發,使用交換機網絡裝置。不在同一個子網的計算機,須通過路由器網絡裝置将資料轉發出去,路由器具備跨網段的資料轉發能力。網絡層基于邏輯位址尋址,實作網絡路徑規劃,而資料鍊路層基于硬體位址尋址。

4、傳輸層(端口通信,TCP、UDP協定)

傳輸層定義傳輸資料的協定端口号以及流控和差錯校驗。有了MAC位址和IP位址,網際網路上的任意兩台主機之間就能夠建立通信了。接下來的問題是,同一台主機上多個應用程式(不同程序)都需要網絡通路時,該如何區分資料包是發送給了哪個應用程式呢?傳輸層建立了端口到端口之間的通信,它通過端口号區分不同的應用程式,例如通路位址http://10.207.228.51:9093,其中9093表示端口号。作為比對,網絡層則是建立主機到主機的通信。TCP和UDP是應用最廣泛的傳輸層協定,TCP基于握手連接配接,發出的資料包要求收方回複确認,UDP則類似于廣播,無須建立連接配接,也無須收方應答,UDP效率高,TCP則更可靠。傳輸層協定發送資料包時會添加校驗資訊,接收方使用校驗資訊檢查該封包是否出現差錯。

5、會話層 & 表示層

會話層和表示層中的“會話”是兩個應用程式程序之間的邏輯連接配接,兩個應用程式之間基于此邏輯連接配接在一定的時間内交換資料,會話層用于建立、管理和終止會話。表示層用于處理交換資訊的表示方式,包括資料格式交換、加密與解密、壓縮。會話層的功能可能在傳輸層就實作了,例如TCP可以管理連接配接。由于表示層可以合并到應用層中,由應用層負責資料的解析,是以對會話層和表示層的讨論并不多。

6、應用層

應用層收到傳輸層的資料,接下來要進行解析。由于網絡資料來源五花八門,須事先約定好格式,是以應用層規定了應用程式的資料格式。舉個例子,TCP為各種應用層傳輸資料,比如HTTP、SMTP、FTP等,它們都有各自的一套協定規則,分别定義了網頁、電子郵件、檔案傳輸時的資料格式,這些均屬于應用層範疇,應用層是OSI參考模型的最高一層,直接面向使用者。

資料傳輸步驟

接下來通過以太網加TCP/IP,将資料在網絡各層的流動串聯起來。如下圖,主機A打算發一段文本消息給主機B,此文本為網絡傳輸的有效資料載荷。

OSI模型詳解OSI模型資料傳輸步驟交換機和路由器的差別網絡為什麼要分層
  1. 應用層将這段文本按一定格式打包好,往下傳遞給傳輸層;
  2. 傳輸層在應用層封包的基礎上加上它的頭部字段,其中包括主機A的端口号(源端口号)和主機B的端口号(目标端口号),往下傳遞給網絡層;
  3. 網絡層在傳輸層封包的基礎上添加它的頭部字段,包括主機A的IP位址(源IP位址)和主機B的IP位址(目标IP位址),往下傳遞給資料鍊路層;
  4. 資料鍊路層在網絡層封包的基礎上添加主機A的MAC位址和主機B的MAC位址;
  5. 封包幀最後通過實體層發送出去。

通過資料鍊路層完成最後封裝的封包幀格式如圖:

OSI模型詳解OSI模型資料傳輸步驟交換機和路由器的差別網絡為什麼要分層

交換機和路由器的差別

假如主機A和主機B不在同一個子網内,主機A通過交換機連接配接它所在的區域網路,交換機工作在OSI參考模型的第二層——基于MAC位址轉發消息,它在資料鍊路層将封包幀的以太網幀頭部分解析出來,獲得目标機的MAC位址。由于交換機發現目标機和主機A不在同一個子網内,是以交換機将此封包幀重新封好并轉發到它的一個輸出端口,所有跨網段的封包幀都将轉發到這個輸出端口,這個輸出端口與路由器相連,路由器工作在OSI參考模型的第三層——基于IP位址轉發消息,它在網絡層将封包幀的IP頭部解析出來,獲得目标機的IP位址,路由器通過IP位址判斷此封包幀應通過某個端口轉發給主機B,封包到達主機B時,主機B的接收過程是從實體層開始,通過一層層解析,最後在應用層收到主機A發送的文本消息。

網絡為什麼要分層

網絡為什麼要分層呢?分層的目的在于利用層次結構把開放系統的資訊交換問題分解到一系列可以控制的軟硬體子產品中,把大問題分割成多個小問題,每一層可根據需要獨立修改或者進行功能擴充,易于實作标準化。如果某一層發生了變化,隻要其接口不變,就不會對其他層造成影響,這有利于不同制造廠家的裝置互連。

最終使用者隻關心應用層,其他層如何實作對使用者而言并不重要。由于各層之間互相獨立,是以高層無須知道底層功能的具體實作,定義好接口,高層即可複用底層提供的服務。

繼續閱讀