關於七層模型和四層模型可以參考這個:http://www.cnblogs.com/xcywt/p/5027277.html
因為四層模型用的比較多,這里只拿四層模型來分析。
1、四層模型中的最下層是鏈路層,傳輸的是以太網數據幀。主要有三種格式的以太網數據幀。這里暫時不做詳細分析
2、IP數據報格式
1)版本:IP協議版本號,IPv4版本這個值為4。IPv6這個值為6
2)頭長度:表示頭部的長度,單位是4字節。比如這個數為5,表示IP頭部長度為20個字節。所以我們也可以知道IP長度最大為4x15 = 60個字節。
3)服務類型(TOS):包含3位優先權(現已忽略)、4位的服務類型子字段、1位保留位(必須位0)。
4)總長度:16位。以字節位單位,包含頭部和數據部分總長度。最大可為65535個字節
5)封包標識:用來標識一個IP包,每發送一個此值會加1。
6)標志與片偏移:
標志:3位的標志第一位不使用。第二位DF(Do not Fragment)為1表示不分片。若超過最大傳輸單元則會被丟棄,並發送一個ICMP差錯報文。第三為MF(More Fragment)為1表示后面還有包。最后一片的MF為0.
片偏移:IP分片后每一個分組都有自己的首部。但是片偏移不同.,通過片偏移接收端可以重新組裝IP包。
7)存活時間(TTL):Time to live。 表示數據報最多可經過的路由器的數量。數據報每經過一個路由器TTL會減一,直到為0就會被丟棄,並發送ICMP報文通知源主機。這樣可以防止數據包一直在網絡中傳輸下去。
8)協議:表示IP層承載的是哪個高級協議。在封裝與分用過程中,協議棧知道該交由哪個層的協議處理。下面是對應值:
1-ICMP,2-IIGMP,6-TCP,7-UDP
9)校驗和:保證數據頭部的完整性,但是不校驗數據部分。校驗方法是網際校驗和
因為上層的協議都有自己的校驗和,這里不需要重復校驗
還有就是每經過一個路由器頭部都會發生變化,但是數據部分不變。
只校驗頭部比較省時間。
10)源IP地址:發送數據的主機IP地址
11)目的IP地址:接受數據的IP地址
12)選項與填充(選項為4字節整數倍,不足則用0填充):
內容有:
a:安全和處理限制
b:路徑記錄:記錄所經歷路由器的IP地址和時間
c:寬松源站路由:指數據報文必須經歷的IP地址,可以經過沒有指定的IP地址
d:嚴格的源站路由:指定數據報文必須經過的IP地址,不能經過沒有指定的IP地址
3、封裝與分用
假設主機A發送數據給主機B,一般流程是這樣:A應用層數據-》A的傳輸層-》A的網絡層-》A的鏈路層 -》 網絡上找到B,並發送給B的鏈路層 -》 B的網絡層 -》 B的傳輸層 -》 B的應用層。就是下面這幅圖:
封裝(Encapsulation):從上到下。將數據打上一定的頭部。
應用程序用TCP傳輸數據的時候,數據被送入協議棧中,然后逐個通過每一層,直到最后到物理層數據轉換成比特流,送入網絡。在這個過程中,每一層都會對要發送的數據加一些首部信息。
分用(解封(Demultiplexing)):從下到上,將數據頭部進行拆開
從下網上時再逐一將對應層的頭部去掉,一層一層剝離。直到應用層。
分用就是剛好反過來。
還有一些更好的圖可以參考:
https://www.cnblogs.com/starof/p/6367020.html
https://www.cnblogs.com/qishui/p/5437301.html