2014-01-23 43 views
11

我有一個關於使用golang的TCP數據包嗅探的問題。我們已經編寫了一個小工具來捕獲所有來自光纖分路器的傳入TCP分組。Golang的原始插座嗅探

當前實現在Linux下使用libpcap包裝器。我們需要將此工具移植到Windows。當然,目前這是不可能的。

所以我的問題是,是否有數據包嗅探一個跨平臺的解決方案?我們只需要TCP數據包,IP頭,不需要以太網數據,也不需要libpcap的所有功能。

如果沒有跨平臺的解決方案,兩個代碼的實現將是確定的,太。我知道可以在Linux下使用原始套接字(並且在Windows下有一些限制)。 Golang是否支持原始套接字,並且是否存在一個用套接字嗅探數據包的示例實現?

坦克! :-)

+0

「目前的實現在Linux下使用libpcap包裝,我們需要將此工具移植到Windows,當然,目前還不可能。」可能是因爲[WinPcap](http://www.winpcap.org)因某種原因不起作用,對吧? – 2014-10-03 22:55:23

回答

7

您應該能夠從go.net使用ipv4 package

包的IPv4實現對Internet協議版本4

ipv4.RawConn型IP級套接字選項和它相關的方法應該跨平臺工作。

甲RawConn表示使用IPv4傳輸的分組網絡端點。它用於控制多個IP級別的套接字選項,包括IPv4標頭操作。它還提供特定於IPv4和更高層協議的基於數據報的網絡I/O方法,這些協議直接處理IPv4數據報,如OSPF,GRE。

還有一個等效包ipv6