有没有人知道我为什么要使用Winpcap而不仅仅使用.Net套接字来嗅探本地计算机上的数据包?
TY
有没有人知道我为什么要使用Winpcap而不仅仅使用.Net套接字来嗅探本地计算机上的数据包?
TY
Sockets(.NET、Winsock等)通常在第7层,也就是应用层进行收集。也就是说,发送方发送的内容就是接收方收到的内容。发送端自动添加的各种标头会在接收方从套接字读取数据时被剥离。
可以配置套接字为原始套接字,这样您就可以看到所有标头,包括网络层(第3层)以下的标头。更进一步,您可以将原始套接字设置为混杂模式,以便查看网络上的所有流量,而不仅仅是针对您的计算机的数据包。但即使如此,也存在限制。例如,当您配置原始套接字时,需要指定要使用的协议类型,例如IP、ICMP等。这限制了套接字“可见”的数据包只能遵循该协议。我无法找到如何让套接字无论协议如何都能看到所有第3层的数据包。
Winpcap作为第2层数据链路层的设备驱动程序运行。在这种情况下,您可以看到网络上的所有数据包,并且可以查看完整的第2层标头。Winpcap还提供过滤功能,因此您可以根据提供的任何条件缩小所报告给您的数据包范围。
至于选择哪个,实际上取决于您所需任务的要求。如果您尝试实现任何实际的网络分析功能,仅使用套接字将会很难完成。在这种情况下,Winpcap更有意义。但是,如果您只对IP数据包感兴趣,那么套接字就足够了。