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 节.