4.3.1 IPv4分組
IP協議定義數據傳送的基本單元——IP分組及其確切的數據格式
1. IPv4分組的格式
IPv4分組由首部和數據部分(TCP、UDP段)組成,其中首部分為固定部分(20字節)和可選字段(長度可變,用于提供錯誤檢測及安全等機制)
1)版本:指IP協議的版本
2)首部長度:占4位,可以表示最大的數為15。以32位為單位,最大值為60B(32 * 15 / 8 = 64B),最常用的首部長度是20B,最小為數字5即(0101),因此取值范圍為(0101 ~ 1111)
3)總長度:占16位,指首部和數據之和長度單位為字節,因此IP數據報的最大長度為 2 16 ? 1 = 65535 B 2^{16} - 1 = 65535B 216?1=65535B,以太網幀的最大傳送單元(MTU)為1500B(IP數據報的長度不能超過此值)
4)標識:占16位,它是一個計數器,每產生一個數據報就加1,并賦值給標識字段。
5)標志:占3位,標志字段最低位為MF,等于1表示后面還有分片,0表示最后一個分片,標志位中間一位為DF,當其為0時才允許分片
6)片偏移:占13位,它指出較長的分組在分片后,某片在原分組中的相對位置。片偏移以 8個字節為偏移單位。除最后一個分片外,每個分片的長度一定是8B的整數倍
7)生存時間(TTL):占8位,數據報在網絡中可通過的路由器數的最大值,為了確保幀不會永遠在網絡中循環,路由器在轉發分組前,先把TTL減1。 若TTL被減為0,則該分組必須丟棄。
8)協議:占8位,指出此分組攜帶的數據使用何種協議(其中TCP協議為6,UDP協議為17)
9) 首部校驗和:占16位。首部校驗和只校驗分組的首部,而不校驗數據部分
10)源地址字段:占4B,標識發送方的IP地址
11) 目的地址字段:占4B,標識接收方的IP地址
首部長度、總長度、片偏移,基本單位 分別為4B、1B、8B
2. IP數據報分片
一個鏈路層數據報能承載的最大數據量稱為最大傳送單元(MTU)
當IP數據報的總長度大于鏈路MTU時,就需要將 IP數據報中的數據分裝在多個較小的IP數據報中,這些較小的數據報稱為片
在目的主機上,使用IP首部中的標識、標志、片偏移來完成對片的組裝
原理:
- 在將數據報進行分片時,形成的每個數據報(片)都具有原始數據報的標識號。因此收到數據后,IP首部的標識相同就說明這些數據屬于同一個原始數據報的片
- IP首部中的標志位占3位,但只有后2位有意義,分別是MF位(More Fragment) 和DF位(Don’t Fragment),DF = 0表示該IP數據報才可以被分片。MF則用來告知目的主機該IP數據報是否為原始數據報的最后一個片。當MF= 1表示相應的原始數據報還有后續的片;當MF = 0表示該數據報是相應原始數據報的最后一個片
- 使用片位移字段來確定該片應該在原始數據報的哪個位置
進行分片時,除了最后一個片,其他所有片的有效數據載荷都是8B的倍數
計算片偏移時,第一個片的片偏移為0,其往后每個片偏移的值為其起始值除以8B