三层转发原理(仅供小白参考)_第1张图片
1、Host A想要给Host B发送数据包,Host A检查目标的IP地址与自己的不在同一网段,需要通过网关进行转发。然而Host A检查自己的ARP缓存表里没有网关的MAC地址,于是就向A路由器(默认网关)发送ARP请求报文。
2、A路由器收到ARP请求后,将Host A的MAC地址学习且记录到自己的ARP缓存表里,并将自己E0接口的MAC地址应答给Host A。
3、Host A学习且记录A路由器E0接口的MAC地址,并重新发送ARP报文,然而此时的源IP地址与目标IP地址不变,目的MAC地址换为A路由器E0接口的MAC地址。
4、A路由器收到新的ARP报文并检查其MAC地址是否与自己的相符,检查相符后拆掉MAC头部封装。拆掉封装后得到一个IP数据包,A路由器认为此数据包将通过将进行转发并检查自己的ARP缓存表,寻找与目标IP相符的路由表项,然后根据路由表项的下一跳地址将数据包转发给自己的E1接口。
5、在A路由器E1接口的IP数据包将重新被封装上MAC头部,此时的源MAC为E1接口的MAC地址,目标MAC地址为与其相连B路由器E1接口的MAC地址,封装好后将数据帧转发给B路由器的E1接口。
6、B路由器从E1接口收到数据帧后检查其MAC地址与自己是否相符,检查相符后拆掉MAC头部封装。拆掉封装后得到一个IP数据包,B路由器检查自己的路由表里有与目标IP相符表项。它找到了与目标IP在与自己相连的接口E0是同一个网段,但是并不知道目标IP的MAC地址,于是就通过自己的默认网关发送ARP广播给Host B,Host B接受到ARP广播后应答给B路由器自己的MAC地址。
7、B路由器收到Host B的MAC地址后学习且记录到自己ARP缓存表里,然后将原有IP数据包重新封装上自己的MAC地址与Host B的MAC地址转发给Host B。