版本:IP协议的版本,目前的IP协议版本号为4 = 0100下一代IP协议版本号为6 = 0110。
首部长度:IHL,IP报头的长度。固定部分的长度(20字节)和可变部分的长度(可选项+padding)之和。共占4位。最大为1111,即10进制的15,代表IP报头的最大长度可以为15个32bits(4字节),也就是最长可为15*4=60字节,除去固定部分的长度20字节,可变部分的长度最大为40字节且由于IP报头宽度为4字节,所以IP报头长度必然为4字节的整数倍。
服务类型:Type Of Service。
总长度:IP报文的总长度。报头的长度和数据部分的长度之和。
标识:唯一的标识主机发送的每一分数据报。通常每发送一个报文,它的值加1。当IP报文长度超过传输网络的MTU(最大传输单元)时必须分片,这个标识字段的值被复制到所有数据分片的标识字段中,使得这些分片在达到最终目的地时可以依照标识字段的内容重新组成原先的数据。
标志:共3位。R、DF、MF三位。目前只有后两位有效,DF位:为1表示不分片,为0表示分片。MF:为1表示“更多的片”,为0表示这是最后一片。
片位移:本分片在原先数据报文中相对首位的偏移位。长度为13位,由于IP数据包最大为65535,显然需要16位来表示偏移,所以规定分片偏移的1 = 8B来满足需求。
生存时间:IP报文所允许通过的路由器的最大数量。每经过一个路由器,TTL减1,准确的说是当数据包解封装再封装一次,TTL减一。当为0时,路由器将该数据报丢弃,并向源主机发送一个目的地址不可达的ICMP报文。TTL 字段是由发送端初始设置一个 8 bit字段.推荐的初始值由分配数字 RFC 指定,当前值为 64。发送 ICMP 回显应答时经常把 TTL 设为最大值 255。
协议:指出IP报文携带的数据使用的是那种协议,以便目的主机的IP层能知道要将数据报上交到哪个进程(不同的协议有专门不同的进程处理)。和端口号类似,此处采用协议号,TCP的协议号为6,UDP的协议号为17。ICMP的协议号为1,IGMP的协议号为2.
首部校验和:计算IP头部的校验和,检查IP报头的完整性。
源IP地址:标识IP数据报的源端设备。
目的IP地址:标识IP数据报的目的地址。
可选项: 做测试用,包括4个选择项
它给出了一连串路由器接口IP序列。数据包必须沿着该地址序列传输,但是中间允许跨越其他路由器,当数据包到达目的路由器接口时,检查序列是否匹配,如不匹配,则丢包。
它也给出了一连串的接口IP序列,但更。数据包必须沿着改地址序列传输,但中间不允许传输到其他下一跳接口,它对下一跳接口做严格匹配,如果不匹配,则在传输过程中被丢弃。
当数据包离开时为每台路由器提空空间记录数据包的出站接口地址,以便保存数据包所经过的所有路由器的记录,类似于traceroute的功能,但是记录路由能在往返双向上记录出接口信息。
除了每台路由器还会记录一个时间戳外,时间戳选项十分类似于记录路由选项,不仅记录数据包经过了哪里,而且记录经过的时间。
Pedding:填充字段,由于可选项的具体长度是不固定的,为了保持IP数据包宽度为4字节 = 32位,pedding字段负责用0填充补全不足32位的位。