【问题标题】:Raw Socket Sniffing in GolangGolang 中的原始套接字嗅探
【发布时间】:2014-02-14 17:12:43
【问题描述】:

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

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

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

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

坦克!! :-)

【问题讨论】:

  • "目前的实现在Linux下使用了一个libpcap wrapper。我们需要把这个工具移植到Windows上。当然,目前还不行。"大概是因为WinPcap 由于某种原因无法工作,对吧?

标签: networking go libpcap sniffing


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您应该可以使用来自go.netipv4 package

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

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

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

    ipv6 还有一个等效包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-10
      相关资源
      最近更新 更多