1. IP 协议栈概述


  • 无连接协议
  • 尽力而为的逐跳转发
  • 结构化的编址,用于「寻址和转发」
  • 包含 IPv4 和 IPv6
  • 包含 TCP 和 UDP
  • IP 报文允许被分片

    2. IPv4 地址


  • IPv4 地址由网络位和主机位组成,子网掩码用于区分网络位、主机位和网络范围(网段)
    • 一个支持3层协议的设备上,多个接口的网络地址是不可以互相覆盖的
    • /32地址为通常为主机路由,可以用在环回接口
    • /31地址只能在 P2P 链路上
  • 「网关」用于设备转发数据到其他网络时,使用的下一跳转发地址(等同于默认路由)
  • 点到点链路、隧道链路上可以借用地址
  • 可变长子网掩码(VLSM):允许使用多个子网掩码划分子网
  • 无类域间路由(CIDR):用来消除常规地址分类和子网划分的界限,支持路由汇总,减少掩码长度
    • 子网:网络位借用主机位,增加掩码长度
    • 汇总:将路由表条目数变少,便于查找,减少掩码长度
  • 主类IPv4地址
    • Class A:0.0.0.0~126.255.255.255,默认掩码/8(255.0.0.0)
    • Class B:128.0.0.0~191.255.255.255,默认掩码/16(255.255.0.0)
    • Class C:192.0.0.0~223.255.255.255,默认掩码/24(255.255.255.0)
    • Class D:224.0.0.0~239.255.255.255,组播地址,只能作为目的 IP 出现
    • Class E:240.0.0.0~255.255.255.255,保留地址
  • 私有IPv4地址
    • 10.0.0.0/8 ~ 10.255.255.255/8
    • 172.16.0.0/16 ~ 172.31.255.255/16
    • 192.168.0.0/24 ~ 192.168.255.255/24
  • 特殊IPv4地址
    • 127.0.0.0/8(环回测试地址)
    • 255.255.255.255(全网广播地址)
    • 0.0.0.0(所有网络地址,DHCP Client 没有地址时的特殊地址)
      • 例如:192.168.1.0/24(网络地址)
      • 例如:192.168.1.255/24(定向广播地址)
  • 组播IPv4地址
    • 协议组播: 224.0.0.0 - 224.0.0.255
    • 全球组播: 224.0.1.0 - 238.255.255.255
    • 本地组播: 239.0.0.0 - 239.255.255.255

      3. IP Header Message


标准 IP Message Header 为:20Byte;如果有可选项 IP Message Header 为:60Byte

image.png

  • IP Header Message 字段解释
    • Version:版本
    • IHL:IP Header 长度
    • Type of Service:服务类型,差分服务 QoS(默认0)
    • Total Length:包总长度。IP Header 长度 + 上层协议 Header 长度 + 数据
    • Identification:ID。在分片后标识同一个报文
    • Flags:分片标识(在特定应用中不允许分片,则需要考虑调整「MTU 值或 MSS(最大段尺寸)」
      • DF = 0:允许分片(默认)
      • DF = 1:不允许分片
      • MF = 0:最后一个分片(默认)
      • MF = 1:还有更多分片
    • Fragment Offset:分片偏移。于第1个包中的数据大小作为参考,判断偏移量(以指数增长)
    • Time to Live:生存时间(TTL,范围0~255,默认255),每经过一个网络 TTL - 1,TTL=0 时丢弃报文。用来防环
    • Protocol:协议。表示上层承载的什么协议
    • Header Checksum:IP Header 校验和
    • Source Address:源 IP 地址
    • Destination Address:目的 IP 地址
    • Option:可选项
    • Padding:垫片(有可选项时使用,将 Header 不足的部分填充为60Byte)