来自多播操作:
IP_ADD_MEMBERSHIP。回想一下,您需要告诉内核您感兴趣的是哪个多播组。如果没有进程对某个组感兴趣,则发送到该组的到达主机的数据包将被丢弃。
如果不这样做,就不会看到那些带有tcpdump的数据包。
发布于 2014-06-10 00:03:33
多播操作的链接页面没有提到tcpdump。
Tcpdump使用libpcap捕获网络数据包,在以太网上,libpcap支持这两种方式:
Tcpdump默认为请求混杂模式;在这种模式下,您甚至会看到未发送到主机的单播数据包(只要您不在交换网络上或处于交换网络上,而是插入到获取所有通信量的“镜像”端口中)。
如果您传递tcpdump -p标志,它将请求非混杂模式,在这种情况下,您只会看到您的机器“得到”的数据包;在这种情况下,如果没有进程在特定的多播组注册兴趣,您将不会看到发送到该组的多播地址的数据包,但在这种情况下,这不是一个错误,这是一个特性,因为您的机器没有对这些包做任何事情。
因此,如果您希望看到所有数据包(到所有主机的单播数据包,到所有多播地址的多播数据包,以及广播数据包),在混杂模式下运行tcpdump (或Wireshark或其他什么),如果您处于交换网络上,则在“镜像端口”或"SPAN端口“上运行,或者任何交换机供应商称之为”镜像端口“(如果支持”镜像端口“)。
有关混杂模式和交换网络的详细信息,请参阅基于以太网数据包捕获的Wireshark Wiki页面;该页面上的信息适用于所有数据包嗅探器,包括tcpdump,而不仅仅适用于Wireshark。
https://serverfault.com/questions/325677
复制相似问题