应用于局域网探测的ARP协议探讨
摘要:本文研究了网络类型探测的实现,给出了部分代码的实现过程,这对于ARP协议的应用有很好的借鉴意义。
关键词:局域网;探测;ARP;协议
中图分类号:TP393.1文献标识码:A 文章编号:1007-9599 (2011) 18-0000-01
ARP Protocol Used to LAN Detection
Fang Feifei,Lin Weiyan
(Nanjing University of Posts and Telecommunications College of Telecommunications&Information Engineering,Nanjing 210046,China)
Abstract:We research the type of detection to achieve the network,given some of the code of the implementation process,which for the application of the ARP protocol have a good reference.
Keywords:LAN;Detection;ARP;Protocol
一、引言
在步入信息社会后,网络安全问题也成为萦绕在人们心头的梦魇,其中,局域网经常会发作的ARP攻击就是显著的一例。在办公区、学校、网吧等局域网分布广泛的环境中,ARP攻击较为常见,发作时,同一网段内的电脑会无法上网,但间隔一定时间或在线人数少时会恢复正常。借助ARP发作的病毒程序通过截取同一网段中其他电脑的传输信息,会影响局域网畅通,严重者会造成网络宕机,甚至账号信息、资料被盗取。
二、ARP的工作原理
对于ARP的工作原理,因通信目标计算机不同,其具体情况也不一样,详见如下分析:
第一种情况:转换本地局域网的计算机IP地址为物理地址。其转换步骤有如下四步:(1)当两台计算机发生通讯要求时,定义ARP请求。入目标IP为本地IP时,源计算机在ARP缓存表中搜索目标计算机的物理地址。(2)如搜索不到映射,则设定ARP请求,请求中包括源计算机IP和物理地址,经过广播,局域网中的计算机都能获取并进行处理。(3)局域网中每台计算机都接手到广播并搜索匹配的IP。(4)目的计算机判断请求中的IP符合自己的IP时,回复ARP应答,把自己的物理地址发给源计算机。ARP缓存表以源计算机的IP和物理地址进行更新,源计算机收到应答就接通通信行为。
第二种情况:转换远程的计算机IP地址为物理地址。其步骤如下:(1)定义通讯要求,明确目标计算机IP是远程主机。进过在ARP缓存表中查找目标IP的物理地址。(2)如果没有记录,ARP通过广播网管地址请求,路由器相应源计算机的请求,源计算机想目标计算机的网络传递数据包。(3)在路由器上判断目标计算机是本地还是远程。(4)目标计算机接受请求发出相应,并在路由表中搜索源计算机网关,搜索后即确定物理地址。(5)如物理地址不在缓存表中,通过ARP广播搜索,既而确定源计算机物理地址。
三、网络类型探测研究
(一)基本功能的设计
这种网络类型探测研究实现的基本功能有:(1)第一步,根据定义的过滤条件对经过计算机的网络信息包进行过滤,对敏感信息包进行抓取。(2)第二步,把抓取的信息包在系统定义的文件中暂存(3)第三步,在软件中加载在上一步中保存的信息包,根据ARP协议中各信息包的格式对加载的信息包进行研究分析,获得信息包相关数据。(4)显示出所截取的报头中源主机IP地址、目的主机IP地址、源端口、目的端口等信息并保存到定义好的文件中,以供后续分析,由此可以判定该局域网是共享式还是交换式类型。
(二)系统流程的设计
系统流程的设计与软件的模块相对应,方便编程过程中更好地实现网络类型探测的功能。经过分析,该系统的关进步骤是对详细的数据包捕获和具体的数据包解析的过程,是最终进行类型判定的重要依据。根据各种条件判断,对条件判断的结果进行不同的处理。
四、部分代码的实现
(一)数据包的捕获思路
本捕获思路可以分为两大环节:驱动程序环节和应用程序环节。驱动程序环节的工作在中心环节,负责接收和发送网络数据,应用程序部分除了与驱动部分进行正确的通讯对接外,还要显示出分析信息来,并进行存盘、过滤等动作。应用程序随机分配缓冲区。实现思路的关键代码如下:
/*网络设备进行探测*/
If(pcap_findalldevs(&alldevs,errbuf)==1){fprintf(stderr,”Error in pcap_findalldevs:%s/n”,errbuf);exit(1);}
/+设置网卡为混杂模式•/
if((adhandle_pacp_open_live(d一>name,//设备名称
65536,//捕获信息包的端口号1,//设置网卡工作模式,1200,//读取信息包的最长时间,errbuf)//显示缓存错误的信息)==NULL)
释放设备清单
定制过滤条件
/*过滤条件设置完成,开始截取信息包*/
void packet_handler(U_Char dumpfile,const strust pcap—pkthdr header,const u_char pkt_data)
{Pcap—dumP(dumpfile,header,pkt—data)l}
(二)数据包的解析
截取后的信息帧经过解析既而得到想要的信息,例如所需要的信息帧的源地址,目的地址,协议类型等数据。通过WinPcap相关驱动获取函数接收的信息包,除了包含用户信息外,还包含时间戳记、信息包报头等原始信息,所以截获数据包以后,可以开展对数据包的分析。实现思路的过程如下所示。
将时间戳记转换成可读格式(h:m:s),打印时间和数据帧的长度。获取IP数据包头的位置将IP数据包协议字段的内容转为字符形式。
/•将信息包的长度转化为计算机能够识别的规则•/
total_len=ntohs(ih->tlen);pkt_pro=(char*)strProto,C_str();
/*判断协议类型,对不同的执行段分头进行*/
switch(pIpHeader->proto)
{获取TCP信息头的位置}{获取ICMP信息头的位置}
本地计算机不断地获取分析出的信息包,进行比对处理。如果接收到的信息包中发送目的物理地址不是本地计算机的物理地址,再结合各数据包中的协议信息,就能够准确地判断报文是ARP广播的,所以可以判定是共享式局域网还是交换式局域网。
五、结束语
ARP协议的工作应用之一就是对网络类型进行探测,通过一系列的实现步骤,可以判定该局域网是共享式还是交换式类型。
参考文献:
[1]王改芬.基于交换机的ARP欺骗探测[J].网管员世界,2009,14
上一篇:关于中小企业局域网构建的研究