Tcp wireshark pcap文件的数据包丢失

Tcp wireshark pcap文件的数据包丢失,tcp,wireshark,pcap,packet-loss,Tcp,Wireshark,Pcap,Packet Loss,我有两个来自发送方和接收方的wireshark pcap文件。我正在使用不同的协议(TCP、UDP、RTMP和RTSP)将实时视频从发送方传输到接收方。当网络断开时,有没有办法从两个pcap文件中获得数据包丢失 计算两个pcap文件之间的差异,您可以使用。它包含的工具可以完全满足您的需要 它类似于tracediff pcapfile:sender.pcap.gz pcapfile:receiver.pcap.gz方法1:统计数据包 $ tshark -r file1.pcap -Tfields

我有两个来自发送方和接收方的wireshark pcap文件。我正在使用不同的协议(TCP、UDP、RTMP和RTSP)将实时视频从发送方传输到接收方。当网络断开时,有没有办法从两个pcap文件中获得数据包丢失

计算两个pcap文件之间的差异,您可以使用。它包含的工具可以完全满足您的需要


它类似于
tracediff pcapfile:sender.pcap.gz pcapfile:receiver.pcap.gz

方法1:统计数据包

$ tshark -r file1.pcap -Tfields -e ip.src -e ip.dst -e tcp.srcport -e tcp.dstport > file1.txt 
$ tshark -r file2.pcap -Tfields -e ip.src -e ip.dst -e tcp.srcport -e tcp.dstport > file2.txt 
$ diff file1.txt file2.txt
0a1,2
> 172.16.0.67   172.16.0.97 22  56732
> 172.16.0.97   172.16.0.67 56732   22
如果您确定接收方没有从另一个发送方接收数据包,您可以简单地计算每个捕获文件中的数据包数量,以获得丢弃的数据包数量:

$ capinfos file1.pcap | grep "Number of packets:"
Number of packets:   12
$ capinfos file2.pcap | grep "Number of packets:"
Number of packets:   18
在这里,我有4个数据包的区别,因为文件2的捕获是在文件1之前开始的


方法2:比较文本转储

$ tshark -r file1.pcap -Tfields -e ip.src -e ip.dst -e tcp.srcport -e tcp.dstport > file1.txt 
$ tshark -r file2.pcap -Tfields -e ip.src -e ip.dst -e tcp.srcport -e tcp.dstport > file2.txt 
$ diff file1.txt file2.txt
0a1,2
> 172.16.0.67   172.16.0.97 22  56732
> 172.16.0.97   172.16.0.67 56732   22
在这里,我为每个包转储一些字段值,在我的例子中,这些值足够了。您可能需要转储不同的字段值。区分这两个文本文件会发现file2.pcap包含另外两个数据包


方法3:安装专用工具

如果您不反对安装新工具,有几种方法可以帮助您:

  • Tracediff将打印两个捕获文件之间不同的每个数据包的详细信息。您可以使用以下方法提取不同/缺失文件的数量:

    $ sudo apt install tracediff
    $ tracediff file1.pcap file2.pcap | grep "Capture: Packet Length:" | wc -l
    

您所说的“两个pcap文件的数据包丢失”是什么意思?您是说由于数据包丢失,在接收方检索到的pcap文件包含的数据包少于来自发送方的数据包,并且您想计算两个文件之间的差异吗?@Malt在流式传输时,我引入了一个故障,因此,这将导致Wireshark捕获的数据包丢失。我让wireshark在发送方和接收方运行,因此通过比较这两个捕获文件可以给出故障期间丢失的数据包数量。我想知道是否有办法得到那个号码。@pchaigno是的,这就是我想知道的。这个差异会告诉我在失败期间丢失或丢失的数据包的数量。在我的捕获文件中,除了tcp数据包之外,还有ARP、DHCP、ICMP数据包。我想知道有多少数据包丢失了。我尝试了方法1,它给出了每个pcap文件中的数据包数,该数据包数也显示在窗口右下角的wireshark中。我还尝试了方法3,它给了我信息,如数据包长度、方向值、报头长度、ID、源ip、目标ip、seq、ack等。从哪个值我可以知道丢失数据包的数量?在方法2中,“0a1,6”是什么意思?您是如何知道file2.pcap包含另外两个数据包的?这是diff中的格式。有关详细信息,请参阅。方法1是否不适用于您?对于方法3,如果您运行我给出的确切命令,它应该返回丢失数据包的数量。对于方法2,您必须向tshark的输出中添加其他字段。方法1给出pcap文件中的数据包总数。发生故障时,我的pcap文件包含TCP数据包以及ARP、DHCP和ICMP数据包。因此,即使这些数据包也将计入总数。所以这个数字不是我想要的。对于方法3,它在末尾给出“数据包长度”的值。它不返回丢失数据包的数量。它给我诸如数据包长度、方向值、报头长度、ID、源ip、目标ip、seq、ack等信息。从哪个值我可以知道丢失数据包的数量?