ARP地址解析,arp地址解析协议
本作品内容为ARP地址解析,格式为 doc ,大小 254464 KB ,页数为 19页
('使用ARP协议获取局域网内活动主机物理地址专业:计算机应用技术姓名:金晶学号:21201103771背景知识1.1ARP协议工作原理ARP协议工作在TCP/IP协议的第二层(数据链路层),用于将IP地址转换为网卡物理地址(NIC的MAC地址,媒体访问控制地址)。无论是任何高层协议的通信,最终都将转换为数据链路层的MAC通信。所以说,ARP协议时保证网络通信的基础协议。每台主机都会在自己的ARP缓冲区(ARPcache)中建立一个ARP列表,以存储IP地址和MAC地址的对应关系。ARP协议的工作流程为;(1)在发送一个分组之前,源主机首先根据目的IP地址,在本地ARP高速缓存表中查找与之对应的目的物理地址。如果找到对应的物理地址,就不用进行地址解析,否则需要进行地址解析。(2)实现地址解析的第一步是产生ARP请求分组。在相应的字段写入本地主机的源物理地址、源IP地址、目的IP地址、在目的物理地址字段写入0,并在操作字段中写入1。(3)将ARP分组发送到本地的数据链路层,并封装成帧。以源物理地址作为源地址,以物理广播地址(FF-FF-FF-FF-FF-FF)作为目的地址,通过物理层发送出去。(4)由于采用了广播地址,因此网段内所有的主机或设备都能够接收到该帧。除了目的主机外,所有接收到该分组的主机和设备都会丢弃该分组,因为目的主机能够识别ARP消息中的IP地址。(5)目的主机构造ARP应答分组。在ARP应答分组中,以请求分组中源物理地址,源IP地址作为其目的物理地址,目的IP地址,并将目的主机自身的物理地址,IP地址填入应答分组的源物理地址,源IP地址字段,并在操作字段中写入2。该分组通过数据链路层以点对点的方式发送出去。(6)源结点接收到ARP应答分组,知道对应于目的IP地址的目的物理地址,将它作为一条新纪录加入到ARP高速缓存表。(7)源结点将包含完整源IP地址,源物理地址,目的IP地址,目的物理地址的信息和数据作为一个发送分组,传送给它的数据链路层并封装成帧,然后以点对点的方式发送到目的主机。1.2ARP协议相关数据帧结构图1.1显示了ARP数据帧结构。图1.1ARP数据帧结构在Ethernet网上发送数据帧,还需要将此数据封装到物理帧中,封装后结构如图1.2所示。图1.2物理帧结构物理帧头结构如图1.3所示。图1.3物理帧头结构1.2Winpcap简介Winpcap(windowspacketcapture)是Win32平台上的、强大的、有较好扩展性的底层网络分析体系结构,是UNIX下的lipbcap移植到Windows下的产物,是Win32环境下数据包捕获的开放代码函数库。Winpcap是第一个win32开放式的捕获包的体系结构,能支持大多数应用程序的需要。Winpcap包含了一个内核级的数据包过滤器——NPF(NetgroupPacketFilter)、一个底层动态链接库(Packet.dll)和一个高层的独立于系统的库(Wpcap.dll)。这三个模块中,NPF属于内核级,其他两模块属于用户级。NPF模块过滤数据包,将数据包不做任何改动的传递给用户,它还包含了一些操作系统专用代码(如时间戳管理)。Packet.dll模块提供了Win32平台下的捕获包的驱动接口。实际上,不同版本的Windows都提供了不同的内核模块和应用程序之间的接口函数,Packet.dll有一套独立于系统的API函数来处理这些差异。基于Packet.dll编写的程序可以不经过重新编译就在各种Win32平台下实现捕获数据包。Packet.dll还包含了一些其他的函数,它可以进行一些底层的操作,Packet.dll和NPF都依赖于操作系统,并且由于Windows95/98和WindowsNT/2000之间操作系统的不同而在不同版本的操作系统上有所不同。Wpcap.dll库不依赖于操作系统,并且它包含了一些其他高层的函数,比如,过滤器生成器、用户定义的缓冲区和高层特性(数据统计和构造数据结构包)。Winpcap提供的功能包括4个方面:(1)捕获原始数据包,包括在共享网络上各主机发送/接收的以及相互之间交换的数据包;(2)在数据包发送应用程序之前,按照自定义的规则将某些特殊的数据包过滤掉;(3)在网络上发送原始的数据包;(4)收集网络通信过程中的数据流量。Winpcap的主要功能在于独立于主机协议(如TCP/IP)而发送和接收原始数据包。也就是说,Winpcap不能阻塞、过滤或控制其他应用程序数据包的收发,它只是监听共享网络上传送的数据包。因此,它不能用于QoS调度程序或个人防火墙。1.3使用Winpcap编程的一般步骤使用Winpcap编程的准备工作如下:(1)下载Winpcap驱动程序和相关版本的WpdPack包(Developers’sPack)。WpdPack包中含有Winpcap编程所需的头文件和lib库文件以及一些示例程序和帮助文档。下载地址为http://www.winpcap.org/install/default.htm。当前Winpcap的最新版本WinPcap4.0。(2)根据屏幕提示安装Winpcap驱动程序,安装后重启机器。(3)将WpdPack包解压到某个自定义的目录,在该目录中会看到docs、Include、lib、Example等文件夹。(4)在VC中设定Include目录及Library目录。(5)单击“Project->settings->Link”,在Object/librarymodules中添加wpcap。Lib。基于Winpcap的应用程序一般按照下面几个步骤:(1)获取网络设备列表;(2)选择网卡并打开;(3)当捕获数据包时,可能需要设置过滤器;(4)捕获数据包或者发送数据包。2开发环境操作系统:WindowsXP编程语言:C++开发环境:MicrosoftVisualC++6.0,Winpcap4.0运行环境:MicrosoftVisualC++6.0,Winpcap4.03程序主流程说明程序的主要流程为:(1)由于Winpcap需要绑定在某特定的网络适配器上,所以程序在开始的时候要首先获得系统中全部的网络适配器列表,由用户选择适当的适配器。(2)程序检测用户选择是否正确,确认无误后,获得本机的IP地址和MAC地址。(3)开启两个工作者进程分别获得发送ARP请求数据帧和接收分析ARP响应数据帧的工作。(4)接收到ARP响应数据帧后分析其有效性,并在确定某响应数据帧有效性后发送更新消息通知用户界面线程刷新界面显示刚刚获得的对应关系。程序流程图如图3.1所示。开始获取设备列表选择一个设备,并检查设备合法性获得本机IP地址和MAC地址开启两个工作者线程分别负责ARP数据包的收发接受消息,更新界面给本局域网内全部主机发送ARP请求数据包监听ARP响应数据包给主线程发送消息,更新界面超时程序结束YN图3.1程序流程图4程序详细设计4.1ARP数据包本程序涉及的核心数据结构包括Ethernet帧头部结构、ARP数据帧头部结构和最后封装ARP包结构。(1)Ethernet帧头部结构如下所示:structethernet_head{unsignedchardest_mac[6];//目的主机MAC地址unsignedcharsource_mac[6];//源端MAC地址unsignedshorteh_type;//Ethernet网类型};(2)ARP数据帧头部结构如下所示:structarp_head{unsignedshorthardware_type;//硬件类型:Ethernet网接口类型为1unsignedshortprotocol_type;//协议类型:IP协议类型为0x0800unsignedcharadd_len;//硬件地址长度:MAC地址长度为6Bunsignedcharpro_len;//协议地址长度:IP地址长度为4Bunsignedshortoption;//操作:ARP请求为1,ARP应答为2unsignedcharsour_addr[6];//源MAC地址:发送方的MAC地址unsignedlongsour_ip;//源IP地址:发送方的IP地址unsignedchardest_addr[6];//目的MAC:ARP请求中没有意义,相应中为接受方MACunsignedlongdest_ip;//目的IP:ARP请求中为请求解析的IP;ARP相应中为接受方IPunsignedcharpadding[18];};(3)ARP包结构如下所示:structarp_packet//ARP包结构{ethernet_headeth;//Ethernet网头部arp_headarp;//ARP数据帧头部};4.2显示网卡列表一台主机可能对应多个网卡,程序初始化时要分别列出所有网卡的详细信息,以供用户选择。显示网卡列表的代码下所示:if(pcap_findalldevs_ex(PCAP_SRC_IF_STRING,NULL,&alldevs,errbuf)==-1)//枚举系统所有网络适配器的名称{MessageBox("没有找到网络设备!",NULL,MB_OK);//显示错误信息return;}num=0;for(d=alldevs;d!=NULL;d=d->next)//显示网络列表{num++;buffer+=(char)(d->name);if(d->description){buffer+="";buffer+=(char)(d->description);buffer+="\\r\\n";GetDlgItem(IDC_COMPILE)->SetWindowText(buffer);//在编辑框中显示网络适配器名称}elseMessageBox("没有找到网络设备!",NULL,MB_OK);4.3选择网络适配器在编辑框中输入要选择的网络适配器的编号,根据通知消息EN_UPDATE得到选择的网络适配器以及网络适配器的接口列表。其主要实现代码如下:m_Select.GetWindowText(string);select=atoi(string);if(select>num)MessageBox("您所选择的网络适配器不存在!",NULL,MB_OK);//得到选择的网络适配器号d=alldevs;for(intl=0;l
提供ARP地址解析,arp地址解析协议会员下载,编号:1700739465,格式为 docx,文件大小为19页,请使用软件:wps,office word 进行编辑,PPT模板中文字,图片,动画效果均可修改,PPT模板下载后图片无水印,更多精品PPT素材下载尽在某某PPT网。所有作品均是用户自行上传分享并拥有版权或使用权,仅供网友学习交流,未经上传用户书面授权,请勿作他用。若您的权利被侵害,请联系963098962@qq.com进行删除处理。