Skip to content

附录 B:TCP 需求汇总

本节内容改编自 RFC 1122。

以下列表未包含 PLPMTUD 相关需求,但正文推荐实现 PLPMTUD。

展开完整 TCP 需求矩阵

表中 X 表示该行需求所属的级别;ReqID 与正文中出现的 MUST-XSHLD-XMAY-XREC-X 标签一一对应。ALP 表示 Application-Layer Program(应用层程序)。

特性ReqIDMUSTSHOULDMAYSHOULD NOTMUST NOT
PUSH 标志
聚合或排队未推送的数据MAY-16X
发送方合并连续的 PSHSHLD-27X
SEND 调用可以指定 PUSHMAY-15X
无法指定时:发送方无限期缓存数据MUST-60X
无法指定时:在最后一个报文段中设置 PSHMUST-61X
通知接收方 ALP 已收到 PSHMAY-17X
尽可能发送最大长度的报文段SHLD-28X
窗口
将窗口作为无符号数处理MUST-1X
将窗口作为 32 位数处理REC-1X
从右侧缩小窗口SHLD-14X
在窗口缩小时发送新数据SHLD-15X
重传窗口内未确认的旧数据SHLD-16X
不因数据落在右边界之外而使连接超时SHLD-17X
稳健处理窗口缩小MUST-34X
允许接收方窗口无限期保持关闭MAY-8X
采用标准探测逻辑MUST-35X
发送方探测零窗口MUST-36X
首次探测在 RTO 之后发送SHLD-29X
探测间隔采用指数退避SHLD-30X
允许窗口无限期保持为零MUST-37X
重传 SND.UNA+SND.WND 之外的旧数据MAY-7X
零窗口时仍处理 RSTURGMUST-66X
紧急数据
支持紧急指针MUST-30X
紧急指针指向第一个非紧急八位组MUST-62X
支持任意长度的紧急数据序列MUST-31X
异步通知 ALP 有紧急数据MUST-32X
ALP 可以获知是否有紧急数据排队及其数量MUST-33X
ALP 使用紧急机制SHLD-13X
TCP 选项
支持必需选项集MUST-4X
在任意报文段中接收 TCP 选项MUST-5X
忽略不支持的选项MUST-6X
除 EOL/NOP 外的所有选项均带长度字段MUST-68X
能够处理非法选项长度MUST-7X
无论是否按字边界对齐都能处理选项MUST-64X
实现 MSS 选项的发送和接收MUST-14X
IPv4 下 MSS 非 536 时发送 MSS 选项SHLD-5X
IPv6 下 MSS 非 1220 时发送 MSS 选项SHLD-5X
始终发送 MSS 选项MAY-3X
IPv4 默认发送 MSS 为 536MUST-15X
IPv6 默认发送 MSS 为 1220MUST-15X
计算有效发送报文段大小MUST-16X
MSS 考虑 MTU 的变化SHLD-6X
SYN 报文段中不发送 MSSMUST-65X
根据 MMS_R 确定 MSS 值MUST-67X
用零填充首部MUST-69X
TCP 校验和
发送方计算校验和MUST-2X
接收方检查校验和MUST-3X
ISN 选择
ISN 生成器包含时钟驱动分量MUST-8X
用 PRF 分量保护 ISN 生成器SHLD-1X
PRF 可从主机外部计算MUST-9X
打开连接
支持同时打开尝试MUST-10X
SYN-RECEIVED 状态下记住前一状态MUST-11X
被动 OPEN 调用影响其他连接MUST-41X
允许同一端口同时存在多个 LISTENMUST-42X
必要时在发送 SYN 前向 IP 层请求源地址MUST-44X
其他情况下使用连接的本地地址MUST-45X
向广播/组播 IP 地址发起 OPENMUST-46X
静默丢弃发往广播/组播地址的报文段MUST-57X
关闭连接
RST 可以包含数据SHLD-2X
通知应用程序连接已中止MUST-12X
支持半双工关闭连接MAY-1X
发送 RST 以表明数据丢失SHLD-3X
TIME-WAIT 状态保持 2 个 MSL 秒MUST-13X
接受来自 TIME-WAITSYNMAY-2X
利用时间戳缩短 TIME-WAITSHLD-4X
重传
实现指数退避、慢启动和拥塞避免MUST-19X
重传时使用相同的 IP IdentificationMAY-4X
使用 Karn 算法MUST-18X
生成 ACK
尽可能聚合 ACKMUST-58X
将乱序报文段排队SHLD-31X
发送 ACK 前先处理所有已排队的报文段MUST-59X
为乱序报文段发送 ACKMAY-13X
延迟 ACKSHLD-18X
延迟小于 0.5 秒MUST-40X
至少每两个全长报文段或 2*RMSS 个八位组确认一次SHLD-19X
接收方 SWS 避免算法MUST-39X
发送数据
TTL 可配置MUST-49X
发送方 SWS 避免算法MUST-38X
Nagle 算法SHLD-7X
应用程序可以禁用 Nagle 算法MUST-17X
连接失败
R1 次重传时向 IP 层给出负面建议MUST-20X
R2 次重传时关闭连接MUST-20X
ALP 可以设置 R2MUST-21X
重传次数满足 R1 <= retxs < R2 时通知 ALPSHLD-9X
R1 的建议值SHLD-10X
R2 的建议值SHLD-11X
SYN 使用相同机制MUST-22X
SYNR2 至少为 3 分钟MUST-23X
发送保活分组
发送保活分组MAY-5X
应用程序可以请求保活MUST-24X
默认关闭MUST-25X
仅在空闲达到设定间隔后发送MUST-26X
间隔可配置MUST-27X
默认间隔至少 2 小时MUST-28X
能容忍 ACK 丢失MUST-29X
发送不携带数据的保活分组SHLD-12X
可配置为发送垃圾数据八位组MAY-6X
IP 选项
忽略 TCP 无法识别的选项MUST-50X
支持时间戳MAY-10X
支持 Record RouteMAY-11X
源路由
ALP 可以指定源路由MUST-51X
覆盖数据报中已有的源路由MUST-52X
根据源路由构建返回路由MUST-53X
后收到的源路由覆盖先前的值SHLD-24X
从 IP 接收 ICMP 消息
接收来自 IP 层的 ICMP 消息MUST-54X
收到 Destination Unreachable(0、1、5)时通知 ALPSHLD-25X
收到 Destination Unreachable(0、1、5)时中止连接MUST-56X
收到 Destination Unreachable(2–4)时中止连接SHLD-26X
静默丢弃 Source Quench 消息MUST-55X
收到 Time Exceeded 时中止连接MUST-56X
收到 Parameter Problem 时中止连接MUST-56X
地址验证
拒绝发往无效 IP 地址的 OPENMUST-46X
拒绝来自无效 IP 地址的 SYNMUST-63X
静默丢弃发往广播/组播地址的 SYNMUST-57X
TCP/ALP 接口服务
提供错误报告机制MUST-47X
ALP 可以禁用错误报告例程SHLD-20X
ALP 可以指定发送时的 Diffserv 字段MUST-48X
不加修改地传递给 IP 层SHLD-22X
ALP 可以在连接期间改变 Diffserv 字段SHLD-21X
ALP 在连接期间通常改变 Diffserv 字段SHLD-23X
将收到的 Diffserv 字段传递给 ALPMAY-9X
FLUSH 调用MAY-14X
OPEN 提供可选的本地 IP 地址参数MUST-43X
RFC 5961 支持
实现数据注入保护MAY-12X
显式拥塞通知
支持 ECNSHLD-8X
替代拥塞控制
实现符合规范的替代算法MAY-18X

表 8:TCP 需求汇总。

脚注:ALP 表示 Application-Layer Program(应用层程序)。

Licensed under CC BY-NC-SA 4.0.