我想使用Winpcap捕获所有通过服务器的千兆网卡的networking数据包。
假设我能够使用高达100%的networking连接,最高networking速度是1000Mbps。 如果我们排除TCP / IP头,最大的TCP数据速率应该大致为940Mbps。
假设我使用TCP目标端口6000,以940Mbps的速率通过网卡发送1GB文件。我使用Winpcap捕获所有通过网卡的networking数据包,然后将其转储到pcap文件。 如果我使用Wireshark来分析pcap文件,然后检查发送到TCP端口6000的所有networking数据包的数据包大小的总和,我能从pcap文件中得到正好1GB的数据吗?
谢谢。
假设您能够使用高达100%的networking连接,则最大networking速度不是1Gbps。 这是由于帧间差距和校验和造成的。 这甚至在开始考虑数据包标题之前(正如您在原始问题中正确提到的那样)。
同样如上面的评论所暗示的,典型的机器将难以以线速生成数据包,更不用说在线速上同时生成和捕获数据包。 我用来在wirespeed(在Linux机器上)生成数据包的一种方法是制作1500字节的数据包并使用tprep。 使用这种方法,我可以非常接近wirespeed,但是这会利用CPU〜100%,除非你是一个非常快的机器。
说了这么多,你的计划没有什么错,通过捕捉Wireshark和查看发送到TCP端口6000的数据量。 (请确保您只捕获TCP端口6000,而不是接口上的所有数据包。)您只需确保CPU未加载100%,以便数据包捕获无法处理所有数据包。 但是,无论使用哪种方法,情况都是如此。