我有一个关于使用golang嗅探tcp数据包的问题。
我们编写了一个小工具,可以捕获来自光纤分流器的所有传入TCP数据包。

当前的实现在Linux下使用libpcap包装器。 我们需要将此工具移植到Windows。 当然,目前尚不可能。

所以我的问题是,是否存在用于嗅探数据包的跨平台解决方案? 我们只需要TCP数据包,IP标头,没有以太网数据,并且不需要libpcap的所有功能。

如果没有跨平台的解决方案,那么两个Code的实现也是可以的。 我知道人们可以在Linux下使用原始套接字(在Windows下有一些限制)。 Golang是否支持原始套接字,是否有使用套接字嗅探数据包的示例实现?

坦克! :-)


您应该能够使用来自go.net的ipv4软件包。

Package ipv4 implements IP-level socket options for the Internet Protocol version 4.

ipv4.RawConn类型及其相关方法应跨平台工作。

A RawConn represents a packet network endpoint that uses the IPv4 transport. It is used to control several IP-level socket options including IPv4 header manipulation. It also provides datagram based network I/O methods specific to the IPv4 and higher layer protocols that handle IPv4 datagram directly such as OSPF, GRE.

ipv6也有一个等效的软件包。


看一下https://code.google.com/p/gopacket/,因为它支持pcap(为此需要cgo)并且可以解码许多协议,包括tcp / ip。