一尘不染

Golang的原始套接字嗅探

go

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

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

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

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

坦克!:-)


阅读 551

收藏
2020-07-02

共1个答案

一尘不染

您应该能够使用来自go.netipv4软件包

程序包ipv4为Internet协议版本4实现IP级套接字选项。

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

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

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

2020-07-02