跳到主要内容

5. 相对于 RFC 793 的变更 (Changes from RFC 793)

本节概述本文档相对于 RFC 793 及其后续更新所做的主要变更.

5.1. 协议规范变更 (Protocol Specification Changes)

头部格式更新:

  • 根据 RFC 3168 更新 TCP 头部控制位, 添加 CWR (Congestion Window Reduced) 和 ECE (ECN-Echo) 标志.
  • 澄清保留位的处理要求.

序列号处理:

  • 澄清初始序列号 (Initial Sequence Number, ISN) 的选择机制.
  • 更新序列号比较和回绕处理.

连接管理:

  • 增加 SYN-RECEIVED 状态下 Reset 处理的澄清说明, 更新 RFC 5961.
  • 澄清同时打开 (simultaneous open) 的处理.
  • 更新时间等待 (TIME-WAIT) 状态的持续时间和处理方式.

选项处理:

  • 澄清强制选项集: End of Option List, No-Operation, Maximum Segment Size.
  • 更新未知选项的处理要求.
  • 增加对实验性选项的引用.

5.2. 被废弃的内容 (Obsoleted Content)

本文档废弃以下 RFC:

  • RFC 793 - 原始 TCP 规范 (1981).
  • RFC 879 - TCP Maximum Segment Size and Related Topics.
  • 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. 更新的内容 (Updated Content)

本文档更新以下 RFC:

  • RFC 1011 - Official Internet Protocols (TCP section).
  • RFC 1122 - Requirements for Internet Hosts -- Communication Layers (TCP section).
  • RFC 5961 - Improving TCP's Robustness to Blind In-Window Attacks (SYN-RECEIVED state handling).

5.4. 安全增强 (Security Enhancements)

  • 增加针对盲攻击 (blind attacks) 的保护机制.
  • 更新针对序列号攻击的防御措施.
  • 澄清安全实现的最佳实践.
  • 增加 SYN flood 攻击相关考虑.

5.5. 性能改进 (Performance Improvements)

  • 引用现代拥塞控制算法.
  • 更新重传超时 (Retransmission Timeout, RTO) 的计算.
  • 增加对高性能扩展的引用, 包括窗口缩放, 时间戳和 SACK.
  • 澄清 Nagle 算法的实现要求.

5.6. 互操作性澄清 (Interoperability Clarifications)

  • 澄清畸形报文段的处理.
  • 更新错误条件处理.
  • 澄清边界情形行为.
  • 统一术语和定义.

5.7. 编辑性变更 (Editorial Changes)

  • 现代化语言和术语.
  • 重组内容以提升可读性.
  • 增加实现指导.
  • 更新参考文献.
  • 标准化 RFC 2119 关键字的使用.

5.8. 未包含的内容 (Content Not Included)

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

  • 详细拥塞控制算法, 如 RFC 5681 等.
  • 高性能扩展, 如 RFC 7323 中的窗口缩放和时间戳.
  • 选择性确认 SACK, 如 RFC 2018 和 RFC 2883.
  • TCP Fast Open, 见 RFC 7413.
  • Multipath TCP, 见 RFC 8684.

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