Golang的原始套接字嗅探

我有一个关于使用golang嗅探tcp数据包的问题。

我们编写了一个小工具,可以捕获来自光纤分流器的所有传入TCP数据包。 </ p>

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

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

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

坦克!! :-) </ p>
</ div>

展开原文

原文

I have a question concerning tcp packet sniffing with golang. We have written a small tool which captures all incoming TCP packets comming from a fibre Tap.

The current implementation uses a libpcap wrapper under Linux. We need to port this tool to Windows. Of course, it is not possible at the moment.

So my question is, is there a cross platform solution for sniffing packets? We only need TCP packets, IP headers , no Ethernet Data and not all features of libpcap.

If there is no cross platform solution, two Code implementation would be ok, too. I know one can use raw sockets under Linux (and with some limitations under Windows). Does Golang support raw sockets and is there an example implementation for sniffing packets with sockets?

Tanks!! :-)

duanbo6871
duanbo6871 “当前的实现在Linux下使用libpcap包装器。我们需要将此工具移植到Windows。当然,目前尚不可能。”大概是因为WinPcap由于某种原因无法工作,对吧?
接近 6 年之前 回复

2个回答



您应该可以使用 go.net 中的go.net/ipv4">ipv4软件包。< / p>


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

href =“ http://godoc.org/code.google.com/p/go.net/ipv4#RawConn”> ipv4.RawConn 类型,并且其相关方法应跨平台工作。</ p>


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

ipv6 的等效软件包。</ p>
</ div>

展开原文

原文

You should be able to use the ipv4 package from go.net.

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

The ipv4.RawConn type and it's associated methods should work cross-platform.

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.

There is also an equivalent package for ipv6.



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

展开原文

原文

Take a look at https://code.google.com/p/gopacket/ since it supports pcap (requires cgo for this) and can decode a number of protocols including tcp/ip.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问