1. 程式人生 > 其它 >深入淺出OSI七層參考

深入淺出OSI七層參考

本篇部落格是筆者閱讀《圖解TCP/IP》所記錄下的筆記,有興趣的朋友可以去看一看這本書。

OSI七層參考模型

​ 本小節以電子郵件通訊為例,分別來闡述OSI七層模型的每一層是如果進行通訊處理的。

​ 假定使用者 A要給使用者B發一封電子郵件 “早上好!”,在使用者A和使用者B的通訊過程中,網路是如何處理的呢,下面對應著OSI七層參考模型,從上至下來分析一下。

應用層

​ 使用者A在主機A上新建一封電子郵件,指定收件人為主機B上的使用者B,並輸入郵件的內容 “早上好!”。

​ 接收和傳送郵件的軟體,從功能上可以分為兩大類,一類是與通訊無關的功能,例如:新建郵件,指定收件人,輸入郵件內容為 “早上好”,這部分功能就是與通訊無關的功能。而另一類就是與通訊有關的功能,在使用者點選 “傳送” 按鈕的那一刻,就開始進行了應用層協議的處理。

​ 該協議會在所要傳輸資料的前端附加一個 “首部” 標籤,其中包含的資訊有:郵件的內容 "早上好",收件人B(目標主機)。

因此,此處的 輸入電子郵件內容後傳送給目標地址 也就相當於應用層。

表示層

​ 表示層具有 “表示“,”演示“的意思,因此更關心 資料格式①的表現形式,此外應用軟體的本身不同也會導致資料格式的表現形式截然不同, 例如使用者A與使用者B所使用的客戶端軟體(qq郵箱,網易郵箱,Google郵件)不同,或者使用者A與使用者B所使用的終端裝置不同,就有可能會造成資料格式的不同。

​ 可以利用表示層來解決這類問題,通過表示層將資料從 “某個計算機特定的格式” 轉換為 “統一的網路資料格式” ,在將 "統一的網路格式" 恢復為 "某個計算機的特定格式",從而進行資料的在網路中的準確傳輸,然後再進行相應的處理,如果未能按照特定格式編碼進行轉換,有可能在客戶端收到的電子郵件中出現亂碼的情況。

​ 因此,表示層與表示層之間為了識別編碼格式也會附加首部資訊,從而將實際傳輸的資料交給下一層處理,將資料從主機的特有格式到網路標準的傳輸格式之間的相互轉換就是表示層所做的事情

①資料格式:是資料儲存在檔案或記錄中的編排格式,最典型的漢字的編碼格式有GB2312 、BIG 、ISO8859-1等。

會話層

會話層主要是決定資料以何種方式建立連線。例如使用者A向用戶B傳送5封郵件,此時使用者A向用戶B建立連線的方式有多種,1.可以每傳送一封郵件建立一次連線,隨後斷開。 2.可以建立一次連線傳送5封郵件。 3.可以同時建立5個連線,同時傳送郵件。

​ 會話層也像應用層和表示層那樣,在其收到的資料前端加上首部標識,其中包含在建立連線的方式,然後再轉發給下一層。

傳輸層

​ 到此為止,我們通過例子說明了在應用層寫入資料會經由表示層格式化編碼,再由會話層標識以何種方式進行資料傳輸的大致過程,然而會話層並不具備傳輸資料的功能。真正負責在網路上傳輸具體資料是會話層以下的 “無名英雄”。

​ 主機A確保與主機B之間的通訊並準備傳送資料。這一過程叫做 ”建立連線“。有了這個通訊連線就可以使主機 A傳送電子郵件到達主機B,並有主機B處理程式獲取最終資料。當傳輸結束後,則需要將連線斷開,減少資源的浪費。

​ 如上,進行建立連線或斷開連線的處理,在兩個主機之間建立邏輯上的通訊連線既是傳輸層的主要功能。此外,傳輸層為確保所傳輸的資料到達目標地址,會在通訊兩端的計算機進行確認,如果資料沒有到達目標主機,或者因為網路波動的原因,資料有所缺失,他會負責重新發送。在傳輸層保證了資料的可靠傳輸

網路層

​ 然而,實際上將資料傳輸給對端的處理是由網路層來完成的,網路層負責將資料傳送至最終的目的地址,這個地址是進行通訊的網路中唯一指定的序號,也可以把他想象中我們日常生活中的手機號碼,這要這個地址確定了,就可以在眾多將計算機中選出該地址所對應的主機發送資料。

​ 在不同的網路體系結構下,網路層又是也不能保證資料的可達性。例如在TCP/IP 網路層的IP協議中,就不能保證資料一定會發送都對端地址。因此,資料傳輸過程中,會出現資料丟失,資料順序混亂等問題,想這樣沒有可靠性的傳輸的網路層中,可以由傳輸層負責提供 “正確傳輸資料的處理 ”。TCP/IP中,網路層與傳輸層相互協作,從在最終保證了資料的可靠性、有序性傳輸。

資料鏈路層、物理層

​ 通訊傳輸實際上是通過物理的傳輸介質實現的。資料鏈路層的作用就是在這些通過傳輸介質互聯的裝置上進行資料處理。

​ 物理層中,將資料的0,1轉換為電壓和脈衝光傳輸給物理的傳輸介質,而相互直連的裝置通過地址進行傳輸,這種地址稱之為MAC地址,也可以稱之為硬體地址,或者實體地址。因此在這一層中,將包含MAC地址的首部附加到網路層轉發過來的資料上,在將其傳送到網路上。

​ 網路層與資料鏈路層都是基於目標地址將資料傳送給接收端,但是網路層負責將整個資料傳送給目標地址,而資料鏈路層則負責傳送一個分段內的資料。