解析ARP数据包(二)——说明书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
解析ARP数据包(二)——说明书(2007-04-16 19:59:51)转载▼
标签:计算机网络课程设计分类:IT技术
一.课程设计要求
通过编制程序,获取网络中的ARP数据包,解析数据包的内容,将结果显示在标准输出上,并同时写入日志文件。
程序的具体要求如下所示:
1)以命令行的形式运行,如下所示:
arpparse logfile
其中,arpparse为程序名;logfile为日志文件名。
2)程序输出内容如下所示:
源IP地址源MAC地址目的IP地址目的MAC地址操作时间
各部分的说明如下所示:
?源IP地址:输出ARP消息格式中的源IP地址字段。
?源MAC地址:输出ARP消息格式中的源物理地址字段
?目的IP地址:输出ARP消息格式中的目的IP地址字段。
?目的MAC地址:输出ARP消息格式中的目的物理地址字段。
?操作:输出ARP消息格式中的操作字段,若为ARP请求,则为1,若为ARP应答,则为2。
?时间:该ARP包产生的时间。
3)当程序接收到键盘输入Ctrl十C时退出。
三.ARP协议工作原理
我们都知道以太网设备比如网卡都有自己全球唯一的MAC地址,它们是以MAC地址来传输以太网数据包的,但是它们却识别不了我们IP包中的IP地址,所以我们在以太网中进行IP通信的时候就需要一个协议来建立IP地址与MAC地址的对应关系,以使IP数据包能发到一个确定的地方去。
这就是ARP(Address Resolution Protocol,地址解析协议)。
四.ARP包的格式
?/P>
帧头部帧数据ARP消息
14B
ARP数据包封装成一个帧
物理帧头格式
ARP数据包格式
五.ARP协议工作流程
1. 首先,每台主机都会在自己的ARP缓冲区(ARP Cache)中建立一个ARP列表,以表示IP地址和MAC地址的对应关系。
2. 当源主机需要将一个数据包要发送到目的主机时,会首先检查自己ARP列表中是否存在该IP地址对应的MAC地址,如果有﹐就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。
此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。
3. 网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP 地址一致。
如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP 地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个ARP响应数据包,告诉对方自己是它需要查找的MAC地址;
4. 源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。
如果源主机一直没有收到ARP 响应数据包,表示ARP查询失败。
六.设计思路
本程序利用WINPCAP驱动为WIN32应用程序提供的访问网络底层的能力编写解析ARP 数据包的程序.
具体实现算法:
1. 得到网络驱动.利用PCAP提供的PCAP_findalldevs( )函数实现此功能.
2. 选择一块网卡,并判断其是否可用.
3. 编辑设置过滤器,使其只捕获ARP包.过滤函数PCAP_complie和PCAP_setfilter.设置函数为PCAP_setfilter( ).
4. 开始捕获数据包并进行处理.使用PCAP_next_ex( )函数实现此功能.。