ARP协议(地址解析协议)核心详解
ARP(Address Resolution Protocol,地址解析协议)是TCP/IP协议簇链路层与网络层之间的核心协议,核心作用是将网络层的IP地址解析为链路层的物理MAC地址,解决IP地址到硬件地址的映射问题——因为IP协议负责跨网络的主机寻址,但底层网卡之间的实际通信,必须依靠唯一的MAC地址完成帧传输。
一、ARP协议的核心定位
- 所属层级:工作在链路层(也常被归为网络层辅助协议),依赖以太网等链路层技术实现。
- 解决的核心问题:IP地址是逻辑地址(可手动配置、动态分配),MAC地址是物理地址(烧录在网卡中,全球唯一),底层通信只识别MAC地址,ARP就是二者之间的“翻译官”。
- 适用范围:仅在同一局域网(广播域)内生效,跨网段的IP地址解析,需要通过网关(路由器)的ARP代理完成。
二、ARP的核心工作流程(IP→MAC解析)
以主机A(192.168.1.10/AA:BB:CC:DD:EE:01)向同网段主机B(192.168.1.20/未知MAC)发送数据为例,完整解析流程分4步,核心是广播请求,单播响应:
步骤详解
- 查询本地ARP缓存:主机A先检查自身的ARP缓存表(内存中的临时映射表),如果已有192.168.1.20对应的MAC地址,直接使用,无需后续操作;若没有,进入下一步。
- 发送ARP广播请求:主机A构造ARP请求帧,目标MAC地址设为广播地址(FF:FF:FF:FF:FF:FF),帧中携带源IP/源MAC、目标IP(主机B的IP),通过以太网广播到整个局域网。
- 局域网主机接收并匹配:局域网内所有主机都会收到该广播帧,逐一对比帧中的目标IP与自身IP:
- 不匹配的主机:直接丢弃该帧,不做任何响应;
- 匹配的主机(主机B):将主机A的IP-MAC映射存入自己的ARP缓存(方便后续回传数据),然后构造ARP响应帧。
- 发送ARP单播响应:主机B的ARP响应帧中,目标IP/MAC设为主机A的信息,源IP/MAC为自身信息,通过单播方式发送给主机A(非广播,避免占用局域网带宽)。
- 更新ARP缓存并通信:主机A接收响应帧后,将主机B的IP-MAC映射存入ARP缓存,后续向B发送数据时,直接通过MAC地址封装以太网帧,完成底层通信。
三、反向解析:RARP协议
ARP是IP→MAC,而RARP(反向地址解析协议)是其逆过程,实现MAC→IP解析,适用于无磁盘/无配置的设备(如早期终端、嵌入式设备):
- 设备只知道自身MAC地址,不知道IP地址,通过发送RARP广播请求(携带自身MAC);
- 局域网中的RARP服务器接收请求,查询服务器中的MAC-IP映射表,通过单播向设备返回IP地址;
- 设备获取IP后,完成网络配置。
目前RARP已基本被DHCP协议替代(DHCP可同时分配IP、网关、DNS等信息,功能更全面)。
四、ARP缓存表(核心关键)
ARP缓存是主机/路由器中临时存储IP-MAC映射的内存表,是ARP协议高效工作的基础,核心特性:
- 时效性:缓存条目有过期时间(老化时间),默认一般为10~20分钟(不同系统可配置),避免因设备IP/MAC变更(如网卡更换、静态IP修改)导致映射失效。
- 两种条目:
- 动态条目:由ARP协议自动生成/更新,随老化时间过期;
- 静态条目:由用户手动配置(如
arp -s 目标IP 目标MAC),永久有效,不会过期,适用于网关、服务器等固定设备。
- 常用操作(Windows/Linux):
操作 Windows命令 Linux命令 查看ARP缓存 arp -aarp -n删除单个条目 arp -d 目标IParp -d 目标IP添加静态条目 arp -s 目标IP 目标MACarp -s 目标IP 目标MAC清空所有条目 无直接命令,需逐个删除 ip neigh flush all
五、ARP的两个重要扩展(跨网段/防攻击)
1. ARP代理(ARP Proxy)—— 跨网段解析
ARP本身仅在同一广播域生效,跨网段的IP解析需要网关(路由器)提供ARP代理功能(也叫代理ARP),分为正向代理ARP和反向代理ARP,核心逻辑:
- 主机A(192.168.1.10)向跨网段主机C(192.168.2.20)发送数据,先查询ARP缓存,无C的映射;
- 主机A发送ARP广播请求(目标IP:192.168.2.20),网关(192.168.1.1)接收后,发现目标IP属于其他网段,开启ARP代理;
- 网关将自身的MAC地址作为响应,向主机A返回ARP单播(即网关告诉主机A:“192.168.2.20的MAC是我的MAC,你把数据发给我,我帮你转发”);
- 主机A将网关的IP-MAC映射存入缓存,后续向C发送的数据都封装为目标MAC=网关MAC,由网关转发到目标网段,目标网段的网关再通过ARP解析主机C的MAC,完成通信。
2. 免费ARP(Gratuitous ARP)—— 防冲突/更新映射
免费ARP是一种特殊的ARP广播请求,特点是源IP=目标IP(即向自己的IP发送ARP请求),无实际解析需求,主要作用:
- IP地址冲突检测:主机开机/配置IP后,发送免费ARP,若局域网内有其他主机使用相同IP,该主机会返回ARP响应,本机即可检测到IP冲突并告警;
- 更新局域网ARP缓存:主机IP/MAC变更后(如静态IP修改、网卡热插拔),发送免费ARP,局域网内所有主机接收后,自动更新该主机的IP-MAC映射,避免旧映射导致通信失败;
- 集群服务通告:如VIP(虚拟IP)漂移后,集群节点发送免费ARP,让局域网内主机更新VIP对应的MAC地址,实现流量无缝切换。
六、ARP协议的安全问题:ARP欺骗(ARP泛洪)
ARP协议无身份验证机制,广播请求/单播响应均未做加密和校验,导致极易被攻击,ARP欺骗是最常见的网络攻击之一,分为主机欺骗和网关欺骗:
- 攻击原理:攻击者向目标主机/网关发送伪造的ARP响应帧,篡改目标主机/网关的ARP缓存,将攻击者的MAC地址伪装成网关/目标主机的MAC,实现流量劫持或网络断网;
- 攻击后果:
- 中间人攻击:所有目标主机与网关之间的流量,都会先经过攻击者主机,攻击者可监听、篡改数据;
- 网络断网:若攻击者将无效的MAC地址映射到网关IP,目标主机发送的数据会被丢弃,导致无法上网。
- 防御手段:
- 配置静态ARP条目:为主机/网关配置静态IP-MAC映射,避免动态缓存被篡改;
- 开启ARP防护:交换机开启DAI(动态ARP检测),主机开启防火墙的ARP防护功能,验证ARP报文的合法性;
- 端口绑定:交换机将端口与MAC地址绑定,禁止非绑定MAC的设备接入;
- 使用VLAN:将局域网划分为多个VLAN,缩小ARP广播域,限制攻击范围。
七、LwIP协议栈中的ARP实现
在LwIP中,ARP协议的实现集中在arp.c文件中,是链路层与网络层(ip4.c)的核心桥梁,核心关联与实现要点:
- 核心依赖:依赖
netif.c(网卡接口管理)、pbuf.c(数据包缓冲)、ethernetif.c(以太网驱动适配),ARP帧的收发通过以太网驱动完成; - 核心函数:
arp_init():初始化ARP模块,初始化ARP缓存表,注册以太网帧接收回调;arp_resolve():解析目标IP对应的MAC地址,先查ARP缓存,无则发送ARP广播请求;arp_input():处理接收到的ARP帧,完成缓存更新、响应发送;arp_timer():ARP缓存的老化定时器,定期清理过期的动态条目;
- ARP缓存实现:LwIP中ARP缓存是固定大小的数组(可通过宏
ARP_TABLE_SIZE配置,默认一般为10~32),每个条目包含IP地址、MAC地址、老化时间、状态(有效/无效); - 与IP协议的协作:IP协议(ip4.c)在发送IP报文前,会调用
arp_resolve()解析下一跳的MAC地址(直连网段为目标IP,跨网段为网关IP),解析成功后,将IP报文封装为以太网帧,通过网卡发送。
八、ARP协议的核心特点总结
- 工作范围:仅同一广播域,跨网段依赖ARP代理;
- 通信方式:广播请求,单播响应,减少局域网带宽占用;
- 缓存机制:临时缓存IP-MAC映射,带老化时间,兼顾效率与有效性;
- 无认证:协议本身无加密、无身份验证,存在ARP欺骗风险;
- 底层依赖:基于以太网等链路层技术,仅适用于有MAC地址的网络设备;
- 单向解析:核心是IP→MAC,反向解析(MAC→IP)为RARP,现已被DHCP替代。
九、ARP与其他协议的关联
| 协议 | 层级 | 与ARP的关系 |
|---|---|---|
| IP协议 | 网络层 | IP依赖ARP解析底层MAC地址,完成报文封装 |
| 以太网协议 | 链路层 | ARP帧基于以太网帧封装传输,依赖以太网的广播/单播 |
| DHCP协议 | 应用层 | DHCP分配IP后,主机通过ARP解析网关/其他主机MAC;替代RARP完成MAC→IP |
| TCP/UDP | 传输层 | TCP/UDP的报文封装在IP报文中,间接依赖ARP完成底层通信 |
简单总结:ARP是TCP/IP协议簇的“底层基石”之一,没有ARP,IP地址无法与底层硬件地址关联,所有跨主机的网络通信都无法完成,其核心设计“广播请求、单播响应”既保证了解析的有效性,又最大程度降低了对局域网带宽的占用。