【发布时间】:2016-04-12 03:59:55
【问题描述】:
我注意到,对于在 Linux 上将一个数据包文件从远程 FTP 站点传输到本地主机,Wireshark 始终可以以正确的顺序捕获数据包,但不能在 tcpdump/libpcap 或 RAW_PACKET 上的简单 recvfrom 中捕获混杂模式。
在前者中,“传输完成”响应总是在单个数据包之前(在不同的连接中,因此没有 TCP 重新排序),但在后者中,数据包总是先到达 - 根据协议和FTP 服务器的实现,因为“传输完成”是在发送数据之后发送出去的 - 如果客户端在数据之前收到它,它会停止等待数据连接,这从那时起就没有发生我可以清楚地看到数据。所以 libpcap/tcpdump 实际上是按错误的顺序捕获数据包但在 Wireshark 中没有这样的问题?
这怎么可能?? Wireshark 也使用 libpcap...
【问题讨论】:
-
我发现如果原始数据包被“ETH_P_IP”(仅限IP数据包)捕获,来自不同连接的数据包的顺序将是正确的(如在Wireshark中),但不是“ETH_P_ALL”捕获一切!然而 ETH_P_ALL 是 tcpdump 中的默认值,所以它实际上被破坏了??
-
Wireshark 和 tcpdump 都使用 libpcap 捕获流量,而 libpcap ALWAYS 使用
ETH_P_ALL。
标签: linux wireshark pcap tcpdump sniffer