IP数据报的报文分析

时间:2024-05-20 09:25:48

IP协议又叫网际协议,是TCP/IP协议体系中最重要的协议之一,而遵循相同IP协议的物理网络实现了虚拟互联网络,而这种虚拟的互联主要得益于他们遵守相同的数据传输的格式,这种格式的规定主要通过IP协议的报文头部来实现。
先放一张IP协议的报文。
IP数据报的报文分析

  1. 4位的版本,指明IP协议的版本,通信双方只有使用相同的IP版本才能够实现通信,常用的IP协议版本有ipv4和ipv6.
  2. 首部长度,表示IP报文头部的长度,由于占四位,所以能表示的最大数是15,但是单位是32位,也就是4字节,所以IP报文的最大长度是15*4=60字节。一般报文首部的长度为20字节,也是固定长度,做多扩展到60字节。
  3. 服务类型,占8位,一般情况下不使用。
  4. 总长度,占16位,表示的是首部和数据的总长度,单位是字节,所以数据报最大的长度是216-1=65535个字节,但是由于在数据链路层中规定了一个数据帧中数据字段的最大长度,也就是IP报文的最大长度MTU,所以实际上长度的大小取决于这里。
  5. 标识,占16位。每产生一个数据报,内部存储器会维持的计数器就会加一,用来标识一个数据报。但是由于报文长度有规定,所以当报文过长时会进行分片,即将原来的报文的数据部分分成多个部分,加上报文头部组成新的报文,分片之后的报文的标识相同,便于接收后进行重装。
  6. 标志,占3位,但是只有前面两位有用处。
    最低位标志为MF,当MF=1,表示还有分片,当其为0表示没有分片,一定是最后一片。
    中间位标志位DF,当DF=0时才允许进行分片。
  7. 片偏移,占13位指的是该片在原片中的相对位置,单位是8个字节,所以分片的长度是8字节的整数倍。

IP数据报的报文分析

  1. 生存时间,占8位,用来限定报文的跳数,即报文没在路由中转发一次,他的大小就减去1,如果减到0就丢弃该报文,这样做的目的是防止报文无限制的转发,消耗网络的资源。

  2. 协议,占8位,表示数据报中的数据部分遵循的协议,主要是让IP层知道上交到哪个上层协议进行处理。

  3. 首部校验和,占16位,这里的校验值校验首部,而不是数据部分,校验的方式是讲头部划分成多个16位的序列,首部校验位值全0,,将这些序列进行反码算数运算(相同为0,不同为1,互相异或),将结果写入首部校验和,接收方也做同样的操作,得到的结果取反码,根绝异或性质,如果为0,这说明头部正确,保留该报文。

  4. 源地址,占32位,表示发送方的IP地址。

  5. 目的地址,占32位,表示接收方的IP地址。