有谁知道为什么我应该使用Winpcap而不仅仅是.Net套接字来嗅探我本地电脑上的数据包?
TY
答案 0 :(得分:11)
套接字(.NET,Winsock等)通常在第7层(应用层)收集。也就是说,发送者发送的内容是接收者接收的内容。在接收器从套接字读取数据时,发送端自动添加的所有各种标头都会被剥离。
可以将套接字配置为原始套接字,在这种情况下,您可以查看到第3层(网络层)的所有标头。此外,您可以将原始套接字置于混杂模式,这样您就可以查看网络上的所有流量,而不仅仅是发往您的计算机的数据包。但即使这样也是有限的。例如,在配置原始套接字时,指定要使用的协议类型,例如IP,ICMP等。这会限制套接字“看到”遵循该协议的数据包。我无法弄清楚如何使套接字看到第3层的所有数据包,无论协议如何。
Winpcap在第2层(数据链路层)作为设备驱动程序运行。在这种情况下,您可以看到网络上的所有数据包,其中包含完整的标头,直到第2层.Winpcap还提供过滤功能,因此您可以根据您提供的任何条件缩小报告给您的数据包。
就它们之间的选择而言,它实际上归结为您特定任务的要求。如果您正在尝试实现任何类型的真实网络分析功能,那么只需使用套接字即可轻松实现。在这种情况下,Winpcap更有意义。但是,例如,如果您只对IP数据包感兴趣,那么套接字就可以正常工作。
答案 1 :(得分:1)
据我所知,.Net套接字是一个IPC,用于在两个进程之间进行通信。虽然winpcap是一个帮助您访问数据链路层的库,但是可以通过计算机上的网络硬件(或虚拟)设备进行嗅探。数据链路层允许在系统上创建的任何套接字(.Net或非.Net)上获取数据。