Python wireshark看到但应用程序看不到的tcp重播中的多播

Python wireshark看到但应用程序看不到的tcp重播中的多播,python,udp,multicast,Python,Udp,Multicast,我有一个多播数据包捕获,我正在使用tcpreplay: sysctl net.ipv4.conf.all.rp_filter=0 sysctl net.ipv4.conf.eth0.rp_filter=0 tcpreplay -i eth0 --loop=100 new.pcap 我通过wireshark观察eth0上的流量,可以看到我感兴趣的数据包(比如224.0.23.60:4937) 但以下python应用程序找不到数据包: import socket import struct MC

我有一个多播数据包捕获,我正在使用tcpreplay:

sysctl net.ipv4.conf.all.rp_filter=0
sysctl net.ipv4.conf.eth0.rp_filter=0
tcpreplay -i eth0 --loop=100 new.pcap
我通过wireshark观察eth0上的流量,可以看到我感兴趣的数据包(比如224.0.23.60:4937)

但以下python应用程序找不到数据包:

import socket
import struct

MCAST_GRP = '224.0.23.60'
MCAST_PORT = 4937

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind((MCAST_GRP, MCAST_PORT))  # use MCAST_GRP instead of '' to listen only
                         # to MCAST_GRP, not all groups on MCAST_PORT
mreq = struct.pack("4sl", socket.inet_aton(MCAST_GRP), socket.INADDR_ANY)

sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)

while True:
   print '#'
   print sock.recv(64)
netstat-g提供以下输出:

lo              1      all-systems.mcast.net
eth0            1      224.0.23.60
我是不是遗漏了什么


[编辑]我应该明确指出,我的数据包捕获中的ip src不在同一网络子域中(ip src:192.168.1.10),而我的ip类似于146.186.197.164。

仔细阅读文档()后,tcpreplay似乎在TCP/ip堆栈和以太网设备驱动程序之间发送数据包,因此,主机系统的TCP/IP堆栈永远看不到数据包


最后,我使用了一个debian操作系统,虚拟机配置了只支持主机的适配器,并在该机器中使用了tcpreplay。

tcpreplay?我以为多播只是UDP?很显然,Tcppreplay能够播放UDP数据包,因为我可以在wireshark中看到UDP多播数据包。你的应用程序不发送任何内容@dsgdfg我的应用程序只是在侦听,流量是由Tcppreplay和数据包捕获(pcap)生成的。