本节定义了具备接收段合并(RSC)功能的微型端口驱动程序在合并段之前必须执行的检查。
段必须通过以下两种类型的检查,以便能合并:
检查段中是否存在特定条件。 例如,TCP 标头中存在 SYN 标志位将引发异常,并且数据段不会被合并。 下面定义了这些类型的检查。
检查依赖于从之前合并的段和当前检查的段中提取和关联信息。 例如,检查接收的段是否为重复确认属于此类别的检查。 这些类型的检查在 合并 TCP/IP 段的规则中定义。
如果检查失败,则会触发异常,微型端口驱动程序必须终止该 TCP 连接的合并,并将段视为如下所示:
检测到异常之前合并的 TCP 段应显示为单个单元。
检测到异常后合并的 TCP 段应以单独的单元表示。
注意 对于下面的异常 7 和 8,微型端口驱动程序应从触发异常的段开始恢复合并。
接收满足以下任一条件的段必须触发异常:
NIC 中的硬件资源约束可防止合并。
该段具有无效的 TCP 或 IP 校验和。
该段包含其 TCP 标头中的任何 SYN、URG、RST、FIN,如 RFC 793 的第 3.1 节中所述。 更宽泛地说,如果段包含 PSH 或 ACK 以外的任何标志,则应触发异常。 有关 ECN 标记,请参阅下面的异常 8。
该段包含 TCP 时间戳选项以外的一个或多个 TCP 选项。 有关 TCP 时间戳选项的讨论,请参阅 RFC 1323 。
该段包含 IPv4 选项或 IPv6 扩展标头。
段是 IPv4 片段。
合并当前接收的段将导致单个合并单位超过法定 IP 数据报的最大长度。 此异常需要特殊处理。 有关详细信息,请参见:
合并 TCP/IP 数据包的规则中的第一个流程图
RSC 驱动程序的编程注意事项中的“处理关于 RSC 统计信息的查询”。
该段包含 ECN 标志,如 RFC 3168 中定义,符合以下条件之一或两个条件:
IP 标头中的 ECN 字段(ECT、CE)在该段中的值与前一段的值不同。
该段在 TCP 标头中具有与上一段不同的 ECN 标志(ECE 和 CWR)的值。