ARP相关知识



我们在浏览器里面输入网址时,DNS服务器会自动把它解析为IP地址,浏览器实际上查找的是IP地址而不是网址。那么IP地址是如何转换为第二层物理地址(即MAC地址)的呢?在局域网中,这是通过ARP协议来完成的。ARP协议对网络安全具有重要的意义。通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞。所以网管们应深入理解ARP协议。

一、什么是ARP协议

ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写,是在仅知道主机的IP地址时确定其物理地址的一种协议,其主要用作将IP地址翻译为以太网的MAC地址,具体说来就是将网络层(IP层,也就是相当于OSI的第三层)地址解析为数据连接层(MAC层,也就是相当于OSI的第二层)的地址。
在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。

二、ARP协议的工作原理

在TCP/IP协议中,假设计算机A给计算机B发送IP包,在包头中需要填写B的IP为目标地址,但这个IP包在以太网上传输的时候,还需要进行一次以太包的封装,在这个以太包中,目标地址就是B的MAC地址. 
计算机A是如何得知B的MAC地址的呢?解决问题的关键就在于ARP协议。
在每台安装有TCP/IP协议的电脑里都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的。
在A不知道B的MAC地址的情况下,A就广播一个ARP请求包,请求包中填有B的IP,以太网中的所有计算机都会接收这个请求,而正常的情况下只有B会给出ARP应答包,包中就填充上了B的MAC地址,并回复给A。 
A得到ARP应答后,将B的MAC地址放入本机缓存,便于下次使用。 
本机MAC缓存是有生存期的,生存期结束后,将再次重复上面的过程。 
ARP协议并不只在发送了ARP请求才接收ARP应答。当计算机接收到ARP应答数据包的时候,就会对本地的ARP缓存进行更新,将应答中的IP和MAC地址存储在ARP缓存中。因此,当局域网中的某台机器B向A发送一个自己伪造的ARP应答,而如果这个应答是B冒充C伪造来的,即IP地址为C的IP,而MAC地址是伪造的,则当A接收到B伪造的ARP应答后,就会更新本地的ARP缓存,这样在A看来C的IP地址没有变,而它的MAC地址已经不是原来那个了。由于局域网的网络流通不是根据IP地址进行,而是按照MAC地址进行传输。所以,那个伪造出来的MAC地址在A上被改变成一个不存在的MAC地址,这样就会造成网络不通,导致A不能Ping通C!这就是一个简单的ARP欺骗。
 
三、如何查看ARP缓存表

ARP缓存表不但可以查看,也可以添加和修改。在命令提示符下,输入“arp -a”就可以查看ARP缓存表中的内容,用“arp -d”命令可以删除ARP表中某一行的内容;用“arp -s”可以手动在ARP表中指定IP地址与MAC地址的对应。

四、ARP欺骗

其实,此起彼伏的瞬间掉线或大面积的断网大都是ARP欺骗在作怪。从影响网络连接通畅的方式来看,ARP欺骗分为二种,一种是对路由器ARP表的欺骗;另一种是对内网PC的网关欺骗。 
第一种对路由器ARP表欺骗的原理是——截获网关数据。它通知路由器一系列错误的内网MAC地址,并按照一定的频率不断进行,使真实的地址信息无法通过更新保存在路由器中,结果路由器的所有数据只能发送给错误的MAC地址,造成正常PC无法收到信息。
第二种ARP欺骗的原理是——伪造网关。它的原理是建立假网关,让被它欺骗的PC向假网关发数据,而不是通过正常的路由器途径上网。在PC看来,就是上不了网了,“网络掉线了”。 
在宽带路由器中把所有PC的IP-MAC输入到一个静态表中,这叫路由器IP-MAC绑定。在内网所有PC上设置网关的静态ARP信息,这叫PC机IP-MAC绑定。要求两个工作都要做的,称其为IP-MAC双向绑定。 
显示和修改“地址解析协议”(ARP) 所使用的到以太网的 IP 或令牌环物理地址翻译表。该命令只有在安装了 TCP/IP 协议之后才可用。
 
五、ARP攻击

ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的进行。 基于ARP协议的这一工作特性,黑客向对方计算机不断发送有欺诈性质的ARP数据包,数据包内包含有与当前设备重复的Mac地址,使对方在回应报文时,由于简单的地址重复错误而导致不能进行正常的网络通信。一般情况下,受到ARP攻击的计算机会出现两种现象: 
1.不断弹出“本机的XXX段硬件地址与网络中的XXX段地址冲突”的对话框。 
2.计算机不能正常上网,出现网络中断的症状。 
因为这种攻击是利用ARP请求报文进行“欺骗”的,所以防火墙会误以为是正常的请求数据包,不予拦截。因此普通的防火墙很难抵挡这种攻击。

六、防御 

ARP欺骗可以导致目标计算机与网关通信失败 ,更可怕的是会导致通信重定向,所有的数据都会通过攻击者的机器,因此存在极大的安全隐患。 
基与PC到PC的IP-MAC双向绑定可以解决ARP欺骗 但是对于不支持IP-MAC双向绑定的设备 就需要用可以绑定端口-MAC的交换来预防ARP欺骗 。

