标头数据拆分提供程序通过将接收的以太网帧中的标头和数据拆分为单独的缓冲区来提高网络性能。 标头数据拆分提供程序包括网络接口卡(NIC)和服务 NIC 的 NDIS 6.1 或更高版本微型端口驱动程序。
下图显示了标头数据拆分体系结构。
微型端口驱动程序从 NDIS 接收配置信息,以设置 NIC 用于标头数据拆分接收操作。 此外,微型端口驱动程序还会向 NDIS 公开 NIC 的服务,以便执行运行时作,例如发送和接收作。
能够进行标头数据拆分作的 NIC 接收以太网帧,并将标头和数据拆分为单独的接收缓冲区。
微型端口驱动程序使用正常的 NDIS 接收函数来指示收到的数据到 NDIS。 此外,驱动程序在指示收到的数据时,必须将唯一一个 NET_BUFFER 结构分配给 NET_BUFFER_LIST 结构。 有关详细信息,请参阅 指示收到的以太网帧。
对于头部数据拆分,NET_BUFFER 结构在接收指示中通过为头部和数据使用独立的内存描述符列表(MDL)来拆分接收到的以太网帧。 此外, NET_BUFFER_LIST 结构还包含NET_BUFFER_LIST信息中的标头数据拆分信息。
下图显示了收到的帧、拆分缓冲区和标头缓冲区的内存布局。
标头缓冲区应全部位于连续的存储块中。
上层协议是 IP 传输协议,例如 TCP、UDP 或 ICMP。
注意 出于定义标头数据拆分要求的目的,IPsec 不被视为上层协议。 有关拆分 IPsec 帧的详细信息,请参阅 拆分 IPsec 帧。