首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >套接字与WinPcap

套接字与WinPcap
EN

Stack Overflow用户
提问于 2009-10-12 20:36:12
回答 2查看 3.4K关注 0票数 5

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

TY

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-10-14 19:55:53

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

可以将套接字配置为原始套接字,在这种情况下,您可以看到第3层(网络层)下的所有报头。此外,您还可以将原始套接字置于混杂模式,这样您就可以看到网络上的所有流量,而不仅仅是发往您机器的数据包。但即使是这样也是有限的。例如,当您配置原始套接字时,您指定要使用的协议类型,例如IP、ICMP等。这将套接字限制为“看到”符合该协议的数据包。我一直无法弄清楚如何使套接字在第3层看到所有数据包,而不管协议是什么。

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

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

票数 12
EN

Stack Overflow用户

发布于 2009-10-12 20:44:55

据我所知,.Net套接字是一个在两个进程之间进行通信的进程间通信接口。虽然winpcap是一个帮助您访问数据链路层的库,但它会嗅探通过您机器上的网络硬件(或虚拟)设备的数据包。数据链路层允许获取在系统上创建的任何套接字(无论是否为.Net)上的数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1556772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档