1. 程式人生 > >OSI七層網路模型

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偏重於實戰。

&n