计算机网络设计与安全技术 课件6 ARP协议分析与程序设计_第1页
计算机网络设计与安全技术 课件6 ARP协议分析与程序设计_第2页
计算机网络设计与安全技术 课件6 ARP协议分析与程序设计_第3页
计算机网络设计与安全技术 课件6 ARP协议分析与程序设计_第4页
计算机网络设计与安全技术 课件6 ARP协议分析与程序设计_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《计算机网络设计与安全技术》第6章ARP协议分析与程序设计1学习内容:(1)ARP协议格式;(2)ARP协议包分析;(3)ARP协议编程。学习目标:(1)熟练掌握ARP协议的工作原理和应用方法;(2)具备ARP协议模拟运行的程序设计能力。26.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地址的连通性。然后,显示过滤出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地址(如)///<returns>目标机器的MAC地址</returns>publicstaticstringGetMacAddress(stringRemoteIP){

StringBuildermacAddress=newStringBuilder();

try

{

Int32remote=inet_addr(RemoteIP);

Int64macInfo=newInt64();

Int32length=6;

SendARP(remote,0,refmacInfo,reflength);

stringtemp=Convert.ToString(macInfo,16).PadLeft(12,'0').ToUpper();

intx=12;

for(inti=0;i<6;i++)

{

if(i==5)

{

macAddress.Append(temp.Substring(x-2,2));

}

else

{

macAddress.Append(temp.Substring(x-2,2)+"-");}

x-=2;

}

returnmacAddress.ToString();

}

catch

{

returnmacAddress.ToString();

}}136.3.2完整的ARP包收发程序设计本程序使用了Winpcap库函数。ARP模拟程序运行界面:本章小结ARP协议是TCP/IP协议集中网络层的重要协议,用于IP地址到MAC地址的解析。数据包从网络层转到局域网主机,ARP协议起到了重要作用。

本章首先介绍了ARP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论