4. IP數據報格式

IP數據報的格式如下(這裡只討論IPv4)(該圖出自[TCPIP]):

圖 36.8. IP數據報格式

IP數據報格式

IP數據報的首部長度和數據長度都是可變長的,但總是4位元組的整數倍。對於IPv4,4位版本欄位是4。4位首部長度的數值是以4位元組為單位的,最小值為5,也就是說首部長度最小是4x5=20位元組,也就是不帶任何選項的IP首部,4位能表示的最大值是15,也就是說首部長度最大是60位元組。8位TOS欄位有3個位用來指定IP數據報的優先順序(目前已經廢棄不用),還有4個位表示可選的服務類型(最小延遲、最大呑吐量、最大可靠性、最小成本),還有一個位總是0。總長度是整個數據報(包括IP首部和IP層payload)的位元組數。每傳一個IP數據報,16位的標識加1,可用於分片和重新組裝數據報。3位標誌和13位片偏移用於分片。TTL(Time to live)是這樣用的:源主機為數據包設定一個生存時間,比如64,每過一個路由器就把該值減1,如果減到0就表示路由已經太長了仍然找不到目的主機的網絡,就丟棄該包,因此這個生存時間的單位不是秒,而是跳(hop)。協議欄位指示上層協議是TCP、UDP、ICMP還是IGMP。然後是校驗和,只校驗IP首部,數據的校驗由更高層協議負責。IPv4的IP地址長度為32位。選項欄位的解釋從略。

想一想,前面講了乙太網幀中的最小數據長度為46位元組,不足46位元組的要用填充位元組補上,那麼如何界定這46位元組裡前多少個位元組是IP、ARP或RARP數據報而後面是填充位元組?