返回

快速理解网络协议(八)IPv4 分片与重组

本文详细介绍了 IPv4 分片与重组机制,包括分片的计算方法、可能遇到的问题以及现代网络中的替代方案。

本文概览

本文主要介绍 IPv4 分片与重组机制,包括:

  • 分片的基本概念和原因
  • 分片的计算方法
  • 分片可能带来的问题
  • 现代网络中的替代方案

IPv4 分片与重组

每个链路都受到它可以在单个 IP 数据包中传送的字节数量的限制。这个限制被称为最大传输单元(MTU,Maximum Transmission Unit)。当 IP 数据包的大小超过链路的 MTU 时,路由器会将数据包分成多个较小的片段,这个过程称为分片(Fragmentation)。

分片的计算方法

  1. MTU 限制

    • 以太网 MTU:1500 字节
    • PPPoE MTU:1492 字节
    • 其他链路可能有不同的 MTU 值
  2. 分片字段

    • Identification(标识):用于识别属于同一数据包的所有分片
    • Fragment Offset(分片偏移):表示分片在原始数据包中的位置
    • More Fragments(更多分片):标识是否还有后续分片
    • Total Length(总长度):分片后的数据包大小
  3. 分片大小计算

    • 每个分片的大小 = MTU - IP 头部大小(20字节)
    • 最后一个分片可能更小
    • 分片偏移量 = 分片位置 / 8

分片可能导致的问题

  1. 性能影响

    • 增加路由器处理负担
    • 增加端到端延迟
    • 降低网络吞吐量
  2. 可靠性问题

    • 分片丢失导致整个数据包重组失败
    • 分片乱序到达影响重组效率
    • 防火墙可能过滤分片数据包
  3. 安全风险

    • 分片攻击(Fragment Attack)
    • 分片重叠攻击
    • 分片超时攻击

分片的替代方案

  1. 路径 MTU 发现(PMTUD)

    • 源主机主动探测路径 MTU
    • 避免不必要的分片
    • 提高传输效率
  2. TCP 分段

    • 在传输层进行分段
    • 更可靠的重传机制
    • 更好的拥塞控制
  3. 现代网络优化

    • 使用更大的 MTU(如巨型帧)
    • 网络设备优化
    • 协议栈优化
  4. IPv6 改进

    • 只在源端进行分片
    • 简化分片头部
    • 更好的分片管理机制

分片重组机制

  1. 重组过程

    • 接收端根据 Identification 字段识别属于同一数据包的分片
    • 使用 Fragment Offset 字段确定分片的顺序
    • 通过 More Fragments 字段判断是否收到所有分片
    • 按照正确的顺序重组原始数据包
  2. 重组超时

    • 通常设置 30-60 秒的重组超时时间
    • 超时后丢弃所有未完成重组的分片
    • 触发源端重传整个数据包
  3. 重组缓冲区管理

    • 需要维护重组队列
    • 处理内存分配和释放
    • 防止缓冲区溢出攻击
  4. 重组优化策略

    • 预分配重组缓冲区
    • 使用哈希表加速分片查找
    • 实现分片缓存机制
    • 支持并行重组处理

实际应用建议

  1. 网络配置

    • 合理设置 MTU 大小
    • 启用 PMTUD
    • 配置适当的分片超时时间
  2. 性能优化

    • 避免不必要的分片
    • 使用 TCP 分段代替 IP 分片
    • 考虑使用巨型帧(Jumbo Frames)
  3. 安全考虑

    • 配置防火墙规则处理分片
    • 监控异常分片行为
    • 实施分片攻击防护
  4. 故障排查

    • 使用网络分析工具检查分片
    • 监控分片重组失败率
    • 分析分片相关性能问题
© Licensed Under CC BY-NC-SA 4.0