IP报文格式
如下,为IP报文格式:
字段解释
版本:占4比特。用来表明IP协议实现的版本号,当前一般为IPv4,即0100。
报头长度:占4比特。是头部占32比特的数字,包括可选项。普通IP数据报(没有任何选项),该字段的值是5,即160比特=20字节。此字段最大值为60字节。
区分服务:占8比特。以3:4:1的比例分开,其中前3比特为优先权子字段(Precedence,现已被忽略)。第8比特保留未用,置0。第4至第7比特分别代表延迟、吞吐量、可靠性和花费。当它们取值为1时分别代表要求最小时延、最大吞吐量、最高可靠性和最小费用。此字段多于QoS相关。
总长度:占16比特,表示IP数据包的长度,最大为65535。
标识:占16比特,用来唯一地标识主机发送的每一份数据报。通常每发一份报文,它的值会加1。
标志:占3比特,以1:1:1分开,第一比特为df位,表示不允许分片,当数据包长度大于MTU,需要分片时,df位置1则表示直接丢弃此数据包。第二比特为mf。用于指明当前报文是否为分段的最后一个包。若数据报需要分段,mf为1,则说明后面还有报文,mf为0,则表明这是此数据报最后一段。第三比特未使用。
片偏移:占13比特。如果一份数据报要求分片的话,此字段指明该段偏移距原始数据报开始的位置。
生存时间(TTL):占8比特,代表数据包最多能经过的路由器数,每经过一个路由器,此值会减一,当TTL等于0,该报文被丢弃。由数据报源主机设置,一般为32、64、128等。此值是避免在环路上,数据包被无限转发。
协议:占8比特,表明IP报文封装的上层协议类型,常见值有:ICMP(1)、IGMP(2) 、TCP(6)、UDP(17)等。
首部校验和:占16比特。内容是根据IP头部计算得到的校验和码。注意:首部校验和,和tcp/udp等协议不同,IP不对头部之后的数据进行校验。用于确认数据包是否被篡改等。
源IP地址:占32比特,发送IP数据报文的源主机地址。
目标IP地址:占32比特,接收IP报文的目标主机地址。
可选项字段:占32比特,用来定义一些任选项:如记录路径、时间戳等。这些选项很少被使用,同时并不是所有主机和路由器都支持这些选项。可选项字段的长度必须是32比特的整数倍,如果不足,必须填充0以达到此长度要求。