我開始了一個需要使用網絡級數據包(如IP/ICMP/UDP/TCP數據包)的項目。winpcap/libpcap與原始套接字
處理它有兩種主要方法:原始套接字和Winpcap/libpcap。
我知道pcap在OS上安裝驅動程序,並允許程序員捕獲和發送數據包。另一方面,在Windows 7或更高版本中有一些原始套接字有一些限制。
該項目需要向路由器發送一些IP/ICMP/UDP/TCP數據包並分析響應,如IP-Identifier
,TTL
,...。另外我希望它能在Linux和Windows上運行。
你能列出一個關於這兩種方法的比較嗎?
對於答案還不夠,但原始套接字[在XP SP2之後的非服務器版本的Windows上不可用](http://msdn.microsoft.com/zh-cn/library/windows/desktop/ms740548%28v = vs.85%29.aspx#limits_on_raw_sockets)(在特定條件下)不僅僅是Windows 7. – 2012-02-20 20:51:33
事實上,我不知道pcap驅動程序是否可以發送數據,我認爲它只能捕獲。使用適用於Windows的服務器操作系統可能需要能夠發送數據包。這是因爲惡意軟件長期濫用了這個功能,所以只有服務器(作爲最終用戶永遠不需要僞造原始數據包)禁用它。 – 2012-02-20 20:56:47