第8章 数据包的发送

在实际应用中,经常需要人为地向网络发送原始数据包来分析网络存在的各种问题。比如,在网络测试中分析接收端软件接收数据包的性能,就需要了解达到多大网络流量时软件将会出现丢失数据包的现象。在这种情况下,就需要人为地生成不同的网络流量来测试软件的性能指标。

针对不同的应用需求,更需要不同的发送方式来满足这些需求。比如,为了测试网络的传输性能,可能还需要生成网络的峰值流量,即接近网卡带宽极限的流量。例如100Mbps的网卡需要发送99.8Mbps的流量。在某些情况下还可能会要求在特定时间段内生成恒定的网络流量,如连续生成50Mbps的网络流量两个小时。甚至有时候还需要严格控制每个数据包发送的时间间隔,如每200µs向网络发送一个数据包。诸如此类的要求,通过操作系统所提供的Socket方式无法有效实现,但通过使用WinPcap库提供的数据包发送功能,则可很容易地满足这些要求。

本章将演示一些使用WinPcap发送数据包的实例,同时结合WinPcap源代码,对网络分析中如何设计与实现灵活高效率的数据包发送功能进行详细的分析。