使用iftop通过特定端口的网络流量

时间:2016-03-09 08:52:48

标签: networking network-programming wireshark

我有一个使用https的流程。我使用ps找到了它的PID,并使用命令lsof -Pan -p PID -i来获取它正在运行的端口号。

我需要iftop来查看数据传输。我现在使用的过滤器是 iftop -f "port http 57787"

我不认为这给了我正确的输出。 有人可以帮助我使用iftop正确的过滤器,以便我知道只有这个端口的流量?

1 个答案:

答案 0 :(得分:3)

我在这里可以看到2个问题:

1 /这是一个错字吗?过滤的正确选项是-f(小" f")。 -F(大写" F")选项用于net / mask。

2 /虽然iftop文档未明确说明,但过滤的语法似乎是给出的几个示例中的pcap语法(并且使用ldd我可以看到,是的, iftop二进制文件与libpcap链接。因此,http的过滤器无效。要查看pcap过滤语法的文档,请查看pcap-filter (7) - packet filter syntax手册页。在您的示例中,过滤器如" tcp端口57787"没关系。 pcap不进行第5层及以上的协议剖析,例如http(pcap过滤器由内核中的BPF处理,所以在第4层以上,你自己就是这样,因为没有内核业务)。

总而言之,这些看起来像iperf个错误。它应该拒绝你的" -F"选项,甚至用" -f"而是退出并显示错误代码,因为pcap将拒绝过滤器表达式。没什么大不了的,iftop是一个适度的程序。见编辑方式。

编辑:

我刚检查了iftop版本1.0pre4的源代码,并且set_filter_code()中的packet_init()及其来电者iftop.c看起来没有明显的错误。它正确退出并出现错误,但是......

错误2,使用" -f"选项,但您的错误过滤器语法:

jbm@sumo:~$ sudo iftop -f "port http 57787"
interface: eth0
IP address is: 192.168.1.67
MAC address is: 8c:89:a5:57:10:3c
set_filter_code: syntax error

没关系。

错误1," -F"而不是" -f",有一个问题:

jbm@sumo:~$ sudo iftop -F "port http 57787"

(一切似乎或多或少都好,但随后退出程序)

Could not parse net/mask: port http 57787
interface: eth0
IP address is: 192.168.1.67
MAC address is: 8c:89:a5:57:10:3c

糟糕! "无法解析网络/掩码:端口http 57787"!这是一个错误:它应该马上退出。