- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
《计算机网络设计与安全技术》第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
文档评论(0)