首页 > 解决方案 > 通过 gopcap 向 127.0.0.1 发送数据包

问题描述

似乎通过使用 gopacket/gopcap 发送的数据包以某种方式“发送”,因为它们在 tshark 跟踪中可见:

444 143.613451037    127.0.0.1 → 127.0.0.1    UDP 66 6000 → 8888 Len=22

但是这些数据包永远不会到达在 127.0.0.1:8888 上侦听的同一台机器上的进程(例如netcat -ul 8888)。

有人对为什么会这样或要尝试的事情有任何暗示吗?如前所述,这些数据包实际上在 tshark 跟踪中可见......之后它们似乎完全消失了。

... irrelevant
out , err := pcap.OpenLive(*iface, 65535, true, -1 * time.Second)
out.WritePacketData(buf.Bytes())
... irrevelant

这个想法是构建数据包并发送它们,lo以便侦听的进程127.0.0.1:<some port>可以实际看到这些数据包。

IP src/dst 都是 127.0.0.1,以太网 src/dst 都是 00:00:00:00:00:00。

编辑:

就更多研究而言,似乎使用 pcap 发送数据包会绕过 IP 网络堆栈,从而使进程无法看到数据包。一种解决方法是在跟踪中剥离较低级别的数据包并打开常规 udp/tcp 套接字并通过该套接字发送有效负载。

标签: linuxgonetwork-programmingpcap

解决方案


就更多研究而言,似乎使用 pcap 发送数据包会绕过 IP 网络堆栈,从而使进程无法看到数据包。一种解决方法是在跟踪中剥离较低级别的数据包并打开常规 udp/tcp 套接字并通过该套接字发送有效负载。


推荐阅读