终止合并的异常条件
本部分定义接收段合并 (支持 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 中定义:
段包含的 ECN 字段的值 (IP 标头中的 ECT、CE) 与上一段不同。
段的 ECN 标志的值 (TCP 标头中的 ECE 和 CWR) 与上一段不同。