2012-05-16 16 views
3

(ARP =地址解析協議 - RFC 826) 有沒有辦法通過用戶世界程序在Windows上發送和接收ARP通信?在Linux上,我們可以創建原始套接字來發送ARP流量,但在Windows上,我的研究表明我們需要編寫一個可用於發送此類流量的驅動程序。我想過使用WinPcap,但它內部安裝了一個可用於發送/接收此類流量的驅動程序。從用戶模式程序在Windows上傳輸和接收ARP數據

我的問題是:沒有安裝驅動程序,是否有任何Windows允許發送/接收ARP數據包的方式?

回答

1

發送ARP數據包的最簡單方法是使用SendARP可能是

然後,您可以使用GetIpNetTable從IP堆棧的ARP表中檢索地址。爲確保您獲得當前地址,您通常需要執行DeleteIpNetEntry以刪除地址,然後SendARP,然後等待一段時間,然後GetIpNetTable(如果需要重複幾次,直到您獲得一個具有所需地址條目的地址)。

或者,對於Vista或更新版本,可以使用ResolveIpNetEntry2更直接地檢索數據。這會自動刷新地址的當前條目(如果有的話),發送一個ARP數據包,並返回一個當前結果(如果我沒有弄錯,它也會用來更新堆棧的ARP表)。

+0

感謝您的回答。有什麼方法可以控制自己發送/接收ARP數據包嗎?我想在這些數據包中搭載一些信息。我不認爲SendARP允許我這樣做。 – Specksynder

+0

@Specksynder:Windows確實支持原始套接字,但我試圖用它們來做到這一點。我沒有看到一個明顯的原因,它不應該工作,但我毫不猶豫地說,它會沒有測試。 –

相關問題