一文看懂什么是OSI七層協議

我們都知道互聯網的本質是一系列的網絡協議,這個協議就叫做OSI協議。按照功能不同分工不同,認為的分為七層。實際上這七層是并不存在的,也就是說沒有這些概念,而我們今天提到的七層概念,只是人為的劃分而已。目的只是為了讓大家更好地理解這些都是用來做什么的。
從專業的角度來說,OSI就是一個開放的通信系統互聯參考模型,也是一個定義的很好的協議規范。OSI模型有7層結構,每層都可以有幾個子層。OSI的7層從下到上分別是7-應用層、6-表示層、5-會話層、4-傳輸層、3-網絡層、2-數據鏈路層、1-物理層。
1. 七層協議詳解
物理層:是參考模型的最低層。該層是網絡通信的數據傳輸介質,由連接不同結點的電纜與設備共同構成。主要跟功能是:利用傳輸介質為數據鏈路層提供物理連接,負責處理數據傳輸并監控數據出錯率,以便數據流的透明傳輸。
數據鏈路層:四參考模型的第二層。主要功能是:在物理層提供的服務基礎上,在通信的實體間建立數據鏈路連接,傳輸以“幀”為單位的數據包,并采用差錯控制與流量控制方法,使有差錯的物理線路變成無差錯的數據鏈路。
網絡層:是參考模型的第三層。主要功能是:為數據在節點之間傳輸創建邏輯鏈路,通過路由選擇算法為分組通過通信子網選擇最適當的路徑,以及實現擁塞控制、網絡互連等功能。
傳輸層:是參考模型的第四層。主要功能是:向用戶提供可靠地端到端服務,處理數據包錯誤、數據包次序,以及其他一些關鍵傳輸問題。傳輸層向高層屏蔽了下層數據通信的細節。因此,它是計算機通信體系結構中關鍵的一層。
會話層:是參考模型的第五層。主要功能是:負責維擴兩個結點之間的傳輸連接,以便確保點到點傳輸不中斷,以及管理數據交換等功能。
表示層:是參考模型的第六層。主要功能是:用于處理在兩個通信系統中交換信息的表示方法,主要包括數據格式變換、數據加密與解密、數據壓縮與恢復等功能。
應用層:是參考模型的最高層。主要功能是:為應用軟件提供了很多服務,比如文件服務器、數據庫服務、電子郵件與其他網絡軟件服務。
2. OSI歷史
忘記告訴大家,這個協議是從下到上倒推出來的。
我們來回顧一下這段有趣的歷史吧~
OSI模型最初是因為美國人的兩臺機器之間有進行通信的需求。
需求1:兩個硬件之間如何進行通信,具體就是一臺發比特流,另一臺能夠收到。于是就有了物理層:主要是定義設備標準,如網線的額接口類型、管線的接口類型、各種傳輸介質的傳輸速率等。它的主要租用是傳輸比特流,就是從1/0轉化為電流強弱來進行傳輸,到達目的之后再轉化為1/0,也就是我們常說的數模轉換。這一層的數據是比特。
需求2:現在通過電線我能發數據流了,但是我還是希望能通過無線電波,通過其他介質來進行傳輸。然后我還要保證傳輸過去的比特流是正確的,需要由糾正錯誤的功能。
數據鏈路層:定義了如何讓格式化數據進行傳輸,以及如何讓控制對物理介質的訪問。這一層通常還提供錯誤檢測和糾正,以確保數據的可靠傳輸。
需求3:現在我能發正確的比特流數據到另一臺計算機了,但是當我發大量數據的時候,可能需要很長時間,例如:一個視頻格式的,網絡會中斷好多次,實際上,即使有了物理層和數據鏈路層,網絡還是經常中斷,只是中斷的時間是毫秒級別的。
那么,我還需要保證傳輸大量文件時的準確性。于是,我要對發出去的數據進行封裝。就像發快遞一樣,一個個發送。
于是,發明了傳輸層(傳輸層在OSI模型中,是在網絡層面上)。
比如TCP,是用于發送大量數據的,我發出去一萬個包,另一臺電腦就需要告訴我是否接收到一萬個包,如果缺少3個包,就告訴我是第1001/234/8888個包丟了,那我再發一次。這樣,就能保證對方把這個視頻完整接收了。
例如UDP,適用于發送少量數據的。我發20個包出去,一般不會丟包,所以 ,我不管你收到多少,在多人互動游戲中,也經常受到UDP協議,因為一般都是簡單的額信息,而且有廣播的需求。如果用TCP,效率就會很低,因為它會不停地告訴主機我收到20個包,或者18個包,再發我兩個!如果同時有1萬臺計算機都這樣做,那么用TCP反而會降低效率,還不如用UDP,主機發出去就算了,丟幾個包就卡一下,算了,下次再發包更新。
TCP協議是會綁定IP和端口的協議,下面會介紹IP協議。
需求4:傳輸層是解決了打包的問題。但是如果我有多臺計算機,怎么能找到我要發的那臺?或者A要給F發信息,中間要經過B/C/D/E,但是中間還有好多節點,如K/J/Z/Y.我怎么選擇最佳路徑?這就是路由要做的事情。
于是,發明了網絡層,也就是路由器,交換那些具有尋址功能的設備所實現的功能。這一層定義的是IP復制,通過IP地址尋址,所以產生了協議。
需求5:現在已經能夠給指定計算機發送正確的封裝過的信息了,但是用戶級別的體驗并不是很好?難道我每次都要調用TCP去打包,然后調用IP協議去找路由,自己去發?當然不行,所以我們要建立一個自動收發包,自動尋址的功能。
于是發明了會話層。會話層的作用就是建立和管理應用程序之間的通信。
需求6:現在我能保證應用程序自動收發包和尋址了,但是我要用Linux給window發包,兩個系統語法不一致,就像安裝包一樣,EXE不能在Linux下用,shell在window也也是不能直接運行的。
于是需要表示層,幫我們解決不同系統之間的通信語法問題。
需求7:現在所有必要條件都準備好了,我們可以寫個Android程序,web程序去實現需求吧。
補充:不知道有沒有小伙伴熟悉Socket,這不是一個協議,而是一個通信模型。其實它最初是伯克利加州分校軟件研究所,簡稱BSD發明的,主要是一臺電腦兩個進程之間進行通信,然后把它用到兩臺電腦的進程間通信。所以,可以把它簡單理解為進程間通信,不是什么高級的東西,主要是這么做的:A發包:發請求包給某個已經綁定的端口;收到B的允許后,正式開始發送,發送完了,高速B要斷開連接;收到斷開允許后,馬上斷開,然后發送已經斷開信息給B。
B收包:綁定端口和IP,然后在這個端口監聽接收到A的請求,發給A,并做好接收準備,主要就是清理緩存等待接收新數據;然后正式接收,接收到斷開請求,并允許斷開,確認斷開后,繼續監聽其他請求。
換句話說,socket就是I/O操作,socket并不僅限于網絡通信。在網絡通信中,它涵蓋了網絡層、傳輸層、會話層、表示層、應用層。
3. OSI七層協議中每一層的特征
第一層:物理層
機械性能:接口的形狀,尺寸的大小,引腳的數目和排列方式等;
電氣性能:接口規定信號的電壓、電流、阻抗、波形、速率好平衡特性等;
工程規范:接口引腳的意義、特性、標準。
工作方式:確定數據位流的傳輸方式,如:半雙工、全雙工等。
物理層協議:美國電子工業協會(EIA)的RS232/RS422/RS423等;
國際電報電話咨詢委員會(CCITT)的X.25/X.21等;
物理層的數據單位是位(BIT),典型設備時集線器HUB。
這主要是和硬件有關,與軟件關系不大。
第二層:鏈路層
鏈路層屏蔽傳輸介質的物理特征,使數據可靠傳送。
內容包括介質訪問控制、連接控制、順序控制、流量控制、差錯控制和仲裁協議等。
鏈路層協議有:協議有面向字符的通訊協議(PPP)和面向位的通訊協議(HDLC)。
仲裁協議:CSMA/CD(Carrier Sense Multiple Access with Collision Detection)、Token Bus、Token Ring
鏈路層數據單位是幀,實現對MAC地址的訪問,典型設備是交換機SWITCH。
第三層:網絡層
網絡層管理連接方式和路由選擇。
連接方式:虛電路和數據報服務。
虛電路是面向連接的,數據通訊一次路由,通過會話建立的一條通路。數據報是非連接的,每個數據報都有路由能力。網絡層的數據單位是包,使用的是IP地址,典型設備時路由器Router。
這一層可以進行流量控制,但流量控制更多的是使用第二層或第四層。
第四層:傳輸層
提供端到端的服務,可以實現流量控制、負載均衡。
傳輸層信息包括端口、控制字和校驗和。
傳輸層協議主要是TCP和UDP。
傳輸層位于OSI的第四層,這層使用的設備時主機本身。
第五層:會話層
會話層主要內容時通過 繪畫進行身份驗證、繪畫管理和確定通訊方式。一旦建立連接,會話層的任務就是管理會話。
第六層:表示層
表示層主要是解釋通訊數據的意義,如代碼轉換、格式變換等,使不同的終端可以表示。
還包括加密與解密、壓縮與解壓等。
第七層:應用層
應用層應該是直接面向用戶的程序或服務,包括系統程序和用戶程序,比如www、FTP、DNS、POP3和SMTP等都是應用層服務。
數據再發送時是數據從應用層至物理層的一個大包的過程,接收時是數據從物理層至應用層的一個解包過程。
從功能角度可以分為三組:1/2層解決網絡通信問題,3/4層解決傳輸問題,5/6/7層處理對應用進程的訪問。
從控制角度可分為二組:1/2/3層是通信子網,4/5/6/7是主機控制層。
今天之所以會分享一下這種文章,是因為有小伙伴問小編能不能解釋一下網絡7層協議之間的關系,所以就整理了這么一篇文章,感覺有用的小伙伴記得關注、轉發或收藏哦~如果覺得還有什么疑惑,還請在留言區留言,小編看到或者其他小伙伴看到也會及時給出回復的。