2009-10-12 78 views
4

有誰知道爲什麼我應該使用Winpcap而不是.Net套接字來嗅探本地PC上的數據包?套接字VS WinPcap

TY

+0

這是否意味着使用WinPCap在速度方面性能更好,而不是用於發送數據的套接字? – bsobaid

回答

10

套接字(.NET,Winsock等)通常在第7層應用層收集。也就是說,發送方發送的是接收方接收的內容。在接收器從套接字讀取數據時,發送端自動添加的所有各種頭部將被剝離。

可以將套接字配置爲原始套接字,在這種情況下,您可以看到第3層即網絡層的所有標頭。此外,您還可以將原始套接字置於混雜模式,這樣您就可以看到網絡上的所有流量,而不僅僅是發往機器的數據包。但即使這樣也是有限的。例如,在配置原始套接字時,可以指定要使用的協議類型,例如IP,ICMP等。這會將套接字限制爲「查看」遵守該協議的數據包。我一直無法弄清楚如何讓套接字在層3看到所有的數據包,而不管協議如何。

Winpcap作爲第2層數據鏈路層的設備驅動程序運行。在這種情況下,您可以看到網絡上的所有數據包都帶有完整的標題,直到第2層。Winpcap還提供了過濾功能,因此您可以根據您提供的任何標準縮小報告給您的數據包的範圍。

至於他們之間的選擇,它真的歸結爲您的具體任務的要求。如果你正在嘗試實現任何一種現實的網絡分析能力,那麼你就會忍不住用套接字來做到這一點。在這種情況下,Winpcap更有意義。但是,如果您只對IP數據包感興趣,那麼套接字就可以正常工作。

+0

太好了。非常感謝你。 –

+0

我可以使用套接字捕獲MSN messanger和Yahoo Messanger對話嗎? –

+0

假設MSN/Yahoo messenger客戶端使用IP,那麼是的,原始套接字將從您的本地網絡連接中捕獲此信息。 –

1

據我understanf淨套接字的IPC到2個的進程之間進行通信。雖然winpcap是一個幫助您訪問數據鏈接層的庫,但sniff pacquets會通過您計算機上的網絡硬件(或虛擬)設備。數據鏈路層允許獲取系統上創建的任何套接字(.Net或不)的數據。