Skip to main content

5. Changes from RFC 793 (与 RFC 793 的变更)

本节总结了本文档相对于 RFC 793 及其后续更新所做的主要更改.

5.1. 协议规范更改

头部格式更新:

  • 根据 RFC 3168, 更新了 TCP 头部控制位, 添加了 CWR (Congestion Window Reduced, 拥塞窗口减少) 和 ECE (ECN-Echo, ECN 回显) 标志
  • 明确了保留位的处理要求

序列号处理:

  • 澄清了初始序列号 (ISN) 的选择机制
  • 更新了序列号比较和环绕处理

连接管理:

  • 在 SYN-RECEIVED 状态下添加了对重置 (Reset) 处理的澄清 (更新 RFC 5961)
  • 明确了同时打开 (Simultaneous Open) 的处理
  • 更新了 TIME-WAIT 状态的持续时间和处理

选项处理:

  • 明确了必须支持的选项集: End of Option List, No-Operation, Maximum Segment Size
  • 更新了未知选项的处理要求
  • 添加了对实验性选项的引用

5.2. 废止的内容

本文档废止了以下 RFC:

  • RFC 793 - 原始 TCP 规范 (1981)
  • RFC 879 - TCP 最大段大小和相关主题
  • RFC 2873 - TCP Processing of the IPv4 Precedence Field
  • RFC 6093 - On the Implementation of the TCP Urgent Mechanism
  • RFC 6429 - TCP Sender Clarification for Persist Condition
  • RFC 6528 - Defending against Sequence Number Attacks
  • RFC 6691 - TCP Options and Maximum Segment Size (MSS)

5.3. 更新的内容

本文档更新了以下 RFC:

  • RFC 1011 - Official Internet Protocols (TCP 部分)
  • RFC 1122 - Requirements for Internet Hosts -- Communication Layers (TCP 部分)
  • RFC 5961 - Improving TCP's Robustness to Blind In-Window Attacks (SYN-RECEIVED 状态处理)

5.4. 安全性增强

  • 添加了对盲攻击 (Blind Attacks) 的防护机制
  • 更新了序列号攻击的防御措施
  • 明确了安全实现的最佳实践
  • 添加了对 SYN flood 攻击的考虑

5.5. 性能改进

  • 引用了现代拥塞控制算法
  • 更新了重传超时 (RTO) 计算
  • 添加了对高性能扩展的引用 (窗口缩放, 时间戳, SACK)
  • 明确了 Nagle 算法的实现要求

5.6. 互操作性澄清

  • 明确了对畸形段的处理
  • 更新了错误条件的处理
  • 澄清了边界情况的行为
  • 统一了术语和定义

5.7. 编辑性更改

  • 现代化语言和术语
  • 重组内容以提高可读性
  • 添加了实现指南
  • 更新了参考文献
  • 标准化了 RFC 2119 关键词的使用

5.8. 未包含的内容

以下内容虽然是现代 TCP 实现的重要部分, 但在单独的文档中指定:

  • 详细的拥塞控制算法 (RFC 5681 等)
  • 高性能扩展 (RFC 7323 - 窗口缩放, 时间戳)
  • 选择性确认 SACK (RFC 2018, RFC 2883)
  • TCP Fast Open (RFC 7413)
  • 多路径 TCP (RFC 8684)

这是一个有意识的设计选择, 以保持基础规范的清晰性, 同时允许这些扩展独立演进.


注意: 完整的更改列表和勘误修复详见官方 RFC 9293 文档的第 5 节.