loopback - 为什么环回接口上的 tcpdump 只捕获过滤器接收到的一半数据包?
问题描述
我试图理解为什么在环回接口上使用 tcpdump 时,过滤器接收到的数据包只有一半被捕获。但是当我运行完全相同的流量并在 eth0 接口上执行 tcpdump 时,所有流量都会被捕获。
在这两种情况下,我都针对流量和 tcpdump 的特定端口。
我在这里发现了一个类似的问题,为什么 tcpdump 捕获了一半的数据包
建议是它正在过滤接口发送和接收的重复项。他们正在查看整个界面,而不是挑选出特定的端口。在这里,情况似乎并非如此,因为我在特定端口上使用转储,流量的源端口和目标端口不同。还查看具有相同流量的 eth0,我可以看到 lo 和 eth0 过滤器正在接收的所有捕获的数据包。
例如,我向 eth0 和 lo 发送 10 个 udp 数据包,我得到以下信息:
tcpdump -i eth0 udp port xxxx
10 packets captured
10 packets received by filter
0 packets dropped by kernel
tcpdump -i lo udp port xxxx
5 packets captured
10 packets received by filter
0 packets dropped by kernel
所以看起来 tcpdump 只为环回过滤流量,可能每秒钟抓取一个数据包。时间戳似乎表明了这一点,就好像我以每秒 1 个数据包的速率发送数据包一样,在 eth0 上,我看到捕获的数据包以 1 秒的间隔发生。在 lo 上,捕获的数据包每隔 2 秒发生一次。
环回上的 tcpdump 是否有一些默认配置,导致它每隔一个数据包过滤一次?
还是我误解了什么?tcpdump 会根据所选的接口以不同的方式运行,这似乎很奇怪。
解决方案
推荐阅读
- scala - Spark - 如何处理更新
- robotframework - 将列表传递给机器人框架中的 python 库
- tesseract - 从图片中获取 Tesseract 中的空结果,但从上述图片的屏幕截图中获得了良好的结果
- python - Pandas 将日期时间对象类型转换为日期时间
- mysql - MySQL trigger after update to insert in audit table
- python-3.x - 如何使用 Ansible 2.9.2 python API 执行任务?
- java - 如何在 Kotlin/Java 中对 Numpy 数组(Python)进行 base64 解码?
- go - go中使用channel实现重试机制
- intellij-idea - IntelliJ : How to Fix "Code segment has wrong length in class file"
- php - Php function not returning array values