對於OSI七層模型,我不想再"背誦"了

前言

對於網絡協議,我們在日常開發中,實際碼相關代碼的場景不多,因爲日常都是各種CURL。小夥伴們在大學學完可能都忘的差不多了,甚至有些小夥伴在大學就沒學好,還有壓根就沒學的(這裏是指那些半路轉行投身於碼海的小夥伴)。但是網絡協議這塊很是很重要的,網絡協議對於問題分析,bug修復還是很有幫助的。無論是大廠還是小廠的面試,都或多或少的問到網絡協議這塊,久經沙場的麪霸可能會說:"這不是很簡單的事麼,找個面試寶典背一背,應付面試那些小套路,還是綽綽有餘的"。比如說高頻面試題,描述下從瀏覽器上輸入URL到頁面渲染結束的過程。這裏不解析這道題了,答案網上一大堆。這裏想和大家一起認真學習下OSI七層模型,不爲了應付面試官,是時候徹底忘了"應表會傳網數物"這句口訣。

什麼是OSI參考模型

OSI(Open System Interconnect),即開放式互聯,是ISO(國際標準化組織)制定的一個用於計算機或通信系統間互聯的標準體系,一般稱爲OSI參考模型或七層模型。具體可以見下圖

解密OSI參考模型

下面來和大家一起細細品味着7層協議,看看這7層協議到底是啥

  • 物理層

在OSI參考模型中,物理層是參考模型的最低層,也是OSI模型的第一層。物理層的主要功能是:利用傳輸介質爲數據鏈路層提供物理連接,實現比特流的透明傳輸。物理層的作用是實現相鄰計算機節點之間比特流的透明傳送,儘可能屏蔽掉具體傳輸介質和物理設備的差異。使其上面的數據鏈路層不必考慮網絡的具體傳輸介質是什麼。

  • 數據鏈路層

數據鏈路層是OSI模型的第二層,負責建立和管理節點間的鏈路。在計算機網絡中由於各種干擾的存在,物理鏈路是不可靠的。因此,這一層的主要功能是在物理層提供的比特流的基礎上,通過差錯控制、流量控制方法,使有差錯的物理線路變爲無差錯的數據鏈路,即提供可靠的通過物理介質傳輸數據的方法。數據鏈路層的具體工作是接收來自物理層的位流形式的數據,並封裝成幀,傳送到上一層;同樣,也將來自上層的數據幀,拆裝爲位流形式的數據轉發到物理層;並且,還負責處理接收端發回的確認幀的信息,以便提供可靠的數據傳輸。

  • 網絡層

網絡層是OSI模型的第三層,它是OSI參考模型中最複雜的一層,也是通信子網的最高一層。它在下兩層的基礎上向資源子網提供服務。其主要任務是:通過路由選擇算法,爲報文或分組通過通信子網選擇最適當的路徑。具體地說,數據鏈路層的數據在這一層被轉換爲數據包,然後通過路徑選擇、分段組合、順序、進/出路由等控制,將信息從一個網絡設備傳送到另一個網絡設備。一般地,數據鏈路層是解決同一網絡內節點之間的通信,而網絡層主要解決不同子網間的通信。例如在廣域網之間通信時,必然會遇到路由(即兩節點間可能有多條路徑)選擇問題。 在實現網絡層功能時,需要解決的主要問題如下:
 尋址:數據鏈路層中使用的物理地址(如MAC地址)僅解決網絡內部的尋址問題。在不同子網之間通信時,爲了識別和找到網絡中的設備,每一子網中的設備都會被分配一個唯一的地址。由於各子網使用的物理技術可能不同,因此這個地址應當是邏輯地址(如IP地址)。
 路由算法:當源節點和目的節點之間存在多條路徑時,本層可以根據路由算法,通過網絡爲數據分組選擇最佳路徑,並將信息從最合適的路徑由發送端傳送到接收端。
 連接服務:與數據鏈路層流量控制不同的是,前者控制的是網絡相鄰節點間的流量,後者控制的是從源節點到目的節點間的流量。其目的在於防止阻塞,並進行差錯檢測。

  • 傳輸層

OSI下3層的主要任務是數據通信,上3層的任務是數據處理。而傳輸層是OSI模型的第4層。因此該層是通信子網和資源子網的接口和橋樑,起到承上啓下的作用。該層的主要任務是:向用戶提供可靠的端到端的差錯和流量控制,保證報文的正確傳輸。傳輸層的作用是向高層屏蔽下層數據通信的細節,即向用戶透明地傳送報文。該層常見的協議:TCP/IP中的TCP協議、Novell網絡中的SPX協議和微軟的NetBIOS/NetBEUI協議。
傳輸層提供會話層和網絡層之間的傳輸服務,這種服務從會話層獲得數據,並在必要時,對數據進行分割。然後,傳輸層將數據傳遞到網絡層,並確保數據能正確無誤地傳送到網絡層。因此,傳輸層負責提供兩節點之間數據的可靠傳送,當兩節點的聯繫確定之後,傳輸層則負責監督工作。綜上,傳輸層的主要功能如下:
傳輸連接管理:提供建立、維護和拆除傳輸連接的功能。傳輸層在網絡層的基礎上爲高層提供“面向連接”和“面向無接連”的兩種服務。
處理傳輸差錯:提供可靠的“面向連接”和不太可靠的“面向無連接”的數據傳輸服務、差錯控制和流量控制。在提供“面向連接”服務時,通過這一層傳輸的數據將由目標設備確認,如果在指定的時間內未收到確認信息,數據將被重發。

  • 會話層

