我正在学习Linux上的datalink raw socket编程,我发现这些很有帮助。我编译了icmp4_ll.c,并用它向同一局域网中的另一台计算机发送了一个ICMP数据包。我可以收到来自目的计算机的回复。但是,当我使用它向本地计算机发送ICMP数据包时,即,我将源和目的以太网的MAC和IP地址设置为eth0的MAC和IP地址,我无法在eth0或lo接口上收到ICMP应答(在Wireshark中,我只注意到通过eth0发送的ICMP请求,而没有注意到任何接口上的ICMP应答)。我认为ICMP请求消息的结构是正确的(否则远程目的地将不会应答)。但是我不知道为什么操作系统就是不回复请求。任何帮
我在路由器(Linux机器)上设置了这些接口:
br0: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1500
inet 192.168.0.3 netmask 255.255.255.0 broadcast 192.168.0.255
bridge name bridge id STP enabled interfaces
br0 8000.00156d8591ec no eth0
wlan0
eth