IP 包头:

TCP/IP review之 IP 协议_IE

Version:4bit,4或者6,其他数字暂无实际用途。

Header Length:  4bit, 由于后面的options是可变的,所以需要此参数。IP包大小20-24 Octets。

TOS:8bit, 前三位为precedence,后5位为TOS。

Total Lenght: 16bit, 使得IP包的理论值大小为65535 Octets

Identifier: 16bit,配合后面flags和fragment。当单个数据包超过数据链路层允许的最大size时候,需要将包拆分,同一个包拆分出来的小包被标记以相同的Identifer。(注意:大包始终是被拆分的,直到到达最终目的地)

 Flags: 3bit, 第一位无用。第二位叫做DF(Don't fragment,不要拆分),当DF设定为1的时候,路由器不能拆分包。这个功能可以用于测试路径的MTU,路由器扩展ping里面有此选项。第三位叫做MF(More fragment,还有拆分包),除了最后一个fragment之外,所有其他fragment包MF都为1,这样路由器一直期待下一个fragment直到收到MF为0的包。

Fragment offset:13bit,该字段对包含分段的上层数据包的IP包赋予序号。由于IP包在网络上传送的时候不一定能按顺序到达,这个字段保证了目标路由器在接受到IP包之后能够还原分段的上层数据包。当到某个包含分段的上层数据包的IP包在传送是丢失,则整个一系列包含分段的上层数据包的IP包都会被要求重传。

Time To Live(TTL):8bit,包创建时产生,每经过一个路由器,减少一次,到0时,包被丢弃。

Protocol:8bit,负载的协议号。 TCP---6,UDP---17,EIGRP---88,OSPF---89。

Header Checksum:16bit,包头校验值,只负责包头校验,UDP、TCP、ICMP都有自己的校验值。因为每一跳TTL都在减少,所以包头校验值必须在每个路由器上计算。

Source/Destination IP address:32 bit。 IP地址。

Options:主要用于测试目的。所有测试功能,都能在扩展Ping命令中实现。

Padding:通过增加0,保证包是以32 bit整数组成。