2019~2020

ARP协议

ARP协议

1.1ARP协议简介

地址解析协议(Address Resolution Protocol, ARP) 协议是用于根据给定网络层地址(通常是 IPv4地址),查找其对应的数据链路层地址,如 MAC地址,的协议。 ARP 协议 定义于 1982 年的 RFC 826。
可以简单理解为ARP就是为IP<-->MAC地址的一一映射关系,可以根据一个IP地址找到它对应的MAC地址,也可以根据一个MAC地址找到对应的IP地址。
根据TCP/IP四层(应用层,运输层,网络层,数据链路层)关系,可知ARP协议位于网络层与数据链路层之间;ARP是在同一局域网内部通信的,从不跨网络节点路由。

为简化讨论,本文提及的二三层均协议为Ethernet Protocol+IP Protocol。

1.2 RARP协议简介

RARP–可以理解为反向ARP,即从MAC地址找对应的IP地址协议;通常是需要远程启动(类似无盘工作站)的系统中使用。这种系统需要通过TCP/IP协议从服务器获取启动文件映像来启动计算机,而发送IP请求需要两个关键的地址:IP地址以及MAC地址,IP地址通常保存在二级存储器中、并在启动后载入系统;而需要远程启动的系统往往不具备二级存储器、因此在系统启动之前是没有IP地址的;通过TCP/IP协议启动、与启动后才有IP地址就出现了矛盾,于是RARP协议诞生了。
RARP协议的工作原理:
设备发送RARP请求给远程服务器、服务器接收到后检查是否有对应的MAC-IP关系映射,如果存在,则发送一个RARP响应数据包。设备收到服务器发送的RARP响应数据包,获取被分配的IP地址后,使用该IP地址发送TCP/IP请求获取启动文件映射。

1.3 ARP与RARP简单对比

从上面的简单介绍可以看出来:
相同点:ARP与RARP请求,都是广播报文;
不同点:对于ARP协议,所有host均要自行维护一个arp表项;而对于RARP环境,需要一个或多个RARP Server,维护mac<-->ip的映射。

2.ARP表项类型

设备通过ARP解析到目的MAC地址后,将会在自己的ARP表中增加IP地址和MAC地址映射关系的表项,用于后续到同一目的地报文的转发。
ARP表项分为动态ARP表项、静态ARP表项等

2.1 动态ARP表项

动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新,可以被静态ARP表项覆盖。当到达老化时间、接口状态down时,系统会删除相应的动态ARP表项。

2.2 静态ARP表项

静态ARP表项通过手工配置和维护,不会被老化,不会被动态ARP表项覆盖。配置静态ARP表项可以增加通信的安全性。静态ARP表项可以限制和指定IP地址的设备通信时只使用指定的MAC地址,此时攻击报文无法修改此表项的IP地址和MAC地址的映射关系,从而保护了本设备和指定设备间的正常通信。
静态ARP表项分为短静态ARP表项、长静态ARP表项。
1.长静态ARP表项可以直接用于报文转发,除了包括IP地址和MAC地址外,还需要包括以下两种表项内容之一:
*该ARP表项所在VLAN和出接口;
*该ARP表项的入接口和出接口对应关系
所以长静态ARP一般用于交换机等设备上;
2. 短静态ARP表项只包括IP地址和MAC地址
如果设备网口是三层以太网接口,短静态ARP表项可以直接用于报文转发。

3.ARP交互

由上知,ARP只在局域网内部通信,跨网络间通信由IP解决;ARP报文主要存在以下几种交互;

3.1 ARP request ARP reply

当一个设备准备发出一个IP报文时,首先要检查有没有对应的路由,查路由表后,找到下一跳;接着对报文进行封装以太头,然后把报文发布出去。
在报文封装以太头之前,需要知道下一跳的mac地址,如果没有对应的arp表项,设备就会发送ARP Request报文,这是一个广播报文,局域网内所有设备都会接受到这个请求,其中请求的目的IP是下一跳的IP地址,需要“知道”的是目的IP的mac地址,可见在请求报文中,目的MAC地址是全0;
image.png
当局域网的设备收到这条广播请求报文时,会将报文中源IP,源MAC添加至arp表项;同时检查目的IP是否为自己,如果不是,不回包,如果是自己,那么发送ARP Reply,这时一条单拨报文,把自己的MAC地址发送给请求方;
屏幕截图 2019-12-27 00.19.37.png
当设备收到ARP Reply后,将对应的IP、MAC关系写至ARP表项,同时对报文进行加封装(封装以太头),然后发送出去。

3.2 Gratuitous ARP

Gratuitous ARP,即免费ARP;其报文中源IP和目的IP都是自己的IP地址,可以用来检测IP地址是否冲突,如果存在IP地址重复,那么就会收到ARP Reply,说明局域网中存在IP相同的设备;同时可以更新局域网中其他设备的ARP表项,收到报文的设备,会更新自己的ARP表项,防止表项失效过期等。
……

4.报文字段解析


硬件类型(Hardware Type, HTYPE): 当前网络数据链路层的协议类型, 实际指定了硬件地址类型。如,以太网 的 HTYPE 是 1。
协议类型(Protocol Type, PTYPE): 上层网络协议,实际指定了待映射的网络地址的类型。如,IPv4 协议的 PTYPE 是 0x0800。
硬件大小(Hardware Length, HLEN): 硬件地址的长度(单位: 八位字节(Octets))。以太网的 HLEN 是 6。
协议大小(Protocol Length, PLEN): PTYPE 指定的上层协议的网络地址长度(单位:八位字节(Octets))。IPv4 协议的 PLEN 是 4。
操作(Operation, OPER): 该协议包的操作。1代表ARP请求,2代表ARP响应;3代表RARP请求,4代表RARP响应。
发送方硬件地址(Sender Hardware Address, SHA): 发送方的硬件地址。
发送方协议地址(Sender Protocol Address, SPA): 发送方的上层协议的网络地址。
目的硬件地址(Target Hardware Address, THA): 接收方的硬件地址。在 ARP 请求包的 THA 是0
目的方协议地址(Target Protocol Address, TPA): 接收方的上层协议的网络地址。

5.ARP安全相关

5.1ARP欺骗

如果环境中设备的ARP缓存是由ARP请求、应答数据包进行更新的,所以可以在局域网中,使用ARP请求报文,对设备进行ARP欺骗;
如果在一个局域网中,同时对目标主机和网关路由器进行欺骗,把目标主机的网关MAC“更新”为“中间人设备MAC”,把网关的目标主机MAC“更新“为”中间人MAC”;那么网关便认为中间人为目标主机,目标主机便认为中间人为网关,数据流量便走中间人通过,就可以对数据进行抓包分析,篡改、拦截——————>中间人攻击。
常见的ARP欺骗工具有arpspoof、ettercap等。

5.2 MACSEC

严格来说,MACSEC应该和ARP关系不大,MACSEC就是建立在交换机/网关和设备/交换机间建立安全通信(身份认证、数据加密、完整性校验、重播保护等常见的安全功能都有),可以说是“二层安全”,类似于三层安全的IPSec、四层安全的TLS等。

参考文献:
RFC826 Address Resolution Protocol
RFC903 A Reverse Address Resolution Protocol
Wikipedia

发表评论

电子邮件地址不会被公开。 必填项已用*标注