版本(version):4比特(bit),4(二进制0100)表明ipv4,6(二进制0110)表明ipv6;
报文头长度(IHL,IP Header Length):4比特(bit),该值以4字节(Byte)
为一个单位,所以最长能够表示15*4=60字节(Byte);最小为20(不带Option字段),最长为60;
服务类型(TOS,Type of Service):8比特(bit),用于实施QOS,RFC 791中TOS 的IP Precedence分为8个优先级,值越大优先级越高。RFC2474中对TOS从新定义,前6位定义成DSCP,能够标识64中等级,后两位保留;
报文总长度(Total Length):长度16比特(bit),以字节(Byte)
为单位,包含报文头和数据,全部IP报文最长65535字节(Byte),2的16次方等于65536;
标识符(Identification):16比特(bit),主机每发一个报文,加1,分片重组时会用到该字段,与Flags和Fragment Offset联合使用进行分段操做,一个大包分段为多个小包时标记为相同的值;
标记(Flags):3比特(bit),第一位不使用,第二位是DF(Don’t Fragment)位,表示是否分片,0表示能够分片,1表示不能分片;第二位是MF(More Fragment)位,表示该报文是否为最后一片,0表示是,1表示否即还有后续报文;
片偏移(Fragment Offset):13比特(bit),表示分片在原分组中的相对位置,以8个字节
为偏移单位;
生存时间(TTL,Time to Live):8比特(bit),报文发送设备赋值,报文没通过一台路设备,该设备会对TTL值减1,当TTL值为0时丢弃报文,用于防环;
协议(Protocol):8比特(bit),上层所用的协议;
头部校验(Header Checksum):16比特(bit),只检验数据包的首部,不检验数据部分。这里不采用CRC检验码,而采用简单的计算方法;由于路由器须要改变包头里的TTL值,所以路由器须要为每一个包从新计算头部校验值;
源地址(Source Address):32比特(bit), 源IP地址;
目的地址(Destination Address):32比特(bit), 目标IP地址;
可选项(Options):可变长度;主要用于测试,具体见下方
填充(Padding):填充字段,全0,因IP报文头长度单位为32bit(4Byte,),因此报文长度必须为32bit的整数倍。ide
COS、TOS和DSCP:
COS是二层报文优先级IEEE802.1p,TOS和DSCP是三层IP报文头的优先级
COS是字VLAN帧里的802.1Q tag里的一个PRI字段(3bit),表明8个优先级0-7
报文分为三种状况:带优先级和VLAN ID的标签报文,其优先级值是自身带的值;只带优先级的标签报文,此时VLAN ID为0,其优先级值是自身带的值;未带标签的报文,通常默认的优先级值为0,也能够进行更改指定新的优先级。
TOS和DSCP是IP报文头的优先级,不一样的RFC,具体参考QOS;
扩展--可选项(Options):
松散源路由(Loose source Routing):给出一连串路由器接口IP地址,IP包必须沿着这些IP传送,但容许相继的两个IP之间通过多跳;测试