拆分以太网帧概述

本部分介绍适用于标头数据拆分提供程序的特定标头数据拆分要求,具体取决于提供程序拆分的以太网帧的类型。

注意 阅读本主题中的一般要求后,可以使用后续主题了解每种以太网帧的特定要求。 后面的主题基于前面主题中的要求。 例如,如果帧包含 IPv4 和 UDP 信息,则应阅读 UDP 有效负载中的拆分 IPv4 帧和拆分帧主题。

如果标头数据拆分提供程序按照标头数据拆分要求拆分帧,则指示 NET_BUFFER_LIST 结构必须在 NblFlags 成员中设置NDIS_NBL_FLAGS_HD_SPLIT标志。 如果标头数据拆分提供程序不拆分帧,则必须使用 NblFlags 中清除的以下标志来指示该帧:

  • NDIS_NBL_FLAGS_HD_SPLIT

  • NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_HEADER

  • NDIS_NBL_FLAGS_SPLIT_AT_UPPER_LAYER_PROTOCOL_PAYLOAD

有关设置标头数据拆分NET_BUFFER_LIST标志和其他接收指示要求的详细信息,请参阅 使用Header-Data拆分接收指示

在某些情况下,标头数据拆分提供程序可以在标头数据拆分提供程序要求之外拆分收到的帧。 在这些情况下,除非第一个 MDL 包含的字节数至少与为查找头大小指定的 NDIS 相同,否则提供程序绝不应在 IP 标头、IPv4 选项、IPsec 标头、IPv6 扩展标头或上层协议标头中间拆分以太网帧。 有关观察头大小的详细信息,请参阅 OID_GEN_CURRENT_LOOKAHEAD

本节包括:

拆分 IPv4 帧

拆分 IPv6 帧

拆分碎片化 IP 帧

在上层协议标头的开头拆分帧

在 TCP 有效负载中拆分帧

在 UDP 有效负载中拆分帧

拆分除 TCP 和 UDP 以外的帧