使用Golang进行原始套接字嗅探

16

我有一个关于使用Golang进行TCP数据包嗅探的问题。

我们编写了一个小工具,可以捕获来自光纤Tap的所有传入TCP数据包。

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

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

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

感谢!:-)


当前实现在Linux下使用了libpcap包装器。我们需要将此工具移植到Windows上。当然,目前这是不可能的。这可能是因为WinPcap由于某些原因无法使用,对吧? - user862787
2个回答

7

您应该能够使用来自 go.netipv4 package

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

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

RawConn 表示使用 IPv4 传输的数据包网络端点。它用于控制几个 IP 级套接字选项,包括 IPv4 头操作。 它还提供了针对 IPv4 和处理 IPv4 数据报的更高层协议(如 OSPF、GRE)的数据报网络 I/O 方法。

ipv6 还有一个等效的包。


2
您的回复中的链接已失效。 - Lan Vukušič

6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接