IPv4报文格式
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、数据部分