一、ARP 是什么
ARP(Address Resolution Protocol,地址解析协议),属于网络层协议(也有教材将其归为链路层辅助协议),工作在同一个局域网内。
作用:根据目标IP地址,查询对应的MAC地址。
IP地址:三层逻辑地址,跨网段路由;
MAC地址:二层物理地址,只在同一个广播域生效。
简单一句话:已知IP,查MAC。
二、背景
以太网二层通信,数据包封装必须填写源MAC、目的MAC。
主机要把数据发给同网段另一台机器:只知道对方IP,不知道MAC,这时就需要ARP。
三、ARP报文封装
ARP报文封装在以太网帧里面:
- 以太网头部:源MAC,目的MAC(广播
FF:FF:FF:FF:FF:FF) - ARP报文:硬件类型、协议类型、硬件地址长度、协议地址长度、操作码(请求/响应)、源MAC、源IP、目标MAC、目标IP
操作码:
1:ARP请求2:ARP应答
四、ARP工作流程(同网段举例:主机A:192.168.1.10 → 主机B:192.168.1.20)
- 主机A先查本机ARP缓存表,缓存表保存
IP <-> MAC映射; - 如果缓存命中,直接拿到MAC,封装以太网帧发送;
- 缓存没有,则发送 ARP广播请求: 广播帧,发给局域网内所有设备:“谁的IP是192.168.1.20,请告诉我你的MAC地址,我的IP是192.168.1.10,MAC是AA:AA:AA:AA:AA:AA”
- 局域网所有主机收到广播,核对目标IP;只有主机B匹配;
- 主机B回复ARP单播应答,直接发给A:“192.168.1.20 的MAC是BB:BB:BB:BB:BB:BB”
- 主机A收到应答,将
192.168.1.20 + MAC存入本机ARP缓存(带TTL超时老化); - 之后A就可以封装二层帧,直接和B通信。
重点:ARP请求是广播;ARP应答是单播。
五、ARP缓存
主机维护ARP缓存表,存放IP-MAC映射,有老化时间。
Windows查看:arp -a
Linux查看:arp -n
缓存作用:减少ARP广播,提升网络效率;超时后条目自动失效,重新发起ARP查询。
六、跨网段通信时ARP的行为
A和B不在同一网段:
A不会直接ARP查询B的IP,而是ARP查询网关的MAC。
数据包目的IP仍然是B,目的MAC改为网关MAC;网关收到包后路由转发。
口诀:跨网段ARP只找网关,不找目标主机。
七、ARP相关安全问题
- ARP欺骗(ARP中毒)
攻击者发送伪造ARP应答,篡改目标主机ARP缓存,把网关IP绑定到攻击者MAC。所有流量被劫持。 - 防护方案:DAI(Dynamic ARP Inspection)、静态ARP绑定。
八、ARP、IP、MAC三者关系
- IP:三层,逻辑地址,跨路由器路由
- MAC:二层,物理地址,仅同一广播域
- ARP:完成同网段 IP → MAC 解析
反向解析RARP:已知MAC查IP,现在基本淘汰,被DHCP替代。
九、优缺点
✅ 优点
- 简单高效,局域网内快速完成地址映射;
- 广播机制,无需预先配置IP-MAC对应关系。
❌ 缺点
- 基于广播,广播域大时会产生大量广播流量;
- 协议原生无身份校验,极易遭受ARP欺骗。
十、小结
- ARP:地址解析协议,同网段内由IP查MAC;
- ARP请求广播,应答单播;结果存入ARP缓存,超时老化;
- 跨网段通信时,主机ARP查询网关MAC,不是目标主机MAC;
- 原生协议无认证,存在ARP欺骗风险;
- 只在同一个二层广播域生效,不能跨路由器。
思考题:ARP广播包能不能被路由器转发?为什么?
0 条笔记