理解交换机与路由器工作方式(下)

Photo by Ehud Neuhaus on Unsplash

用语约定

路由表——路由器用来存放路由地址与对应接口的表。

路由器发出请求

承接上文。当路由器 Gig0/1 口得到交换机 A 发来的消息后,首先会确认消息中的目标 IP 是否在于路由表中,若存在,则将此消息交由对应的接口处理,否则就丢弃。本例中,此消息会继续交由 Gig0/2 接口处理。需要注意的是,IP 报文不需要修改,只需将数据帧上目的 MAC 地址修改成主机 B 的 MAC 地址。

查询 MAC 地址,没错,又是用到 ARP 。路由器会查询 ARP 表,若发现没有主机 B 的 MAC 地址信息,就会把这个消息丢弃,并向 Gig0/2 所在的局域网发起 ARP 请求广播,得到主机 MAC 地址之后会存放在本机的 ARP 表中。ARP 原理和前文一样,不再赘述。

再 Ping 一次

由于在上步中消息被路由器丢弃了,因此第一次 Ping 是不通的。我们再试一次。这次由于主机 B 的 MAC 地址已经在路由器的 ARP 表中了,我们的 ICMP 报文就可以稳稳的传到主机 B。这次 ICMP 报文传输的路径是这样的。

主机 A 填写 IP 报文,发现主机 B 的 IP 和自己不在一个网段,那么就把 IP 报文中的目标 IP 替换成路由器(网关)地址。然后查找自己的 ARP 表,把数据帧中的目的 MAC 地址改成路由器的 MAC 地址。

交换机 A 拿到主机 A 发过来的消息,拆解数据帧,得到目的 MAC 地址,查询自身的 MAC 表,从对应的接口中转发给路由器。

路由器拿到交换机 A 的消息,拆解 IP 数据报,得到目的 IP 信息,查找路由表,转发给对应接口处理。对应接口将 IP 数据报部分直接拿来,通过查询 ARP 表查询对应目的 IP 的 MAC 地址,并填写在数据帧的目的 MAC 部分。然后从接口传输出去。

交换机 B 接收到路由器发来的消息,拆解数据帧,得到目的 MAC 地址,查询 MAC 表,从对应接口转发给主机 B。

主机 B 发现得到消息,拆解 ICMP 报文部分,并给出相应消息。修改 IP 数据报中的目的 IP 和 源 IP,数据帧中的源 MAC 地址和目的 MAC 地址,发送给交换机。回去的路径就是前面所述的逆向过程。

总结

路由器和交换机每个接口都有独立的 MAC 地址。交换机再做数据包转发时,若不知道目的 IP 的 MAC 地址,也会向所在网段发送 ARP 请求来填充数据帧中的目的 MAC 地址。

二层交换机只查 MAC 地址表。路由器只查路由表(厂商用于优化构造的表不算)。

相关阅读

理解交换机与路由器工作方式(上)

参考资料

Cisco Packet Tracer 模拟器

发表评论

电子邮件地址不会被公开。 必填项已用*标注