
解答:尽管原始套接字和WinPcap都能够对较低层的网络通信流量进行发送和接收,但两种编程方法之间是有差别的,主要表现在以下几点:
1) 工作层次:在Windows环境下,WinPcap工作在网卡驱动之上,能够操控链路层的原始数据帧;原始套接字工作在协议栈实现之上,能够操控网络层的原始数据包。
2) 数据内容:包括帧首部在内的所有内容都是可以被WinPcap捕获和构造的;使用原始套接字接收和构造的数据不包括帧首部。
3) 协议类型:WinPcap可以发送和接收包括IP、ARP、RARP等协议上传输的数据;原始套接字不能配置帧类型,因此只能发送和接收IP协议及IP协议承载的其它协议。
4) 调用方法:使用WinPcap需要安装WinPcap驱动;使用原始套接字不需要附加的驱动。
实验
1. 请使用WinPcap编程实现ARP欺骗,该程序能够构造ARP请求包或响应包,携带错误的IP地址和MAC地址对应关系,改变局域网内主机ARP缓存中IP地址与MAC地址的对应关系。
解答:实现过程具体见《Windows网络编程实验》。
