计算机网络设计与安全技术 课件6 ARP协议分析与程序设计.pptx
《计算机网络设计与安全技术》第6章ARP协议分析与程序设计1
学习内容:(1)ARP协议格式;(2)ARP协议包分析;(3)ARP协议编程。学习目标:(1)熟练掌握ARP协议的工作原理和应用方法;(2)具备ARP协议模拟运行的程序设计能力。2
6.1ARP协议格式3在网络通信中,必须解决IP地址与MAC地址的映射问题,这种映射称为地址解析,有静态映射和动态映射两种方法。相应的协议是地址解析协议ARP(AddressResolutionProtocol),工作在网络层,负责将IP地址解析为MAC地址。在实际应用中,一般将静态映射和动态映射方法结合起来,这可以提高ARP的工作效率。实现的关键是在本地主机建立一个ARP高速缓存(ARPcache),里面包含所在局域网上的部分主机和路由器的IP地址到物理地址的映射表,这些都是该主机目前知道的一些地址。随着时间的推移,该表的信息将动态地更新。
46.1.1??ARP包格式由于物理帧长度范围是[64B,1500B],而ARP帧结构固定为28B,CRC字段为4B,因此,不足64B的部分需要填充数据。ARP帧结构中的目的MAC不起作用,可填充为任意值。此时,ARP包中的填充数据要填充0。ARP帧格式
56.1.2??ARP的工作原理
66.2??ARP协议包分析6.2.1ARP命令操作通过执行ARP命令,可以显示和修改本地主机的ARP表信息。ARP命令格式
7本地主机ARP表的地址映射信息
86.2.2ARP包分析过程通过执行Ping命令示例,测试与主机IP地址210.31.36.1的连通性。然后,显示过滤出ARP包。
96.2.3??ARP包间接交付如果源主机A和目的主机B不在同一网络内,则需要经历间接交付过程。在主机A的网络层运行的IP进程,首先判断A和B是不是在同一个局域网内。若是,直接交付主机B(使用ARP协议)。若不是,主机A把该数据包交给本地路由器(ARP)。然后,中间路由器一步步转发,最后到达目的网络。目的网络路由器进行直接交付(使用ARP协议)。在这种情况下,ARP协议的执行可能会面对三种情况:(1)主机到路由器:要解析目的路由器的MAC地址;(2)路由器到路由器:要解析目的路由器的MAC地址;(3)路由器到主机:要解析目的主机的MAC地址。
106.2.4?ARP包实例正常的ARP请求包正常的ARP应答包
116.3?ARP协议编程若要实现ARP协议包的收发任务,则必须完成以下程序模块:选择网卡、构造ARP请求包、数据帧的发送、ARP包的接收及其解析、获得ARP表信息并显示等。6.3.1?通过ARP协议由IP地址获取MAC地址usingSystem.Management;publicstringgetMac()//只能获取本机的MAC地址{????ManagementClassmc=newManagementClass(Win32_NetworkAdapterConfiguration);?????ManagementObjectCollectionmoc2=mc.GetInstances();????foreach(ManagementObjectmoinmoc2)????{????????if((bool)mo[IPEnabled]==true)????????{????????????returnmo[MacAddress].ToString();?????????????mo.Dispose();????????}???}???return;}
12可获取局域网任意客户机的MAC地址usingSystem.Runtime.InteropServices;usingSystem.Text;?[DllImport(Iphlpapi.dll)]staticexternintSendARP(Int32DestIP,Int32SrcIP,refInt64MacAddr,refInt32PhyAddrLen);?[DllImport(Ws2_32.dll)]staticexternInt32inet_addr(stringipaddr);?///summary///SendArp获取MAC地址////summary///paramname=RemoteIP目标机器的IP地址(如192.168.1.1)///returns目标机器的MAC地址/returnspublicstaticstringGetMacAddress(stringRemoteIP){????StringBuildermacAddress=newStringBuilder