IPv4數據報文包含IP首部與數據兩部分,其中IP首部前一部分固定為20字節,首部的固定部分后面的為可選項,長度可變。
IPv4報文格式如圖:
1、版本(version):占4位,表示IP協議的版本,常用版本號為4,故稱為IPv4。還有IPv6
2、首部長度(Header Length):占4位,最大為1111-〉15,表示占32bit(4字節)的數目,因此首部最長為60字節,普通IP數據報字段值為0101-〉5,即20字節。首部長度必須為4字節的整數倍,不足則填充。
3、區分服務(Differentiated Services):又名服務類型 ,區分服務時使用。
4、總長度(Total length):首部與數據長度之和。占16位,最大為65535字節。
5、標識(identification):標識數據報,占 16 位。IP 協議在存儲器中維持一個計數器。每產生一個數據報,計數器就加 1,並將此值賦給標識字段。當數據報的長度超過網絡的 MTU,而必須分片時,這個標識字段的值就被復制到所有的數據報的標識字段中。具有相同的標識字段值的分片報文會被重組成原來的數據報。如圖中兩個分片報文標識一致。
6、標志(flag):占3位。第一位未使用,其值為0。第二位為 DF,為0表示允許分片;為1表示不允許分片。第三位為 MF,為0表示沒有更多分片需要發送,或數據報沒有分片;為1標識還有更多分片。
7、片偏移(fragment offset):占13位。當報文被分片后,該字段標記該分片在原報文中的相對位置。8個字節為單位,所以偏移值是8字節(64 位)的整數倍。
8、生存時間(TTL):占8位。表示數據報可以經過的最多路由器數。由發包的源主機設置,每經過一個處理它的路由器,值減1,為0時丟棄該報文
9、協議(Protocol):占8位,表示該數據報文所攜帶的數據使用的協議類型。如ICMP:1,TCP:6,UDP:17
10、首部檢驗和(checksum):占16位,只校驗數據報的首部,不校驗數據部分,使用反碼算術運算。
11、源地址(Source):占32位,源IP地址
12、目的地址(Destination):占32位,目的IP地址
13、可選字段
14、填充:填充0可保證首部是4字節的整數倍
15、數據部分