IP數據包由報頭和數據兩部分組成。報頭的前一部分是固定長度,共20字節。在報頭的固定部分的后面是可選部分——IP選項和填充域。
首部各字段的含義如下
1、版本
占4位,指IP協議的版本。
2、報頭長度
占4位,該字段的單位是32位字(1個32位字長是4字節),因此當IP報頭長度為1111時,報頭長度就達到最大值60字節。當IP分組的首部長度不是4字節的整數倍是,就需要對填充域加以填充。最常用的報頭長度為20位(報頭長度值為0101),這時不使用任何選項。
3、區分服務(服務類型)
占8位,在一般情況下都不使用這個字段。
4、總長度
指報頭和數據之和的長度,單位是字節。總長度字段為16位,故IP數據報的最大長度為65535。
每一種數據鏈路層都有其自己的幀格式,其中包括幀格式中的數據字段的最大長度,這稱為最大傳送單元MTU。當IP數據報封裝成鏈路層的幀時,此數據報的總長度不能超過對應MTU的值。若數據報長度超過對於MTU的值,就將數據報進行分片處理,此時數據報首部中的“總長度“字段是指分片后的每一個分片的報頭長度和數據長度之和。
5、標識
占16位。IP軟件在存儲器中維持一個計數器,每產生一個數據報,計數器就加1,並賦給標識字段。當數據報進行分片處理后,每個分片的標識值都與原數據報的標識值相同,則在接收端具有相同標識值的分片就能最終正確的重裝成為原來的數據報。
6、標志
占3位,但目前只有兩位有意義。
- 最低位記為MF。MF=1即表示后面”還有分片“的數據包。MF=0表示這已是若干數據包片中的最后一個。
- 中間位記為DF,意思是”不能分片“。只有當DF=0時才允許分片。
7、片偏移
占13位。表示每個數據報的分片在原數據報中的相對位置。片偏移以8個字節為偏移單位,即每個分片的長度一定是8字節的整數倍。
8、生存時間
占8位。表示數據報在網絡中的壽命。最初以秒為TTL值為單位,現在以跳數為單位,則目前的最大數據為255.
9、協議
占8位,指出此數據報攜帶的數據是使用何種協議,以便使目的主機的IP層知道應將數據部分上交給那個處理過程。
TCP對應協議字段值6;UDP對應協議字段值17
10、首部校驗和
占16位,該字段只校驗數據報的報頭,但不包括數據部分。
11、源地址
占32位
12、目的地址
占32位
轉自:http://blog.csdn.net/xieyutian1990/article/details/24179181