我正在尝试在视频运行时从 youtube 计算丢包率。
我通过 Scapy 在eth0上一一嗅探数据包并过滤带有IP标头的TCP数据包。
要计算丢包率,我应该有一些收到的数据包和一些发送的数据包(或例外数据包)。
我可以轻松计算接收到的数据包数量,但是从 youtube 发送的数据包有问题。
我正在尝试在视频运行时从 youtube 计算丢包率。
我通过 Scapy 在eth0上一一嗅探数据包并过滤带有IP标头的TCP数据包。
要计算丢包率,我应该有一些收到的数据包和一些发送的数据包(或例外数据包)。
我可以轻松计算接收到的数据包数量,但是从 youtube 发送的数据包有问题。
我建议你试试这个:
准备低、中、高流量的模拟流量。您将生成流量,您将提前知道将要发送的总数据包。
1) 首先使用 tcpdump 捕获所有流量。
2)其次使用scapy捕获所有流量(避免使用python将数据包保存到磁盘)。
您将看到以下内容:
数据来源:计算机安全 – ESORICS 2011:第 16 届欧洲研究计算机安全研讨会。
我尝试了自己,得到了相同的结果。在没有启用 libpcap 的情况下,scapy 数据包丢失率为 96%。
记住 tcpdump 几乎是可以比较的完美案例。
比这要复杂一些,您需要查看重传(在超时限制内未确认的数据包)。
您看不到对方在到达您之前丢失的数据包。您可以做的是查看 TCP 序列号,看看是否有任何间隙在您接收数据包时出现乱序。
这可能表示数据包丢失,但不能保证。您可能需要对两个数据包之间允许多少间隙的时间限制进行一些试验,然后才能将其计为重传,而不仅仅是出于其他原因无序到达。
我建议尽可能多地阅读 TCP 协议以了解详细信息:https ://en.wikipedia.org/wiki/Transmission_Control_Protocol