终止合并的异常条件

本节定义了具备接收段合并(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. IP 标头中的 ECN 字段(ECT、CE)在该段中的值与前一段的值不同。

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