Appendix B. TCP需求摘要
本节内容改编自RFC 1122。
请注意,此列表中没有与PLPMTUD相关的要求,但建议使用PLPMTUD。
TCP实现要求汇总表
| 功能特性 | 需求ID | MUST | SHOULD | MAY | SHOULD NOT | MUST NOT |
|---|---|---|---|---|---|---|
| PUSH标志 | ||||||
| 聚合或队列未推送数据 | MAY-16 | X | ||||
| 发送方合并连续PSH位 | SHLD-27 | X | ||||
| SEND调用可指定PUSH | MAY-15 | X | ||||
| *如果不能: 发送方无限期缓冲 | MUST-60 | X | ||||
| *如果不能: PSH最后一个报文段 | MUST-61 | X | ||||
| 通知接收方应用层协议(ALP)收到PSH | MAY-17 | X | ||||
| 尽可能发送最大尺寸报文段 | SHLD-28 | X | ||||
| 窗口 (Window) | ||||||
| 视为无符号数 | MUST-1 | X | ||||
| 作为32位数处理 | REC-1 | X | ||||
| 从右侧缩小窗口 | SHLD-14 | X | ||||
| *窗口缩小时发送新数据 | SHLD-15 | X | ||||
| *重传窗口内旧的未确认数据 | SHLD-16 | X | ||||
| *窗口右边缘之外数据超时连接 | SHLD-17 | X | ||||
| 对窗口缩小具有鲁棒性 | MUST-34 | X | ||||
| 接收方窗口可无限期关闭 | MAY-8 | X | ||||
| 使用标准探测逻辑 | MUST-35 | X | ||||
| 发送方探测零窗口 | MUST-36 | X | ||||
| *RTO后首次探测 | SHLD-29 | X | ||||
| *指数退避 | SHLD-30 | X | ||||
| 允许窗口无限期保持为零 | MUST-37 | X | ||||
| 重传SND.UNA+SND.WND之外的旧数据 | MAY-7 | X | ||||
| 零窗口时也处理RST和URG | MUST-66 | X | ||||
| 紧急数据 (Urgent Data) | ||||||
| 支持紧急指针 | MUST-30 | X | ||||
| 指针指示首个非紧急字节 | MUST-62 | X | ||||
| 任意长度紧急数据序列 | MUST-31 | X | ||||
| 异步通知ALP紧急数据 | MUST-32 | X | ||||
| ALP可查询紧急数据队列 | MUST-33 | X | ||||
| ALP应使用紧急机制 | SHLD-13 | X | ||||
| TCP选项 (TCP Options) | ||||||
| 支持强制选项集 | MUST-4 | X | ||||
| 接收任意报文段中的TCP选项 | MUST-5 | X | ||||
| 忽略不支持的选项 | MUST-6 | X | ||||
| 除EOL+NOP外所有选项包含长度 | MUST-68 | X | ||||
| 应对非法选项长度 | MUST-7 | X | ||||
| 无论字对齐如何都处理选项 | MUST-64 | X | ||||
| 实现发送和接收MSS选项 | MUST-14 | X | ||||
| IPv4除非536否则发送MSS选项 | SHLD-5 | X | ||||
| IPv6除非1220否则发送MSS选项 | SHLD-5 | X | ||||
| 总是发送MSS选项 | MAY-3 | X | ||||
| IPv4发送MSS默认536 | MUST-15 | X | ||||
| IPv6发送MSS默认1220 | MUST-15 | X | ||||
| 计算有效发送报文段大小 | MUST-16 | X | ||||
| MSS考虑变化的MTU | SHLD-6 | X | ||||
| 非SYN报文段不发送MSS | MUST-65 | X | ||||
| MSS值基于MMS_R | MUST-67 | X | ||||
| 用零填充 | MUST-69 | X | ||||
| TCP校验和 (TCP Checksums) | ||||||
| 发送方计算校验和 | MUST-2 | X | ||||
| 接收方检查校验和 | MUST-3 | X | ||||
| ISN选择 (ISN Selection) | ||||||
| 包含时钟驱动的ISN生成器组件 | MUST-8 | X | ||||
| 使用PRF组件的安全ISN生成器 | SHLD-1 | X | ||||
| PRF不可从主机外部计算 | MUST-9 | X | ||||
| 打开连接 (Opening Connections) | ||||||
| 支持同时打开尝试 | MUST-10 | X | ||||
| SYN-RECEIVED记住上一状态 | MUST-11 | X | ||||
| 被动OPEN调用不干扰其他 | MUST-41 | X | ||||
| 功能: 同时监听相同端口 | MUST-42 | X | ||||
| 必要时向IP请求SYN源地址 | MUST-44 | X | ||||
| *否则使用连接本地地址 | MUST-45 | X | ||||
| 打开到广播/组播IP地址 | MUST-46 | X | ||||
| 静默丢弃到广播/组播地址的报文段 | MUST-57 | X | ||||
| 关闭连接 (Closing Connections) | ||||||
| RST可包含数据 | SHLD-2 | X | ||||
| 通知应用连接已中止 | MUST-12 | X | ||||
| 半双工关闭连接 | MAY-1 | X | ||||
| *发送RST指示数据丢失 | SHLD-3 | X | ||||
| TIME-WAIT状态持续2MSL秒 | MUST-13 | X | ||||
| *从TIME-WAIT状态接受SYN | MAY-2 | X | ||||
| *使用时间戳减少TIME-WAIT | SHLD-4 | X | ||||
| 重传 (Retransmissions) | ||||||
| 实现指数退避、慢启动和拥塞避免 | MUST-19 | X | ||||
| 使用相同IP标识重传 | MAY-4 | X | ||||
| Karn算法 | MUST-18 | X | ||||
| 生成ACK (Generating ACKs) | ||||||
| 尽可能聚合 | MUST-58 | X | ||||
| 队列乱序报文段 | SHLD-31 | X | ||||
| 发送ACK前处理所有队列 | MUST-59 | X | ||||
| 为乱序报文段发送ACK | MAY-13 | X | ||||
| 延迟ACK | SHLD-18 | X | ||||
| *延迟< 0.5秒 | MUST-40 | X | ||||
| 每2个全尺寸报文段或2RMSS确认 | SHLD-19 | X | ||||
| 接收方SWS避免算法 | MUST-39 | X | ||||
| 发送数据 (Sending Data) | ||||||
| 可配置TTL | MUST-49 | X | ||||
| 发送方SWS避免算法 | MUST-38 | X | ||||
| Nagle算法 | SHLD-7 | X | ||||
| *应用可禁用Nagle算法 | MUST-17 | X | ||||
| 连接失败 (Connection Failures) | ||||||
| R1重传时向IP提供负面建议 | MUST-20 | X | ||||
| R2重传时关闭连接 | MUST-20 | X | ||||
| ALP可设置R2 | MUST-21 | X | ||||
| 通知ALP R1<=重传次数<R2 | SHLD-9 | X |
说明:
- MUST: 必须实现的强制性要求
- SHOULD: 强烈建议实现的要求
- MAY: 可选实现的要求
- SHOULD NOT: 不建议实现
- MUST NOT: 禁止实现
- ALP: Application Layer Protocol (应用层协议)
- MSS: Maximum Segment Size (最大报文段大小)
- ISN: Initial Sequence Number (初始序列号)
- SWS: Silly Window Syndrome (糊涂窗口综合症)
- RTO: Retransmission Timeout (重传超时)
- MSL: Maximum Segment Lifetime (最大报文段生存时间)
本摘要表基于RFC 2119关键字标记所有实现要求,便于快速查找和验证TCP实现的合规性。