Skip to main content

Appendix B. TCP Requirement Summary (TCP 要求摘要)

本附录总结了 RFC 9293 中使用 RFC 2119 关键词标记的所有实现要求.

必须 (MUST) 要求

基本协议

  • MUST-1: 窗口大小必须被视为无符号数
  • MUST-2: 发送方必须生成 TCP 校验和
  • MUST-3: 接收方必须检查 TCP 校验和
  • MUST-4: TCP 实现必须支持强制选项集 (EOL, NOP, MSS)
  • MUST-5: TCP 实现必须能够在任何段中接收 TCP 选项
  • MUST-6: TCP 实现必须忽略其未实现的 TCP 选项 (假设选项有长度字段)
  • MUST-7: TCP 实现必须准备处理非法选项长度 (建议重置连接并记录错误)

选项处理

  • MUST-64: 接收方必须准备处理不从字边界开始的选项
  • MUST-65: Maximum Segment Size 选项禁止在非 SYN 段中发送
  • MUST-68: 除 EOL 和 NOP 外, 所有 TCP 选项必须有长度字段
  • MUST-69: End of Option List Option 之后的头部内容必须是零填充

序列号

  • MUST-8: 初始序列号必须使用加密强随机数生成器选择
  • MUST-9: 必须正确处理序列号环绕
  • MUST-10: 必须检测和处理重复段

连接管理

  • MUST-11: SYN 段必须不携带应用数据 (除非使用 TCP Fast Open)
  • MUST-12: 必须正确实现三次握手
  • MUST-13: 必须正确实现连接终止序列
  • MUST-14: 必须在 SYN 段中发送 MSS 选项

数据传输

  • MUST-15: 必须按顺序交付数据给应用程序
  • MUST-16: 必须实现重传机制
  • MUST-17: 必须实现流量控制
  • MUST-18: 必须实现某种形式的拥塞控制

错误处理

  • MUST-19: 必须验证接收段的校验和
  • MUST-20: 必须正确处理 RST 段
  • MUST-21: 必须处理窗口外的段

应该 (SHOULD) 要求

性能

  • SHLD-1: 应该实现 Nagle 算法或提供禁用它的方式
  • SHLD-2: 应该实现延迟 ACK
  • SHLD-3: 应该支持窗口缩放选项 (RFC 7323)
  • SHLD-4: 应该支持时间戳选项 (RFC 7323)
  • SHLD-5: 应该支持 SACK 选项 (RFC 2018)

安全

  • SHLD-6: 应该实现 RFC 5961 的盲攻击防护
  • SHLD-7: 应该实现 SYN Cookie 或类似的 SYN flood 防护
  • SHLD-8: 应该使用不可预测的初始序列号

互操作性

  • SHLD-9: 应该容忍非标准但无害的行为
  • SHLD-10: 应该记录异常事件
  • REC-1: 推荐为发送和接收窗口大小保留 32 位字段
  • REC-2: 推荐实现路径 MTU 发现
  • REC-3: 推荐支持大窗口和窗口缩放
  • REC-4: 推荐实现选择性确认 (SACK)

可以 (MAY) 选项

可选功能

  • MAY-1: 可以实现 TCP Fast Open (RFC 7413)
  • MAY-2: 可以实现 TCP-AO 认证 (RFC 5925)
  • MAY-3: 可以支持实验性选项
  • MAY-4: 可以实现紧急数据机制
  • MAY-5: 可以实现保持活动 (Keep-Alive) 机制

实现选择

  • MAY-6: 可以使用不同的拥塞控制算法
  • MAY-7: 可以实现各种 QoS 机制
  • MAY-8: 可以优化特定工作负载

实现检查清单

核心功能

  • 正确的头部处理
  • 校验和计算和验证
  • 序列号管理
  • 三次握手
  • 数据传输
  • 连接终止
  • 流量控制
  • 拥塞控制

选项支持

  • End of Option List (Kind 0)
  • No-Operation (Kind 1)
  • Maximum Segment Size (Kind 2)
  • Window Scale (Kind 3) - 推荐
  • SACK Permitted (Kind 4) - 推荐
  • SACK (Kind 5) - 推荐
  • Timestamps (Kind 8) - 推荐

安全功能

  • 加密强 ISN 生成
  • RFC 5961 盲攻击防护
  • SYN flood 防护
  • RST 验证
  • 序列号验证

性能优化

  • Nagle 算法
  • 延迟 ACK
  • 快速重传和快速恢复
  • 路径 MTU 发现
  • 窗口缩放

注意: 这是一个简化的摘要. 完整的要求列表和详细说明请参阅 RFC 9293 的附录 B 和正文内容. 每个要求都在正文中有详细的上下文和解释.