2013-10-11 30 views
1

以Windows 7爲例,我想了解如何在層3(IP)層編寫應用程序。以一個簡單的說明示例爲例,我想在C/C++中自己實現ping。我會如何去做這件事?在網絡層3和2編程

問題當然是,當在IP層而不是TCP/UDP層操作時,沒有端口號來識別IP層關閉分組的進程(我的進程)至。所以,這不可能是傳統的應用層程序。

相反,我認爲我需要的是編寫一個3級hdnler,它可以完成我想要的功能並將其註冊到操作系統,以取代現有的IP層implmentatio。

是我的思想糾正?如果是這樣,我將如何實現它?如果不是,那麼對比方法是什麼?

最後,我想問一下關於第2層(以太網)的完全相同的問題。我如何直接發送amd接收以太網幀?

+0

http://en.wikipedia.org/wiki/Raw_socket –

+1

對於IP以下的圖層,這是最流行的選項:http://www.winpcap.org/或http://www.tcpdump.org/ –

回答

1

winpcap最適合您的需求。 您可以通過windpcap API發送/接收原始數據包。 祝你好運。