ARP(地址解析协议)
⽬录
1. ARP 概述
地址解析协议,即 ARP(Address Resolution Protocol),是根据IP地址获取物理地址的⼀个TCP/IP协议。它是IPv4中⽹络层必不可少的协议,不过在IPv6中已不再适⽤,并被邻居发现协议(NDP)所替代。
主机发送信息时将包含⽬标IP地址的ARP请求⼴播到⽹络上的所有主机,并接收返回消息,以此确定⽬标的物理地址;收到返回消息后将该IP地址和物理地址存⼊本机ARP缓存中并保留⼀定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建⽴在⽹络中各个主机互相信任的基础上的,⽹络上的主机可以⾃主发送ARP应答消息,其他主机收到应答报⽂时不会检测该报⽂的真实性就会将其记⼊本机ARP缓存;由此攻击者就可以向某⼀主机发送伪ARP应答报⽂,使其发送的信息⽆法到达预期的主机或到达错误的主机,这就构成了⼀个ARP欺骗。ARP命令可⽤于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP、代理ARP。
⽹络层使⽤的是 IP 地址,但在实际⽹络的链路上传输数据帧时,最终还必须使⽤该⽹络的硬件地址。但
IP 地址和下⾯的⽹络的硬件地址由于格式不同⽽不存在简单的映射关系。此外,⼀个⽹络上可能会经常会有新主机加⼊进来,或撤⾛⼀些主机。更换⽹络适配器也会使主机的硬件地址改变。地址解析协议 ARP 解决的⽅法是:在主机ARP⾼速缓存中应存放⼀个从IP地址到硬件地址的映射表,并且这个映射表还经常动态更新(新增或超时删除)。
注意:ARP是解决同⼀局域⽹中主机或者路由器的IP地址和硬件地址的映射问题,在每⼀台主机中都有⼀个ARP⾼速缓存(ARP cache),⾥⾯存储本主机所知道本局域⽹中其他主机的IP地址与硬件地址的映射表
2. ARP 协议⼯作原理
当主机 A 向本局域⽹上的某台主机 B 发送 IP 数据报时,就先在其 ARP ⾼速缓存中查看有⽆主机 B
的 IP 地址。如有,就在 ARP ⾼速缓存中查出其对应的硬件地址,再把这个硬件地址写⼊ MAC 帧,然后通过局域⽹把该 MAC 帧发往此硬件地址。
也有可能查不到主机 B 的 IP 地址。这可能主机 B 才⼊⽹,或者主机 A 刚刚加电,其⾼速缓存还是空的。这种情况下,主机 A ⾃动运⾏ ARP,然后按照以下步骤出主机 B 的硬件地址。
1. ARP进程在本局域⽹上⼴播⼀个ARP请求分组。ARP请求报⽂中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,⽬标IP地址和⽬标MAC地址为主机B的IP地址和全0的MAC地址。
2. 本局域⽹所有主机运⾏的ARP进程收到此ARP请求分组。
3. 主机B的IP与请求分组⾥⾯的IP⼀致,将ARP请求报⽂中的发送端(即主机A)的IP地址和MAC地址存⼊⾃⼰的ARP表中。之后向A发送ARP响应分组(单播);其他主机则不理睬
4. 主机 A 收到从主机 B 发来的 ARP 响应分组时,就在其 ARP ⾼速缓存中写⼊主机 B 的 IP 地址到硬件地址的映射。本机缓存是有⽣存期的,⽣存期结束后,将再次重复上⾯的过程。主机B的MAC地址⼀旦确定,主机A就能向主机
B发送IP通信了。
如果所要的主机和源主机不在同⼀个局域⽹,则源主机发送 ARP 请求分组,到本局域⽹上的⼀个路由器 R1 的硬件地址。剩下的⼯作由 R1 完成。
3. ARP 缓存
ARP⾼速缓存(即ARP表)是 ARP 地址解析协议能够⾼效运⾏的关键 (如果有多次ARP响应时,以最后⼀次响应为准)
每台主机或路由器在其内存中具有⼀个 ARP 表(ARP table),这张表包含 IP 地址到 MAC 地址的映射关系。该 ARP 表包含⼀个寿命值(TTL),它指⽰了从表中删除每个映射的时间。从⼀个表项放置到某 ARP 表中开始,⼀个表项通常的过期时间是 20 分钟。
4. ARP 报⽂格式
Wireshark 抓取 ARP 请求报⽂:
字段1:以太⽹⽬的地址(Destination)。是ARP请求的⽬的以太⽹地址,全1时代表⼴播地址。
字段2:以太⽹源地址(Source)。发送ARP请求的以太⽹地址。
字段3:帧类型(Type)。以太⽹帧类型表⽰的是后⾯的数据类型,ARP请求和ARP应答这个值为0x0806。(常见类型:0800:IP数据报;0806:ARP请求/应答数据报;8035:RAPP请求/应答;)
字段4:硬件地址(Hardware type)。表⽰硬件地址的类型,硬件地址不只以太⽹⼀种,是以太⽹类型
时此值为1。
字段5:协议类型(Protocol type)。指定协议地址类型,如0x0800表⽰协议地址类型为IPv4地址。该值与以太帧⾸部的类型字段相同。
字段6:硬件地址长度(Hardware size)。表⽰硬件地址的⼤⼩(单位:字节),如以太⽹地址为6。
字段7:协议地址长度(Protocol size)。表⽰协议地址的⼤⼩(单位:字节),如IPv4地址⼤⼩为4。
字段8:操作类型(Opcode)。值为1,表⽰进⾏ARP请求;值为2,表⽰进⾏ARP应答;值为3,表⽰进⾏RARP请求;值为4,表⽰进⾏RARP应答。
字段9:发送端以太⽹地址(Sender MAC address)。这⾥是以太⽹地址,和字段2相同。
字段10:发送端 IP 地址(Sender IP address)。
字段11:⽬的端硬件地址(Target MAC address)。
字段12:⽬的端 IP 地址(Target IP address)。
5. 抓包分析
下图红框中为 Wireshark 抓取的⼀对 ARP 请求和 ARP 应答
5.1. ARP 请求报⽂
tcpip协议pdf5.2. ARP 应答报⽂
6. 免费 ARP
免费 ARP 是指主机发送 ARP 查⾃⼰的 IP 地址。通常,发⽣在系统引导期间进⾏接⼝配置时。与标准 ARP 的区别就是免费 ARP 分组的⽬的 IP 地址字段封装的是⾃⼰的 IP 地址,即向所在⽹络请求⾃⼰的 MAC 地址。
免费 ARP 的作⽤:
1. ⼀个主机可以通过它来确定另⼀个主机是否设置了相同的 IP 地址。
主机并不希望对此请求有⼀个回答。但是,如果收到⼀个回答,那么就会在终端⽇志上产⽣⼀个错误消息
“以太⽹地址: a: b:c:d:e:f 发送来重复的 IP 地址”。这样就可以警告系统管理员,某个系统有不正确的设置。
2. 更新其他主机⾼速缓存中旧的硬件地址信息。
如果发送免费 ARP 的主机正好改变了硬件地址(很可能是主机关机了,并换了⼀块接
⼝卡,然后重新启动),那么这个分组就可以使其他主机⾼速缓存中旧的硬件地址进⾏相应的更新。⼀个⽐较著名的 ARP 协议事实[Plummer 1982]是,如果主机收到某个 IP 地址的 ARP 请求,
⽽且它已经在接收者的⾼速缓存中,那么就要⽤ ARP 请求中的发送端硬件地址(如以太⽹地
址)对⾼速缓存中相应的内容进⾏更新。主机接收到任何 ARP 请求都要完成这个操作(ARP 请求是在⽹上⼴播的,因此每次发送 ARP 请求时⽹络上的所有主机都要这样做)。
⽂献[Bhide、Elnozahy和Morgan 1991]中有⼀个应⽤例⼦,通过发送含有备份硬件地址和
故障服务器的 IP 地址的免费 ARP 请求,使得备份⽂件服务器可以顺利地接替故障服务器进⾏
⼯作。这使得所有⽬的地为故障服务器的报⽂都被送到备份服务器那⾥,客户程序不⽤关⼼
原来的服务器是否出了故障。但《TCP/IP 详解》作者反对这个做法,因为这取决于所有不同类型的客户端都要有正
确的ARP协议实现。他们显然碰到过客户端的ARP协议实现与规范不⼀致的情况。
3. ⽹关利⽤免费 ARP 防⽌ ARP 攻击。
有些⽹关设备在⼀定的时间间隔内向⽹络主动发送免费 ARP 报⽂,让⽹络内的其他主机更新 ARP 表项中的⽹关 MAC 地址信息,以达到防⽌或缓解 ARP 攻击的效果。
4. 利⽤免费 ARP 进⾏ ARP 攻击。
ARP 协议并不只在发送了 ARP 请求才接收 ARP 应答,计算机只要接收到 ARP 应答数据包,就会使⽤应答中的 IP 和 MAC 地址对本地的 ARP 缓存进⾏更新。
主机可以构造虚假的免费 ARP 应答,将 ARP 的源 MAC 地址设为错误的 MAC 地址,并把这个虚假的免费 ARP 应答发送到⽹络中,那么所有接收到这个免费 ARP 应答的主机都会更新本地 ARP 表项中相应 IP 地址对应的 MAC 地址。更新成功后,这些主机的数据报⽂就会被转发到错误的 MAC 地址,从⽽实现了 ARP 欺骗的攻击。
7. ARP 代理
如果 ARP 请求是从⼀个⽹络的主机发往另⼀个⽹络上的主机,那么连接这两个⽹络的路由器就可以回答该请求,这个过程称作委托 ARP 或 ARP 代理(Proxy ARP)。这样可以欺骗发起 ARP 请求的发送端,使它误以为路由器就是⽬的主机,⽽事实上⽬的主机是在路由器的“另⼀边”。路由器的功能相当于⽬的主机的代理,把分组从其他主机转发给它。
ARP 代理也称作混合 ARP(promiscuous ARP)或ARP 出租(ARP hack)。这些名字来⾃于 ARP 代理的其他⽤途:通过两个物理⽹络之间的路由器可以互相隐藏物理⽹络。在这种情况下,两个物理⽹络可以使⽤相同的⽹络号,只要把中间的路由器设置成⼀个 ARP 代理,以响应⼀个⽹络到另⼀个⽹络主机的 ARP 请求。这种技术在过去⽤来隐藏⼀组在不同物理电缆上运⾏旧版 TCP/IP 的主机。分开这些旧主机有两个共同的理由,其⼀是它们不能处理⼦⽹划分,其⼆是它们使⽤旧的⼴播地址(所有⽐特值为 0 的主机号,⽽不是⽬前使⽤的所有⽐特值为 1 的主机号)。
ARP 代理的优点:
1. 最主要的⼀个优点就是能够在不影响其他router的路由表的情况下在⽹络上添加⼀个新的router,这样使得⼦⽹的变化对主机是透明的
2. ARP 代理应该使⽤在主机没有配置默认⽹关或没有任何路由策略的⽹络上
ARP 代理的缺点:
1. 增加了某⼀⽹段上ARP流量
2. 主机需要更⼤的ARP table来处理IP地址到MAC地址的映射
3. 安全问题,⽐如ARP欺骗(spoofing)
4. 不会为不使⽤ARP来解析地址的⽹络⼯作
5. 不能够概括和推⼴⽹络拓扑
8. ARP 攻击
ARP 协议的基本功能就是通过⽬标设备的 IP 地址,查询⽬标设备的 MAC 地址,以保证通信的进⾏。基于 ARP 协议的这⼀⼯作特性,⿊客向对⽅计算机不断发送有欺诈性质的 ARP 数据包,数据包内包
含有与当前设备重复的 Mac 地址,使对⽅在回应报⽂时,由于简单的地址重复错误⽽导致不能进⾏正常的⽹络通信。
⼀般情况下,受到ARP攻击的计算机会出现两种现象:
1. 不断弹出“本机的XXX段硬件地址与⽹络中的XXX段地址冲突”的对话框。
2. 计算机不能正常上⽹,出现⽹络中断的症状。
因为这种攻击是利⽤ARP请求报⽂进⾏“欺骗”的,所以防⽕墙会误以为是正常的请求数据包,不予拦截。因此普通的防⽕墙很难抵挡这种攻击。
[参考⽂献]
1. 百度百科 ARP
2. 《计算机⽹络》谢希仁.
3. 《计算机⽹络⾃顶向下⽅法》
4. 《TCP/IP 详解卷1:协议》
5. ARP 详解
6. ARP 地址解析协议原理
7. 代理ARP(proxy ARP)的原理及其⼯作⽅式

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。