Loopback-家里事家里了

为了检测一个socket服务是否正常运转,我们可以通过抓包的方式来验证,比如通过下面来抓包验证端口12345是否正常通信。

tcpdump -nn port 12345

监听开始后,通过telnet本端口,即可看到通信包。

然而当我在一台centos 6.5的机器上做如上操作时,一个包都没有抓到,但实际上socket服务是正常运转的(有其他方式验证,比如日志等)。该socket服务是监听在局域网网卡em1(10.0.0.20)上的,而tcpdump默认就是抓em1的包,所以我没有通过-i em1指定要抓包的网卡,但为什么一个包都没有抓到呢?

经过一番查找询问,找到问题的根源是lo网卡的原因。loloopback,是一块虚拟网卡,对应网址为127.0.0.1,流入它的网络包会立刻流出。除了主动访问lo网卡外,如果是本机的一个进程给另一个进程发送网络数据,也会走lo网卡,不管你用的内网地址还是外网地址,家里事家里了,没必要去麻烦内网和外网网卡。当然,根本原因是为了效率。

由此,将抓包命令换为下面的就可以抓到相关包了。

tcpdump -i lo -nn port 12345

标签: none

添加新评论