Version (4) Internet Header Length (4) Type of Service (8) Total Length (16) Identification (16) Flags (3) Fragment Offset (13) Time To Live (8) Protocol (8) Header checksum (16) Source Address (32) Destination Address (32) Options (Variable) Padding (0-24) Data
Version 版本(VER)。表示的是IP规格版本目前的IP规格多为版本4(version 4)所以这里的数值通常为 0x4 (注意封包使用的数字通常都是十六进位的)。
Internet Header Length(值5,表示包头长度为5行,即5个32位,5行=5*32bit=20*8bit=20byte=0x14byte) 标头长度(IHL)。从IP封包规格中看到前面6行为header,如果Options和Padding没有的话,也就只有5行,所以这里长度为“5”。我们知道每行有32bit也就是4byte,那麽5行就是20byte了,20这个数值换成16进制就成了0x14,所以当封包标头长度为最短的时候这里数值最终会被换算为0x14。
让我们看看我们撷取的ICMP封包其中属於IP部份的开头
在这里我们看到的数值是“45”前面的“4”就是版本号数而後面的“5”则是标头长度。
Type of Service 服务类型(TOS)。这里指的是IP封包在传送过程中要求的服务类型其中一共由8个bit组成其中每个bit的组合分别代表不同的意思
000..... Routine 设定IP顺序预设为0否则数值越高越优先 ...0.... Delay 延迟要求0是正常值1为低要求 ....0... Throughput 通讯量要求0为正常值1为高要求 .....0.. Reliability 可靠性要求0为正常值1为高要求 ......00 Not Used 未使用
在下例中我们可以看到TOS的值为0也就是全部设置为正常值
Total Length 封包总长(TL)。通常以byte做单位来表示该封包的总长度此数值包括标头和数据的总和。
000. Reserved Fragment 当此值为0的时候表示目前未被使用。 .0.. Don't Fragment 当此值为0的时候表示封包可以被分割,如果为1则不能被分割。 ..0. More Fragment 当上一个值为0时:此值为0就示该封包是最後一个封包,如果为1则表示其後还有被分割的封包。
在下例中我们看到这个封包的标记为“0”也就是目前并未使用。
Fragment Offset 分割定位(FO)。当封包被切开之後由於网路情况或其它因素影响其抵达顺序并不会和当初切割顺序一至的。所以当封包进行切割的时候会为各片段做好定位记录所以在重组的时候就能够依号入座了。
因为我们刚才撷取到的封包并没有被切割所以暂时找不到例子参考在上例中我们看到的FO为“0”。
Time To Live 延续时间(TTL)。这个TTL我们在许多网路设定上都会碰到当一个物件被赋予TTL值(以秒为单位)之後就会进行计时如果物件在到达TTL值的时候还没被处理的话就会被遗弃。不过并不是所有的 TTL 都以时间为单位例如 ICMP 协定的 TTL则以封包路由过程中的跳站数目(Hop Count)做单位。TTL 值每经过一个跳站(或被一个 router 处理)之後就会被减低一个数值。这样当封包在传递过程中由於某些原因而未能抵达目的地的时候就可以避免其一直充斥在网路上面。