七、一个例子

任何时候我们敲入下面这个形式的命令:
% ftp bsdi
都会进行以下这些步骤。这些步骤的序号如图4 - 2所示。
1) 应用程序FTP客户端调用函数g e t h o s t b y n a m e(3)把主机名(bsdi)转换成32 bit的IP地址。
这个函数在D N S(域名系统)中称作解析器,我们将在第1 4章对它进行介绍。这个转换
过程或者使用DNS,或者在较小网络中使用一个静态的主机文件(/e t c / h o s t s)。
2) F T P客户端请求T C P用得到的I P地址建立连接。
3) T C P发送一个连接请求分段到远端的主机,即用上述I P地址发送一份I P数据报。
4) 如果目的主机在本地网络上(如以太网、令牌环网或点对点链接的另一端),那么I P数
据报可以直接送到目的主机上。如果目的主机在一个远程网络上,那么就通过I P选路
函数来确定位于本地网络上的下一站路由器地址,并让它转发I P数据报。在这两种情
况下,I P数据报都是被送到位于本地网络上的一台主机或路由器。
5) 假定是一个以太网,那么发送端主机必须把32 bit的I P地址变换成48 bit的以太网地址。从逻辑I n t e r n e t地址到对应的物理硬件地址需要进行翻译。这就是A R P的功能。
A R P本来是用于广播网络的,有许多主机或路由器连在同一个网络上。
6) A R P发送一份称作A R P请求的以太网数据帧给以太网上的每个主机。这个过程称作广播,如图4 - 2中的虚线所示。A R P请求数据帧中包含目的主机的I P地址(主机名为b s d i),其意思是“如果你是这个I P地址的拥有者,请回答你的硬件地址。”
7) 目的主机的A R P层收到这份广播报文后,识别出这是发送端在寻问它的I P地址,于是发送一个A R P应答。这个A R P应答包含I P地址及对应的硬件地址。
8) 收到A R P应答后,使A R P进行请求—应答交换的I P数据报现在就可以传送了。
9) 发送I P数据报到目的主机。
在A R P背后有一个基本概念,那就是网络接口有一个硬件地址(一个48 bit的值,标识不同的以太网或令牌环网络接口)。在硬件层次上进行的数据帧交换必须有正确的接口地址。但是,T C P / I P有自己的地址: 32 bit的I P地址。知道主机的I P地址并不能让内核发送一帧数据给主机。内核(如以太网驱动程序)必须知道目的端的硬件地址才能发送数据。A R P的功能是在32 bit的I P地址和采用不同网络技术的硬件地址之间提供动态映射。
点对点链路不使用A R P。当设置这些链路时(一般在引导过程进行),必须告知内核链路每一端的I P地址。像以太网地址这样的硬件地址并不涉及。

八、ARP的分组格式

在以太网上解析I P地址时, A R P请求和应答分组的格式如图4 - 3所示( A R P可以用于其他类型的网络,可以解析I P地址以外的地址。紧跟着帧类型字段的前四个字段指定了最后四个字段的类型和长度)。
以太网报头中的前两个字段是以太网的源地址和目的地址。目的地址为全1的特殊地址是广播地址。电缆上的所有以太网接口都要接收广播的数据帧。
两个字节长的以太网帧类型表示后面数据的类型。对于A R P请求或应答来说,该字段的值为0 x 0 8 0 6。
形容词h a r d w a r e (硬件)和p r o t o c o l (协议)用来描述A R P分组中的各个字段。例如,一个A R P请求分组询问协议地址(这里是I P地址)对应的硬件地址(这里是以太网地址)。
硬件类型字段表示硬件地址的类型。它的值为1即表示以太网地址。协议类型字段表示要映射的协议地址类型。它的值为0 x 0 8 0 0即表示I P地址。它的值与包含I P数据报的以太网数据帧中的类型字段的值相同,这是有意设计的。
接下来的两个1字节的字段,硬件地址长度和协议地址长度分别指出硬件地址和协议地址的长度,以字节为单位。对于以太网上I P地址的A R P请求或应答来说,它们的值分别为6和4。
操作字段指出四种操作类型,它们是A R P请求(值为1)、A R P应答(值为2)、R A R P请求(值为3)和R A R P应答(值为4)(我们在第5章讨论R A R P)。这个字段必需的,因为A R P请求和A R P应答的帧类型字段值是相同的。
接下来的四个字段是发送端的硬件地址(在本例中是以太网地址)、发送端的协议地址(I P地址)、目的端的硬件地址和目的端的协议地址。注意,这里有一些重复信息:在以太网的数据帧报头中和A R P请求数据帧中都有发送端的硬件地址。
对于一个A R P请求来说,除目的端硬件地址外的所有其他的字段都有填充值。当系统收到一份目的端为本机的A R P请求报文后,它就把硬件地址填进去,然后用两个目的端地址分别替换两个发送端地址,并把操作字段置为2,最后把它发送回去。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值