title: 2018.9.2 OSI七層模型及數據的傳輸過程
tags: 計算機網絡, OSI七層模型, 數據傳輸, 數據解封裝
OSI七層模型和TCP/IP五層模型
OSI七層模型
我們說的七層模型第七層都是應用層,第一層是最底下的物理層。
圖中只有物理層之間的線條是實線的,可以將這條線理解為兩台主機之間的網線,連接兩機實現通訊
模型里的每一層都是獨立的,兩台主機之間通信,對應的層使用的協議相同。
應用層可以理解為最接近使用者的一層,我們可以直接使用,例如QQ、微信等軟件,當我們用此類軟件發出一條消息時,最終這條消息的接收方就是目的主機的應用層,但是我們無法直接將信息發送到對方的應用層。所以我們的消息會依次經過以下的每一層,通過不同的協議封裝最終通過網線傳輸到對方電腦,然后在對方電腦一層一層解封裝數據包,最后到達對方電腦的應用層軟件。這里具體的封裝和解封裝過程我們在后面的解封裝過程中詳細說明。
例如下圖(模型圖)
TCP/IP五層模型
在實際的使用中,科學家在每一層中添加對應的協議,發現有其中的表示層和會話層的協議比較少(相對於其他層而言,但也是必不可缺的),於是將這兩層合並到應用層,稱為TCP/IP五層模型。
五層里面每層都有一些協議,但是由於TCP/IP協議的重要性,為了紀念這兩層協議,於是命名為TCP/IP五層模型。
在互聯網所使用的各種協議中, 最重要的 和最著名的就是TCP和IP兩個協議。 現在人們經常提到的TCP/IP並不一定是單指TCP和IP這兩個具體的協議,而往往是表示互聯網所使用的整個TCP/IP協議簇。
TCP/IP五層模型中每一層對應的設備:
數據的封裝和解封裝過程
數據的封裝與解封:
發送時將上一層交下來的數據加上首部和尾部,成為以太網的幀。接收時將以太網的幀剝去首部和尾部,然后送交上一層
數據的封裝過程是自頂向下的,而解封裝過程則相反。
第五層:應用層
應用層是體系結構中的最高層。 應用層的任務是通過應用進程間的交互來完成特定網絡應用。應用層協議定義的是應用進程間通信和交互的規則。 這里的進程就是指主機中正在 運行的程序。
我們在軟件上發出一條消息“hello”,應用層將這條消息處理為一個五層的數據包,這里我們就先認為數據包的內容為我們發出的“hello”消息。
第四層:傳輸層
運輸層的任務就是負責向兩台主機中進程之間的通信提供通用的數據傳輸服務。 應用 進程利用該服務傳送應用層報文。
![傳輸層封裝]!(https://images2018.cnblogs.com/blog/1449724/201809/1449724-20180908001823712-506775068.png)
應用層將消息封裝成數據包后將數據包傳遞到傳輸層,傳輸層會對五層數據包進行進一步的封裝,為該數據包添加一個TCP/UDP頭部(TCP或者UDP二者其中一個,具體取決於軟件選擇那個協議),其中含有源端口號和目的端口號,源端口號即為軟件使用的上一層協議的端口號,目的端口號為接收數據方接收該數據的端口號。例如當我們用IE訪問一個http開頭的網頁時,實際上我們時在訪問對方的80端口。
這個過程中系統會為IE瀏覽器隨機生成一個端口號,假如是1000,我們的數據到了傳輸層,包頭中的源端口號為1000,目的端口號為80。
這里對端口號做一個解釋,我們將兩方進行數據傳輸時,應用層軟件需要使用應用層的協議,使用的協議有其對應着端口號,當有數據發送出去時,數據是從這個端口號發送出去的,而接收方接受數據時,也是根據傳輸層包頭中的目的端口號對數據進行接收。
就像兩個水桶之間轉移水,A水桶需要開一個口讓水流出來,B水桶需要開一個口讓水進去,這里開的口就是上面的端口,端口號就是對這些端口的編號。
第三層:網絡層
網絡層負責為分組交換網上的不同主機提供通信服務。在發送數據時,網絡層把運輸層產生的報文段或用戶數據報封裝成分組或包進行傳送。
在傳輸層中,TCP/UDP包頭為五層數據包提供了目的端口號,但是一個網絡里有那么多主機,數據包怎么才能成功的傳輸到我們指定的主機上呢?所以這里就需要網絡層開始自己的工作了!
類似於傳輸層,網絡層也有一個很重要的協議——IP協議,當四層數據包到網絡層時,網絡層會對該數據包添加一個IP包頭,其中含有數據包的源IP和目標IP,數據傳輸的過程中就是根據這層的目標IP找到需要通信的主機。
前三層的數據包很重要,在一個包中稱為上三層數據,是最有價值的包,不能被別人篡改,一旦被篡改就有可能造成通信出錯或者信息泄露。(例如本來A發給B的數據,上三層數據被篡改后發給了C)
接下來的兩層在網絡中也是必不可少的,雖然上三層在數據包中指明了傳輸的路線,但是上三層數據包是無法通過介質進行傳播的(例如網線、WiFi、光纖),那如果數據包想過介質進行傳播的話怎么辦呢,這就需要用到下面的兩層了。
第二層:數據鏈路層
數據鏈路層主要功能是如何在不可靠的物理線路上進行數據的可靠傳遞。為了保證傳輸,從網絡層接收到的數據被分割成特定的可被物理層傳輸的幀。幀是用來移動數據的結構包,它不僅包括原始數據,還包括發送方和接收方的物理地址以及檢錯和控制信息。
當上三層的數據包到了數據鏈路層,就意味着這個信息已經成功到達計算機的網卡,下一步就可以通過網線傳輸了,這時我們的信息就需要一個載體來進行傳輸,於是在第二層會給上三層數據包加上一個二層頭部(MAC子層)和二層尾部(FCS)。
如同從上海到北京,我們作為乘客,期間可能會換乘很多趟列車,每到一個站點換乘的時候,乘客是不會變的,但是列車變了。在數據鏈路層中也是這樣,在傳輸的過程中,二層的頭部和尾部就相當於列車頭和列車尾,中間的信息就是乘客,乘客不會變化,但在換車的過程中,列車頭和列車尾是會變化的。
MAC子層頭部:
含有源MAC地址和目標MAC地址字段,關於這一塊的內容我們在后面的整理中再學習,這里我們只需要知道每一台主機的MAC地址是唯一固定的。
FCS:幀校驗序列
上三層加上幀頭之后,對中間的信息數據會使用一個循環校驗算法,最終得到一個固定的值,我們可以利用這個值和FCS得出這個數據包的內容是否缺失。
第一層:物理層
在物理層上所傳數據的單位是比特。發送方發送1(或0)時,接收方應當收到1(或0)而不是 0 (或1)。 因此物理層要考慮用多大的電壓代表 “ 1 ” 或 “ 0飛以及接收方如何識別出發送方所發送的比特。 物理層還要確定連接電纜的插頭應當有多少根引腳以及各引腳應 如何連接。
![物理層]
在物理層,相當於網卡二層數據幀包送到網線上,這時候二層的數據幀包會被轉化成一段連續的比特流,然后以電脈沖的形式傳輸到交換機,最后到達目標主機物理層。
物理層的協議產生並檢測電壓以便發送和接收攜帶數據的信號。在你的PC上插入網絡接口卡,你就建立了計算機連網的基礎。換言之,你提供了一個物理層。盡管物理層不提供糾錯服務,但它能夠設定數據傳輸速率並監測數據出錯率。網絡物理問題,如電線斷開,將影響物理層。
以上便是對TCP/IP中各層功能和傳輸數據過程中封裝數據包的的一些說明,而當數據包到達目標主機后,目標主機會對數據包進行一個解封裝,其中過程如下:
實際就是對封裝過程的一個逆操作,至於其中具體的一些知識點我們在后面的整理中再進行學習。