IP协议

  1. IPv4:功能规范 / IP头部的详细内容 / 分段和重新组装

参考资料

  • IETF RFC 791 — Internet Protocol
  • IETF RFC 790 — Assigned Numbers

IPv4

功能规范

Top

  • IP(Internet Protocol,Internet协议)
  • IP头部
    • 版本(4 bits)、IHL(4 bits)、服务类型(8 bits)、总长度(16 bits)
    • ID(16 bits)、标志位(3 bits)、分段偏移(13 bits)
    • TTL(8 bits)、协议(8 bits)、校验和(16 bits)
    • 源地址(32 bits)
    • 目的地址(32 bits)
    • 可选(24 bits)、填充(8 bits)

IP头部的详细内容

Top

  • 版本(4 bits)
    • 版本为4,对应于IPv4
  • IHL(Internet Header Length,Internet头部长度,4 bits)
    • Internet头部的总长度,单位为4字节(32位)
    • 其最小值为5 * 32 bits = 160 bits = 20字节
    • 其最大值为15 * 32 bits = 480 bits = 60字节
  • 服务类型(8 bits)
    • 在低延迟、高吞吐量、高可靠三者之间进行权衡
      • Bits 0~2 –> 优先级
      • Bit 3 –> 0 = 正常延迟,1 = 低延迟
      • Bit 4 –> 0 = 正常吞吐量,1 = 高吞吐量
      • Bit 5 –> 0 = 正常可靠,1 = 高可靠
      • Bits 6~7 –> 保留,0
    • 优先级
      • 111 –> network control
      • 110 –> internetwork control
      • 101 –> CRITIC/ECP
      • 100 –> flash override
      • 011 –> flash
      • 010 –> immediate
      • 001 –> priority
      • 000 –> routine
  • 总长度(16 bits)
    • 数据报的总长度,单位为字节(8位)
    • 其最大值为65536字节。然而,过长的数据报是不切实际的,所以主机、网络通常使用576字节
      • 576字节的数据报 = 512字节的数据 + 64字节的头部
      • 由于IP头部通常为20字节,故剩下的头部空间可以留给上层协议(比如TCP协议)
  • ID(Identifier,标识符,16 bits)
    • 用于数据报的分段
  • 标志位(3 bits)
    • Bit 0 –> 保留,必须为0
    • Bit 1 –> 0 = 可能分段,1 = 不分段(Don’t Fragment,DF)
    • Bit 2 –> 0 = 最后分段,1 = 更多分段(More Fragments,MF)
  • 分段偏移(13 bits)
    • 数据报中分段的偏移,单位为8字节(64位)
    • 第一个分段的偏移为0
  • TTL(Time To Live,生存时间,8 bits)
    • 数据报在Internet中的最大保留时间,单位为秒
    • 如果TTL为0,那么数据报会被销毁
  • 协议(8 bits)
    • 上层协议的类型
  • 校验和(16 bits)
    • Internet头部的校验和

分段和重新组装

Top