当主机 A 向同一个网段内的主机C 发送数据,但是不知道主机C 的 MAC 地址。 ARP 请求: 主机 A以主机 C 的IP 地址为目的IP 地址,以广播MAC 地址为目的 MAC地址,在同网段内发送这个广播报文,这个报文就叫 ARP 请求报文。 二层交换机不查看 IP地址,根据目的 MAC 地址将报文除接收端口外的所有端口发送。
ARP 响应: 主机 C发现目的 IP 地址是自己的IP 地址,于是主机C 以自己MAC 地址和 IP地址作为源 MAC 地址和源IP 地址,以主机A 的MAC 地址和 IP地址作为目的 MAC 地址和目的IP 地址,发送响应报文给主机A ,这个报文就叫 ARP 响应报文。其它主机收到主机A 的ARP 请求报文,因为目的 IP地址不是自己的 IP 地址,因此不会进行响应。
当主机 A在发送 ARP 广播请求报文时,二层交换机已经有主机A 的MAC 地址表条目。当收到主机 C 发送的单播ARP 响应报文时,二层交换机将报文从相应端口发送出去。并将主机 C 的MAC 地址和对应端口记录到 MAC地址表中。
更新 ARP缓存表:主机A 收到ARP 响应报文后,将主机 C的 IP地址和 MAC 地址记录到ARP 缓存表中。下次再向主机 C 发送数据时,直接将缓存的目的MAC 地址进行封装。
当主机 A 向不同网段的主机C 发送数据,但是不知道主机C 的 MAC 地址。 ü主机 A使用主机 C的 IP地址查询 ARP,ARP发现主机 C不在同一个网段,需要通过默认网关(即默认路由的下一跳地址),但是没有网关MAC 地址;
ü主机 A先将发送给主机 C 的数据放入缓存中,然后发送ARP 请求报文,主机A 以网关IP 地址为目的IP 地址发送 ARP 广播请求报文;
ü路由器收到 ARP广播请求报文后,将主机 A 的MAC 地址和对应端口添加到自己的MAC 表中,然后查看目的IP 地址发现是请求自己的MAC 地址,于是单播发送 ARP 响应报文;
ü主机 A收到 ARP响应报文后,将发送给主机 C 的数据封装网关 MAC 地址为目的MAC 地址进行发送;
ü路由器收到报文后,查看目的 IP 地址,是发送给主机C 的,于是查询路由表从相应端口发送数据。由于没有主机C 的MAC 地址,路由器发送 ARP 请求报文,源 MAC地址和源 IP地址替换为发送端口的MAC 地址和IP 地址;
ü主机 C收到 ARP请求报文后,添加路由器的端口和 MAC 地址到MAC 地址表,单播发送 ARP 响应报文;
ü路由器收到主机 C的 MAC地址后,将其添加到 MAC 地址表中。将主机A 发送给主机C 的报文重新封装,以自己的MAC 地址为源MAC 地址,以主机C 的MAC 地址为目的MAC 地址,发送给主机C ;
ü主机 C收到主机 A发送的数据,发送过程结束。
ü当主机 C向主机 A发送回复报文时,同主机 A 向主机C 发送数据的步骤一致
|