在Golang的原始插座嗅探

Ski*_*ect 12 networking sniffing go libpcap

我有一个关于使用golang进行tcp数据包嗅探的问题.我们编写了一个小工具,可以捕获从光纤Tap传来的所有传入的TCP数据包.

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

所以我的问题是,是否有一个用于嗅探数据包的跨平台解决方案?我们只需要TCP数据包,IP头,没有以太网数据,也不需要libpcap的所有功能.

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

坦克!:-)

Int*_*net 8

您应该能够使用的IPv4包go.net.

包ipv4实现了Internet协议版本4的IP级套接字选项.

ipv4.RawConn类型和它相关的方法应该跨平台工作.

RawConn表示使用IPv4传输的分组网络端点.它用于控制多个IP级套接字选项,包括IPv4标头操作.它还提供特定于IPv4和更高层协议的基于数据报的网络I/O方法,这些协议直接处理IPv4数据报,例如OSPF,GRE.

ipv6还有一个等效的包.

  • 您回复中的链接不再有效 (2认同)

fio*_*rix 5

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