核心 · Key Idea
一句话:在同一个局域网(LAN)里,主机互发数据必须知道对方的 MAC 地址。**ARP(地址解析协议)**就是干这件事的:「已知 IP,求 MAC」。
是什么#
- MAC 地址:6 字节、48 位,写成
aa:bb:cc:dd:ee:ff,烧在网卡里,全球理论唯一。 - ARP:当你要往同一网段的某个 IP 发包时,先广播一句「谁是 192.168.1.5?告诉我你的 MAC」,目标主机回应,结果缓存起来下次直接用。
打个比方#
打个比方 · Analogy
你知道朋友家地址(IP),但快递员要往哪个门敲?快递员先在小区里大喊一声「192.168.1.5 是哪家?」,听到的人回他一个门牌识别码(MAC),然后他记下来 —— 下次再来直接敲那扇门。
关键概念#
MAC 地址Media Access Control Address
网卡硬件地址,48 位。前 24 位 OUI 标识厂商,后 24 位厂商内部编号。
ARP 请求ARP Request
广播帧(目的 MAC = ff:ff:ff:ff:ff:ff)问「谁有这个 IP」。
ARP 响应ARP Reply
对应主机单播回应「我的 MAC 是 xx」。
ARP 缓存ARP Cache
操作系统记录 IP→MAC 映射的表,几分钟过期。
免费 ARPGratuitous ARP
主机主动广播自己的 IP-MAC,常用于 IP 切换 / 故障转移。
怎么工作#
跨网段通信时,主机 A 解析的不是最终目标的 MAC,而是默认网关的 MAC:包到了网关再往下走。
实操要点#
arp -a查看 ARP 缓存(Linux / macOS / Windows 通用)。ip neigh是更现代的 Linux 命令。- ARP 欺骗(ARP Spoofing):攻击者伪造 ARP 响应骗局域网里的主机把流量发给自己 —— 公共 Wi-Fi 经典中间人攻击手法。
- MAC 地址可以软改:
ip link set eth0 address xx:xx:...。所以不要把 MAC 当作可信身份。 - 跨网段不靠 MAC:MAC 只在同一二层广播域里有意义,包到了路由器之后会重写以太网头(新的源 / 目的 MAC)。
易混点#
ARP
**本网段** 内:IP → MAC。
链路层广播实现。
链路层广播实现。
DNS
**互联网级别**:域名 → IP。
应用层 UDP/TCP 实现。
应用层 UDP/TCP 实现。