【发布时间】:2012-03-11 04:35:40
【问题描述】:
我开始了一个项目,需要使用网络级别的数据包,例如 IP/ICMP/UDP/TCP 数据包。
有两种主要的处理方法:原始套接字和 Winpcap/libpcap。
我知道 pcap 在操作系统上安装驱动程序并允许程序员捕获和发送数据包。另一方面,原始套接字在 Windows 7 或更高版本中有一些限制。
项目需要向路由器发送一些IP/ICMP/UDP/TCP数据包并分析响应,例如IP-Identifier,TTL,...。我也希望它可以在 Linux 和 Windows 中运行。
你能列出这两种方法的比较吗?
【问题讨论】:
-
没有足够的答案,但原始套接字是not available on non-server versions of windows after XP SP2(在某些条件下)不仅仅是 Windows 7。
-
其实我不知道pcap驱动能不能发数据,我以为只能抓包。使用适用于 Windows 的服务器操作系统可能需要能够发送数据包。这是因为恶意软件已经滥用了很长时间,他们为除服务器之外的所有人禁用了它(因为最终用户永远不需要伪造原始数据包)
标签: java c++ pcap libpcap raw-sockets