我开始了一个需要使用网络级数据包(如IP/ICMP/UDP/TCP数据包)的项目。winpcap/libpcap与原始套接字
处理它有两种主要方法:原始套接字和Winpcap/libpcap。
我知道pcap在OS上安装驱动程序,并允许程序员捕获和发送数据包。另一方面,在Windows 7或更高版本中有一些原始套接字有一些限制。
该项目需要向路由器发送一些IP/ICMP/UDP/TCP数据包并分析响应,如IP-Identifier
,TTL
,...。另外我希望它能在Linux和Windows上运行。
你能列出一个关于这两种方法的比较吗?
对于答案还不够,但原始套接字[在XP SP2之后的非服务器版本的Windows上不可用](http://msdn.microsoft.com/zh-cn/library/windows/desktop/ms740548%28v = vs.85%29.aspx#limits_on_raw_sockets)(在特定条件下)不仅仅是Windows 7. – 2012-02-20 20:51:33
事实上,我不知道pcap驱动程序是否可以发送数据,我认为它只能捕获。使用适用于Windows的服务器操作系统可能需要能够发送数据包。这是因为恶意软件长期滥用了这个功能,所以只有服务器(作为最终用户永远不需要伪造原始数据包)禁用它。 – 2012-02-20 20:56:47