IP协议(网络层协议)

1 IP协议功能

  • 寻址和路由
  • 传递服务
    • 不可靠,可靠性由上层协议提供
    • 无连接
  • 数据报分段和重组

2 IP协议

IP数据报格式

这里写图片描述

其中固定部分为20byte,可变部分最大为40byte,因此IP数据报的首部大小为20~60byte。

版本

  • 占4bit,指IP协议的版本。目前的IP协议版本号为4,即IPv4

首部长度

  • 占4bit,可表示的最大数值是15个单位(一个单位为4字节),因此IP首部长度的最大值是60字节

服务类型

  • 指示期望获得哪种类型的服务
  • 1998 年这个字段改名为区分服务
  • 只有在网络提供区分服务(DiffServ)时使用
  • 一般情况下不使用,通常IP分组的该字段(第2字节)的值为00H
  • 占8bit,用来获得更好的服务,这个字段以前一致没有被人使用。其中D表示延时,T表示吞吐量,R表示可靠性,C表示代价。最后一位没有使用,但是必须为0,否则非法
  • 现在常用的为差分服务,最后两位未使用。如果前6位为XXXXX0的形式表示该IP数据报由因特网指派,为XXXX11表示由本地指派,为XXXX01表示临时或实验性的IP数据报

总长度

  • 占16bit,指首部和数据之和的长度,单位为字节。因此数据报的最大长度为65535字节,总长度必须不超过最大传送单元MTU
  • 最小的IP分组首部: 20B
  • IP分组可以封装的最大数据: 65535-20=65515B

标识

  • identification占16bit,它是一个计数器,用来产生数据报的标识止
  • 只有当同一个数据段被分成不同的IP数据报,其标识才相同

标志

  • 占3bit,目前只有后两个比特有意义
  • 标志字段的最低位是MF(More Fragment),MF=1表示后面还有分片,MF=0表示最后一个分片
  • 标志字段中间的一位是DF(Don’t Fragment),只有当DF=0时才允许分片
  • 最高位保留

片偏移

  • 13bit,片偏移指出较长的分组分片后某片在原分组中的相对位置,偏移以8个字节为偏移单位

这里写图片描述

生存时间

  • 8bit,记为TTL(Time To Live),IP分组在网络中可以通过的路由器数(或跳步数)。这是为了限制数据报在网络中的生存时间,其单位最初是秒,但为了方便,现在都用“跳数”作为TTL的单位。数据报每经过一个路由器,其TTL值就减1
  • 如果TTL=0,路由器则丢弃该IP分组

协议

  • 协议(8bit)字段指出此数据报携带的数据使用何种协议,以便目的主机的IP层将数据报部分上交给哪个处理过程
  • 指示IP分组封装的是哪个协议的数据包
  • 实现复用/分解
  • E.g. 6为TCP,表示封装的为TCP段; 17为UDP, 表示封装的是UDP数据报

这里写图片描述

首部校验和

  • 首部校验和(16bit)字段只校验数据报的首部,不包括数据部分。这里不采用CRC检验码而采用简单的计算方法
  • 实现对IP分组首部的差错检测
  • 计算校验和时,该字段置全0
  • 采用反码算数运算求和,和的反码作为首部校验和字段
  • 逐跳计算、逐跳校验

源地址、目的地址

  • 源地址和目的地址都各占4个字节
  • 分别标识发送分组的源主机/路由器(网络接口)和接收分组的目的主机/路由器(网络接口)的IP地址

IP数据报首部的可变部分

  • IP首部的可变部分就是一个选项字段,字段占长度可变,范围在1~40B之间:携带安全、源选路径、时间戳和路由记录等内容,用来支持排错、测量以及安全等措施,内容很丰富
  • 选项字段的长度可变,取决于所选择的项目
  • 增加首部的可变部分是为了增加IP数据报的功能,但这同时也使得IP数据报的首部长度称为可变的。这就增加了每一个路由器处理数据报的开销
  • 实际上这些选项很少使用

填充字段

  • 填充字段占长度可变,范围在0~3B之间:目的是补齐整个首部,符合32位对齐,即保证首部长度是4字节的倍数

3 IP分片

3.1 最大传输单元(MTU)

  • 网络链路存在MTU (最大传输单元)—链路层数据帧可封装数据的上限
    • 不同链路的MTU不同

这里写图片描述

3.2 IP分片与重组

  • 大IP分组向较小MTU链路转发时, 可以被“分片” (fragmented)

    • 1个IP分组分为多片IP分组
    • IP分片到达目的主机后进行“重组”(reassembled)
  • IP首部的相关字段用于标识分片以及确定分片的相对顺序

    • 总长度、标识、标志位和片偏移

这里写图片描述

3.3 分片相关的字段

这里写图片描述

  • 标识字段占16位:标识一个IP分组

    • IP协议利用一个计数器,每产生IP分组计数器加1,作为该IP分组的标识
  • 标志位字段占3位:

    • DF (Don’t Fragment)
    • DF =1:禁止分片
    • DF =0:允许分片

    • MF (More Fragment)

    • MF =1:非最后一片
    • MF =0:最后一片(或未分片)

这里写图片描述

  • 片偏移字段占13位:一个IP分组分片封装原IP分组数据的相对偏移量
    • 片偏移字段以8字节为单位

3.4 IP分片过程

  • 假设原IP分组总长度为L,待转发链路的MTU为M
  • 若L>M,且DF=0,则可以/需要分片
  • 分片时每个分片的标识复制原IP分组的标识
  • 通常分片时,除最后一个分片,其他分片均分为MTU允许的最大分片
  • 一个最大分片可封装的数据应该是8的倍数, 因此, 一个最大分片可封装的数据为:

    这里写图片描述

  • 需要的总片数为:

    这里写图片描述

  • 每片的片偏移字段取值为:

    这里写图片描述

  • 每片的总长度字段为:

    这里写图片描述

  • 每片的MF标志位为:

    这里写图片描述

举例:

这里写图片描述