本文仅供学习交流使用,侵权必删。
不作商业用途,转载请注明出处
ARP(Address Resolution Protocol),地址解析协议。是通过IP地址获取MAC地址的一个协议。源主机将包含了目标IP地址的ARP请求通过广播的方式发送给局域网中所有主机,让目标IP主机以一个带有MAC地址的ARP应答给源主机,以保证源主机能确定目标主机的MAC地址。
为了避免ARP请求造成频繁地网络通信。每台主机都会在本地维护一张ARP缓存MAC地址。
ARP同网段工作流程
- 首先源主机A在本地的ARP缓存中查看是否有目标主机B的MAC地址。
- 如果没有找到目标主机B的MAC地址,那么将ARP请求广播到本地网络的所有主机上。本地网络的的主机接收到请求后会校验是否跟自己的IP地址匹配,如果不匹配就丢弃ARP请求。
- 如果目标主机B确定ARP请求中的IP地址跟自己的IP地址匹配,那么先将源主机A的IP地址和MAC地址缓存到本地ARP缓存中。然后目标主机B将包含自己MAC地址的ARP应答发送回源主机A
- 源主机A接收到ARP应答后,会先更新ARP缓存。然后再继续跟目标主机B发起IP通信。
ARP跨网段工作流程
上面的ARP工作流程只是在同一个网段的工作流程。跨网段的情况下,源主机会将数据包发送到网关,再通过网关转发出去,大概流程如下:
- 源主机A发送数据到目标主机B,目标主机B跟源主机A不在同一网段。源主机A会先通过ARP请求获取网关的MAC地址。
- 收到网关MAC地址后,源主机A封装的数据包,数据包中的源IP地址和源MAC地址是A的地址。目标IP就是目标主机B的IP地址,MAC地址是网关的地址。然后将数据包发送给网关
- 网关收到数据包后,MAC地址匹配到,然后再匹配IP地址。因为IP地址不是自己的。然后网关会查询路由表,找到相应网段对应的接口。然后查询没有目标主机B的MAC地址,然后网关发送ARP请求获取目标主机B的MAC地址。
- 获取到目标主机B的MAC地址后,网关将源主机A发送的数据包的源MAC地址改成自己的地址,目标MAC地址改成目标主机B的MAC地址,IP地址的信息保持不变。然后将包发送给目标主机B。
- 目标主机B收到数据包后拆开数据包,匹配到MAC地址和IP地址后处理数据包中的数据
总结
- ARP请求是以广播方式发出
- ARP应答以单播方式回应
- ARP只能请求到同一个网段中的MAC地址,ARP的数据包不能穿透网关。由此可得,ARP缓存表中只会缓存同一个网段里面的MAC地址
网友评论