终止合并的异常条件

本部分定义接收段合并 (支持 RSC) 的微型端口驱动程序必须在段上执行才能合并的检查。

段必须通过以下两种类型的检查,然后才能合并:

  • 检查段中是否存在特定条件。 例如,TCP 标头中存在 SYN 标志会触发异常,并且段不会合并。 下面定义了这些类型的检查。

  • 检查依赖于检查和关联以前合并的段和当前已检查的段的信息。 例如,检查收到的段是否为重复确认属于此检查类别。 这些类型的检查在 合并 TCP/IP 段的规则中定义。

如果检查失败,则会触发异常,微型端口驱动程序必须终止该 TCP 连接的合并,并按如下所示处理段:

  • 在检测到异常之前合并的 TCP 段应指示为单个单元。

  • 检测到异常后合并的 TCP 段应指示为单独的单元。

注意 对于下面的异常 7 和 8,微型端口驱动程序应从触发异常的段开始恢复合并。

接收满足以下任何条件的段必须触发异常:

  1. NIC 中的硬件资源约束阻止合并。

  2. 段具有无效的 TCP 或 IP 校验和。

  3. 段在其 TCP 标头中包含任何 SYN、URG、RST、FIN,如 RFC 793 第 3.1 节中定义。 更广泛地说,如果段包含除 PSH 或 ACK 以外的任何标志,它应触发异常。 有关 ECN 标志,请参阅下面的异常 8。

  4. 段包含 TCP 时间戳选项以外的一个或多个 TCP 选项。 有关 TCP 时间戳选项的讨论,请参阅 RFC 1323

  5. 段包含 IPv4 选项或 IPv6 扩展标头。

  6. 段是 IPv4 片段。

  7. 合并当前接收的段将导致单个合并单元超过最大法定 IP 数据报长度。 此异常需要特殊处理。 有关详细信息,请参阅:

  8. 段包含符合以下一个或两个条件的 ECN 标志,如 RFC 3168 中定义:

    1. 段包含的 ECN 字段的值 (IP 标头中的 ECT、CE) 与上一段不同。

    2. 段的 ECN 标志的值 (TCP 标头中的 ECE 和 CWR) 与上一段不同。