Winpcap 是否可以捕获通过千兆网卡的所有数据包而不遗漏任何数据包?

Winpcap 是否可以捕获通过千兆网卡的所有数据包而不遗漏任何数据包?

我想使用 Winpcap 捕获通过服务器千兆网卡​​的所有网络数据包。

假设我能够将网络链路利用率达到 100%,则最大网络速度为 1000Mbps。如果我们排除 TCP/IP 报头,则最大 TCP 数据速率应该大约为 940Mbps。

假设我使用 TCP 目标端口 6000 以 940Mbps 的速度通过 NIC 发送一个 1GB 的文件。我使用 Winpcap 捕获通过 NIC 的所有网络数据包,然后将其转储到 pcap 文件中。如果我使用 Wireshark 分析 pcap 文件,然后检查发送到 TCP 端口 6000 的所有网络数据包的数据包大小总和,我是否能够从 pcap 文件中获得恰好 1GB 的大小?

谢谢。

答案1

假设您能够将网络链路利用率提高到 100%,那么最大网络速度就不是 1Gbps。由于帧间间隙和校验和,网络速度会更低。这还是在您开始考虑数据包头之前(正如您在原始问题中正确提到的那样)。

还如上面的评论所暗示的那样,一台典型的机器很难以线速生成数据包,更不用说以线速同时生成和捕获数据包了。我用来以线速生成数据包的一种方法是(在 Linux 机器上)制作 1500 字节的数据包并使用 tcpreplay。使用这种方法,我可以非常接近线速,但这会占用大约 100% 的 CPU,除非你使用的是速度非常快的机器。

话虽如此,您通过捕获和使用 wireshark 查看来确定发送到 TCP 端口 6000 的数据量的计划并没有错。(确保您仅捕获 TCP 端口 6000,而不是接口上的所有数据包。)您只需要确保 CPU 负载不为 100%,这样数据包捕获就无法处理所有数据包。但是,无论您使用哪种方法,情况都是如此。

相关内容