會話層是OSI模型的第5層,是用戶應用程序和網絡之間的接口,主要任務是:向兩個實體的表示層提供建立和使用連接的方法。將不同實體之間的表示層的連接稱爲會話。因此會話層的任務就是組織和協調兩個會話進程之間的通信,並對數據交換進行管理。用戶可以按照半雙工、單工和全雙工的方式建立會話。當建立會話時,用戶必須提供他們想要連接的遠程地址。而這些地址與MAC地址或網絡層的邏輯地址不同,它們是爲用戶專門設計的,更便於用戶記憶。域名就是一種網絡上使用的遠程地址例如:www.baidu.com。會話層的具體功能如下:
會話管理:允許用戶在兩個實體設備之間建立、維持和終止會話,並支持它們之間的數據交換。例如提供單方向會話或雙向同時會話,並管理會話中的發送順序,以及會話所佔用時間的長短。
會話流量控制:提供會話流量控制和交叉會話功能。
尋址:使用遠程地址建立會話連接。
出錯控制:從邏輯上講會話層主要負責數據交換的建立、保持和終止,但實際的工作卻是接收來自傳輸層的數據,並負責糾正錯誤。會話控制和遠程過程調用均屬於這一層的功能。但應注意,此層檢查的錯誤不是通信介質的錯誤,而是磁盤空間、打印機缺紙等類型的高級錯誤。

  • 表示層

表示層是OSI模型的第六層,它對來自應用層的命令和數據進行解釋,對各種語法賦予相應的含義,並按照一定的格式傳送給會話層。其主要功能是“處理用戶信息的表示問題,如編碼、數據格式轉換和加密解密”等。表示層的具體功能如下:
數據格式處理:協商和建立數據交換的格式,解決各應用程序之間在數據格式表示上的差異。
數據的編碼:處理字符集和數字的轉換。例如由於用戶程序中的數據類型(整型或實型、有符號或無符號等)、用戶標識等都可以有不同的表示方式,因此,在設備之間需要具有在不同字符集或格式之間轉換的功能。
壓縮和解壓縮:爲了減少數據的傳輸量,這一層還負責數據的壓縮與恢復。
數據的加密和解密:可以提高網絡的安全性。

  • 應用層

應用層是OSI參考模型的最高層,它是計算機用戶,以及各種應用程序和網絡之間的接口,其功能是直接向用戶提供服務,完成用戶希望在網絡上完成的各種工作。它在其他6層工作的基礎上,負責完成網絡中應用程序與網絡操作系統之間的聯繫,建立與結束使用者之間的聯繫,並完成網絡用戶提出的各種網絡服務及應用所需的監督、管理和服務等各種協議。此外,該層還負責協調各個應用程序間的工作。
應用層爲用戶提供的服務和協議有:文件服務、目錄服務、文件傳輸服務(FTP)、遠程登錄服務(Telnet)、電子郵件服務(E-mail)、打印服務、安全服務、網絡管理服務、數據庫服務等。應用層的主要功能如下:
用戶接口:應用層是用戶與網絡,以及應用程序與網絡間的直接接口,使得用戶能夠與網絡進行交互式聯繫。
實現各種服務:該層具有的各種應用程序可以完成和實現用戶請求的各種服務。

網絡傳輸過程

  • 封包過程

  1. 數據包經過 應用層、表示層、會話層三層
  2. 進入到傳輸層階段添加端口號:源端口(隨機端口)、目標端口(想要到達的端口)(tcp協議)
  3. 下一步進入到網絡層添加IP地址:源IP  、目標IP(主要設備路由器)
  4. 進入數據鏈路層添加Mac地址:源Mac  、目標Mac(主要設備交換機)
  5. 物理層 將數據內容轉換爲二進制內容
  • 解包過程

  1. 數據包進入到物理層進二進制內容轉換爲以前的內容
  2. 數據鏈路層識別Mac地址
  3. 網絡層識別IP地址
  4. 傳輸層識別端口號
  5. 會話層、表示層、應用層

總結

上面大致介紹了OSI的七層模型,以及在網絡傳輸過程中分別扮演的角色。網絡協議這塊,水很深,路很長。後續再和大家一起深入學習。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章