Ipv4报文格式

IPv4报文格式(分为20字节的固定部分,表示每个ip数据包必须包含的部分,和40字节的可变长部分) Pv4 头部 = 固定部分(20 字节) + 可选部分(Options,0~40 字节)

  • 版本号(4bit): 协议的版本号。不同版本的协议格式或语义可能不同,现在常用的是IPv4,表示为0100(十进制是4),正在逐渐过渡到IPv6。

  • 首部长度(4): IP头长度,以32位字计数(单位为4字节),最小为5,即20字节,最大为15,即60字节(首部固定部分20字节,单位4字节,所以最小为5)。

  • 服务类型(8): 用于区分不同的可靠性、优先级、延迟和吞吐率的参数。

  • 总长度(16): 包含IP头在内的数据单元的总长度(字节数,头+数据),最长为 65535 字节。

  • 标识符(16): 唯一标识数据报的标识符。该字段用于表示IP数据包的标识符。当IP对上层数据进行分片时,它将给所有的分片数据分配一组编号,然后将这些编号放入标识符字段中,保证分片不会被错误地重组。标识符字段用于标志一个数据包,以便接收节点可以重组被分片的数据包。

  • 标志(3): 包括3个标志,一个是M标志,用于分段和重装配;另一个是禁止分段标志,如果认为目标站不具备重装配能力,则可使这个标志置位,这样如果数据报要经过一个最大分组长度较小的网络,就会被丢弃,因而最好使用源路由以避免这种灾难发生;第3个标志当前没有启用

  • 段偏移量(13): 指明该段处于原来数据报中的位置。指明这个分片举例原始数据开始的位置,作用重组数据。

  • TTL(time to live)生存期(8): 用经过的路由器个数表示。可以防止一个数据包在网络中无限循环的转发下去,每经过一个三层设备 -1,当TTL的值为0时,该数据包将被丢弃 0-255 。(注意经过二层设备不减)

  • 协议(8): 封装的上层哪个协议,ICMP:1 TCP:6 UDP:17

  • 头部校验和(16): 对IP头的校验序列。这个字段只检验数据报的首部,不包括数据部分。这是因为数据报每经过一次路由器,都要重新计算一下首部校验和(因为一些字段如生存时间、标志、片偏移等可能发生变化)

  • 源地址(32): 源ip地址,表示发送端的IP地址

  • 目标地址(32): 目标ip地址,表示接收端的IP地址

  • 可选项: 选项字段根据实际情况可变长,可以和IP一起使用的选项有多个。例如,可以输入创建该数据包的时间等。在可选项之后,就是上层数据