套接字VS WinPcap

Ita*_*y.B 4 sockets

有谁知道为什么我应该使用Winpcap而不仅仅是.Net套接字来嗅探我本地电脑上的数据包?

TY

Mat*_*vis 11

套接字(.NET,Winsock等)通常在第7层(应用层)收集.也就是说,发送者发送的内容是接收者接收的内容.在接收器从套接字读取数据时,发送端自动添加的所有各种头都被剥离.

可以将套接字配置为原始套接字,在这种情况下,您可以查看到第3层(网络层)的所有标头.此外,您可以将原始套接字置于混杂模式,这样您就可以查看网络上的所有流量,而不仅仅是发往您的计算机的数据包.但即使这样也是有限的.例如,在配置原始套接字时,指定要使用的协议类型,例如IP,ICMP等.这会限制套接字"看到"遵循该协议的数据包.我无法弄清楚如何使套接字看到第3层的所有数据包,无论协议如何.

Winpcap在第2层(数据链路层)作为设备驱动程序运行.在这种情况下,您可以看到网络上的所有数据包都有完整的标头,直到第2层.Winpcap还提供过滤功能,因此您可以根据您提供的任何条件缩小报告给您的数据包的范围.

至于在它们之间进行选择,它实际上归结为您的特定任务的要求.如果您正在尝试实现任何类型的真实网络分析功能,那么只需使用套接字就可以做到这一点.在这种情况下,Winpcap更有意义.但是,如果您只对IP数据包感兴趣,那么套接字将可以正常工作.