一、简介
- 由于在实际网络的链路上传送数据帧时,最终必须使用MAC地址。因此,需要有一个协议,可以将自己的目的IP地址转换为目的MAC地址。
- 然而,IP地址是有规律的,MAC地址是没有规律的。MAC地址只跟网卡有关,每个网卡的MAC地址都是独一无二的。
- 因此,想知道目的主机的MAC地址,只能询问目的主机,您的MAC地址是多少啊?
- ARP协议:完成主机或路由器IP地址到MAC地址的映射。
- 使用过程:检查ARP高速缓存,有对应表项则写入MAC帧,没有则用目的MAC地址为
FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组,同一局域网中所有主机都能收到该请求。目的主机接收到请求后,就会向源主机单播一个ARP响应分组,源主机收到后将此映射写入ARP缓存。 - 其中,ARP缓存是会过期的,需要每隔10-20min更新一次。
1. ARP协议使用过程
1.1 检查ARP缓存
- 检查本地的ARP缓存(仅缓存本地的其他主机的MAC地址),如果有该IP地址的MAC地址,则直接将MAC地址填写到帧上面。
1.2 判断目的IP是否在局域网内
- 通过自己的子网掩码和目的IP地址相与,如果结果为自己的子网掩码,说明该IP地址在局域网内。否则,不在局域网内。
1.3 若IP地址在局域网内
- 发送一个广播的ARP请求分组,如上。IP1为源IP地址,MAC1为源MAC地址;IP3为目的IP地址,因为目的MAC地址不知道,因此目的MAC地址填写
FF-FF-FF-FF-FF-FF - 交换机接收到广播请求之后,转发到局域网内的每一台主机上,当目的主机接受到该广播地址之后,会根据源主机给的IP地址以及MAC地址,回复自己的IP地址以及MAC地址。
- 源主机就可以打包好自己要发送的数据,进行传输。
1.4 若IP地址不在局域网内
- 主机就发送一个广播ARP请求分组给默认网关,请求获取默认网关的MAC地址,并将默认网关的MAC地址填写到帧上面。
- 默认网关接收到之后,会将源MAC地址修改成自己的出口MAC地址,目的MAC地址修改为下一个网关的MAC地址。
- 以此类推,一直到目的主机的局域网之前的一个网关,该网关会通过ARP获取目的主机的MAC地址,然后将目的MAC地址修改成目的主机的MAC地址,然后再发送给该局域网的交换机。