OSI七層網絡模型


一、OSI七層網絡模型簡介

1、OSI的前世今生

OSI(Open System Interconnect),即開放式系統互聯。是OSI組織為了互聯網各層之間協作而制定的標准模型。再具體點來說是為了使互聯網各個基礎組件廠商統一標准而制定的標准,這樣就能實現互聯了。

2、OSI七層模型的划分

OSI划分為:物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層

 

 3、OSI的分層設計思想

OSI嚴格遵守了“高內聚、低耦合”的互聯網設計思想,在OSI七層模型中每層只關注本層的實現,向上只提供標准接口,它不需要其它層的實現,各司其職。

 

二、各司其職

一張圖先了解各層間的基本功能

 

 

 

物理層

OSI模型的第一層,最終數據的傳輸通道。物理層顧名思義就是最靠近物理傳輸設備的一層。物理媒介包括光纖,網線,等。改成的主要作用是實現相鄰計算機間的比特流傳輸,盡可能屏蔽掉具體傳輸介質和物理設備的差異。盡量對上層也就是數據鏈路層屏蔽掉其不需要考慮的物理介質差異,對其提供統一的比特流傳輸調用方式。

物理層的主要功能:屏蔽物理媒介差異,為數據鏈路層提供統一的物理比特流傳輸能力。

數據單元:比特

實例:光纖、網線、集線器、中繼器、調制解調器等。

舉個例子,早前的電話機,你在北京,你女朋友在上海,你倆打個電話就能通話了。為什么?因為中間有根電話線。物理層你就可以這么簡單的理解和記憶。

 

數據鏈路

該層主要負責建立和管理不同計算機節點間的數據鏈路,並提供差錯檢測、封裝成幀、透明傳輸的能力。數據鏈路層又分為兩個層:媒體訪問控制子層(MAC)和邏輯鏈路控制子層(LLC)

媒體訪問控制子層(MAC)

MAC地址你一定不會陌生。每台計算機都有自己的全網唯一的MAC地址,如下圖你也可以看看自己的MAC地址。MAC子層的主要任務是解決共享型網絡中多用戶對信道競爭的問題,完成網絡介質的訪問控制。實現這個功能的是集線器。用集線器組網,檢查計算機與計算機之間有沒有沖突,避免沖突的協議叫CSMA/CD協議。

 

 

 邏輯鏈路控制子層(LLC)

主要任務是建立和維護網絡連接和鏈路控制。

數據鏈路層的主要功能:將不可靠的物理信道變成無差錯的、能可靠傳輸數據幀的數據鏈路,即:數據的差錯檢驗、封裝成幀、透明傳輸。

數據單元:幀

實例:網卡、MAC地址、以太網、交換機

MAC地址:(英語:Media Access Control Address),直譯為媒體存取控制位址,也稱為局域網地址(LAN Address),MAC位址,以太網地址(Ethernet Address)或物理地址(Physical Address),
它是一個用來確認網絡設備位置的位址。在OSI模型中,第三層網絡層負責IP地址,第二層數據鏈路層則負責MAC位址 。MAC地址用於在網絡中唯一標示一個網卡,一台設備若有一或多個網卡,則每個網卡都需要並會
有一個唯一的MAC地址 。(摘自百度百科)解釋的很詳細了。 大白話解釋一遍。網卡廠商將MAC地址燒錄在計算機BISO中,MAC地址能保證一台計算機是世界范圍內的唯一性,就像你的身份證。嗯?不是一個IP代表一台計算機嗎?有這個疑問接着往下看 MAC地址的作用: 如今比較流行的組網方式是一個邏輯整體(公司,學校等)或者一個區域組一個局域網,再通過交換機接入Internet。因為在局域網中IP只是邏輯上的划分,不信你可以在你所在的公司或者學校修改一下自己的IP
(最好是最后一段),依然能夠連上網絡。這樣的話,每個人都可以隨意修改IP,IP
!= 用戶。所以MAC地址這個時候就有用了,只有MAC地址才能表示用戶。交換機中保存了 MAC <-> IP 的映射關系。局域網訪問互聯網的唯一通道就是交換機。 記住上面一段。關於網絡尋址這這是很基礎的一步。

 

網絡層

顧名思義就是實現網絡互聯的關鍵所在。該層通過IP將大大小小的局域網形成一個互聯互通的互聯網。在計算機網絡中進行通信的兩個計算機之間會經過很多個數據鏈路,也可能還要經過很多通信子網。網絡層的任務就是為兩台通信的計算機之間選擇合適的路由和交換節點,確保數據及時傳送。網絡層將數據鏈路層提供的數據幀組成數據包,包中有網絡層包頭,也就是IP相關信息,以便路由。

網絡層的主要功能:通過IP地址,實現網絡尋址,即IP尋址,通過路由算法進行最優的網絡路由。

數據單元:數據包

網絡路由聽起來有些抽象,個人認為該層最重要的能力是IP尋址,也就是在互聯網中,通信的兩台機器要互相找到對方。網絡路由也就是路由算法,其作用就是在上面的尋址過程中,選擇一條最優路線。

傳輸層

