ARP协议¶
ARP: Address Resolution Protocol(地址解析协议)
根据 IP 地址查询相应的以太网 MAC 地址
1. 以太网的协议中, 每一个数据包都有一个MAC地址
2. 每一块以太网卡都有一个MAC地址
IP包是如何知道这个MAC地址的?这就是ARP协议的工作
ARP(地址解析)协议是:
一种解析协议,
本来主机是完全不知道这个IP对应的是哪个主机的哪个接口,
当主机要发送一个IP包的时候,会首先查一下自己的ARP高速缓存(一个IP-MAC地址对应表缓存)
如果查询的IP-MAC值对不存在,主机就向网络发送一个ARP协议广播包,这个广播包里面就有待查询的IP地址
而直接收到这份广播的包的所有主机都会查询自己的IP地址
如果收到广播包的某主机发现自己符合条件,就准备好一包含自己的MAC地址的ARP包传送给发送ARP广播的主机
而广播主机拿到ARP包后会更新自己的ARP缓存(就是存放IP-MAC对应表的地方)
发送广播的主机就会用新的ARP缓存数据准备好数据链路层的的数据包发送工作
ARP 缓存:
$ arp -a
? (10.112.97.33) at f8:a2:d6:eb:82:31 on en0 ifscope [ethernet]
? (10.112.127.254) at 0:0:5e:0:1:3 on en0 ifscope [ethernet]
? (224.0.0.251) at 1:0:5e:0:0:fb on en0 ifscope permanent [ethernet]
? (239.255.255.250) at 1:0:5e:7f:ff:fa on en0 ifscope permanent [ethernet]
注:MAC地址长度为48比特(6字节)有下面2种写法:
a. 00-80-C8-2D-82-EA
b. f8:a2:d6:eb:82:31
注:
IP 地址发生变化时,ARP 缓存的内容就会和现实发生差异。为了防止这种问题的发生:
ARP 缓存中的值在经过一段时间后会被删除,一般这个时间在几分钟左右
这个删除的操作非常简单粗暴,不管 ARP 缓存中的内容是否有效,只要经过几分钟就全部删掉
注:
但 IP 地址刚刚发生改变的时候,ARP 缓存中依然会保留老的地址,这时就会发生通信的异常
遇到这种情况,可以查看 ARP 缓存的内容,并手动删除过时的条目