---------------------------------------------
4 4 8 16
版本 头部长度 服务类型 总长度
---------------------------------------------
16 3 13
标识符 标记 分片偏移
---------------------------------------------
8 8 16
生存时间 协议 头部校验
---------------------------------------------
32
源地址
---------------------------------------------
32
目的地址
---------------------------------------------
24 8
可选项 填充项
---------------------------------------------
版本version:二进制的0100表示ipv4
头部长度header length:比特位为4位,最大数值用二进制表示就是1111,1+2+4+8等于十进制的15,包头长度是指包含多少个32位,15*32=480,1byte=8bit,480/8=60byte,所以ip包头最大长度为60字节,一般的ip包头为0101,即最小长度为20字节。
注:字节是计算机中数据处理的基本单位,计算机以字节为单位解释和存储信息。
服务类型Type of Service:优先权precedence和TOS,前者用于Qos应用。
总长度Total Length:1111111111111111用16进制表示最大65535,也是ip数据包最大长度。
标识符Identifier:通常与标记字段和分段偏移字段一起用于数据包的分段。
eg:一条MTU为1500字节的数据链路,即数据帧最多容纳大小为1500字节的数据包,路由器需要在数据成帧前将数据包分段成多个数据包,每个不能超过1500字节;然后由路由器在每片数据包的标识字段上打上相同的标记,以便接受设备识别。
注:帧Frame:在网络中,网络设备将“位”组成一个个的字节,然后这些字节“封装”成帧,帧是网络传输的最小单位,对于集线器来说,帧是没有意义的,因为它是物理层设备,只认识脉冲电流。
标记字段Flag:第一位不用,第二位是不分段位,当DF=1时,表示数据包不能对数据包进行分段处理,如果数据包由于不能被分段而未能被转发,那麽路由将丢弃该包并向源点发送错误消息。第三位MF,表示有更多分段,当路由器对数据包进行分段时,除了最后一个分段MF位为0外,其他都为1,使接受者收到MF位为0为止。
分段偏移Fragment Offset:ip包分段到达的顺序错误时,可以使接受者按照正确的顺序重组数据包。如果某个分段丢失,必须在网络中同一点对整个数据包重新分段并重新发送。
生存时间TTL:当IP包经过每一个沿途的路由器的时候,每个沿途的路由器会将IP包的TTL值减少1。如果TTL减少为0,则该IP包会被丢弃。这个字段可以防止由于故障而导致IP包在网络中不停被转发,缺省值建议为64,不管时延,实际上是表示跳数。
像IOS软件中的trace命令使用的就是TTL字段。
协议Protocol:指定了数据包中信息的类型。
eg:1-ICMP;6-TCP;7-UDP;89-OSPF
头部校验Header Checksum:由于IP包头是变长的,所以提供一个头部校验来保证IP包头中信息的正确性。
源地址和目的地址Source and Destination Address:发送者数据包源点和目的地的ip地址。
可选项Options:主要用于测试
填充padding:在可选字段后面添加0来补足32位,保证报头长度是32位的倍数。