如第一章節:建立主機端到端的連接。重點在哪?“端”,怎么理解呢?如果你是一個程序員相信你一定知道端口這個東西,沒錯上述三層實現了互聯網,也就是實現了兩台機器間的互聯互通。但是一台計算機上往往有好多應用程序,端口是用來區分不同應用程序的方式,每個應用程序都有各自的端口。很簡單的一個道理,QQ用戶能給微信用戶發送即時消息嗎?不能,為什么?這就是傳輸層的作用。傳輸層的作用是為上層協議提供端到端的可靠和透明的數據傳輸服務。包括處理差錯控制和流量控制等。該層向上層應用屏蔽了底層通信細節。上層應用只需要按照傳輸層的規范,向傳輸層提交數據傳輸任務,其余的事情不需要上層應用關系。我們常見的TCP/IP協議中的TCP就作用在這一層。

傳輸層的主要功能:傳輸層的作用是為上層協議提供端到端的可靠和透明的數據傳輸服務,並提供差錯控制和流量控制等功能。

 

以下幾層不是很重要因為你應該知道TCP/IP協議。后續會詳細介紹。

數據單元:稱作數據包(packets)。但是,當你談論TCP等具體的協議時又有特殊的叫法,TCP的數據單元稱為段(segments)而UDP協議的數據單元稱為“數據報(datagrams)”。

實例:TCP、UDP

會話層

 會話層就是負責建立、管理和終止表示層實體之間的通信會話。該層的通信由不同設備中的應用程序之間的服務請求和響應組成。

會話層是什么?給你一個通俗易懂的答案:假如你了解session+cookie機制,相信你就明白了,這種session+cookie的機制就是會話層的實現。

表示層

如上所述,該層主要作用是數據格式的編碼和轉換。有點抽象?HTTP請求頭/響應頭 Content-Type:application/json; charset=utf-8 。這就是規定雙方協商的數據格式: application/json; 和編碼格式: charset=utf-8; 

應用層

OSI應用層是最靠近上層開發者的一層,這一層就是將通信模型定制化成一個協議,比如適合於超文本傳輸的協議HTTP,具備安全性傳輸的HTTPS,還有一些比如FTP,POP3,SMTP等。

這一層可以這樣理解,將下面幾層根據場景具象,形成的一個提供給上層開發者應用的協議層。

 

 三、數據封裝與解封裝

先看一下數據的傳輸過程



數據的流向是 發送端A-->接收端B,然后途徑兩個過程
A:應用層 --> 物理層:數據封裝過程
B:物理層 --> 應用層:數據解封裝過程
接下來看數據的封裝和解封裝過程

3.1、數據封裝過程

數據從應用層開始向下層流動,經過層層封裝,最終在物理層轉為字節流發送到接收方。
> 注意以下 源 == 發送方,目標 == 接收方
經過傳輸層:加上TCP頭,組成數據段,所謂的TCP頭主要就是加上對源端口和目標端口的描述。
經過網絡層:加上IP頭,組成數據包,IP頭其實就是源IP和目標IP。
經過數據鏈路層:加上MAC頭,組成數據幀,MAC頭其實就是源MAC和目標MAC。另外還有一個LLC頭和一個FCS幀尾標識(用於差錯檢測)
經過物理層:將數據幀轉為bit流,發送到接收方。

PS:以上過程你需要注意的是IP頭,MAC頭不是用於兩台主機的,而是用於網絡尋址的。下章節會介紹這個。真正需要計算機解析的是TCP頭,
因為TCP頭上是端口信息,簡單的理解端口對應的是進程或者應用程序,接收端主機收到這些數據只需要將數據導向對應的應用程序即可。
而IP和MAC是網絡尋址才會用到的部分。這也是OSI的設計思想,高內聚、低耦合,各層只需要專注各自的實現細節。

 

3.2、數據解封裝過程

對應數據封裝過程,解封裝過程數據從物理層向上層流動,最終經過層層解封,到達對應的應用程序。

 

四、TCP/IP協議

首先給你解決一個疑問,OSI參考模型不是標准也不是協議,而是一個指定標准時所使用的概念框架。TCP/IP是OSI參考模型的實現。也就是說TCP/IP才是真正的實現。所以TCP/IP才是協議,而OSI只是參考模型。

PS:當然也有一個組織根據OSI參考模型指定了OSI七層網絡模型,但是OSI模型的專家缺乏實戰經驗,導致很難適用於實際使用場景。

TCP/IP協議是四層模型:應用層、傳輸層、網絡層、網絡接口層

 

如上圖所示,OSI與TCP/IP協議在分層上稍有區別,OSI注重於各個層的功能划分,TCP/IP協議注重各層功能實現需要開發哪種程序。由此不難看出,OSI只是理論參考模型,而TCP/IP才是實戰產物。

TCP/IP協議是單純的TCP+IP的協議嗎?不是的,TCP/IP協議是一個協議簇,如上圖所示、其中包括常見的http、https、ftp、udp等等。

重點:我們需要知道的是OSI模型偏重於理論,TCP/IP偏重於實戰。

 


免責聲明!

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



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