当三层交换机收到一个帧之后--- “一次路由,多次交换”

        我中C/C++的毒比较深,总是喜欢以面线过程和面向对象的思维方式来看待整个流程。对于网络问题,我的基本思维模式就是,对象是数据(包),过程就是链路上的各设备见到数据包后依次做了些什么。

wKioL1OQOT_BqvphAABdDPDivVI932.jpg

对于路由缓存MLS:

  1. 先站在发送端A的角度思考问题,当数据链路层收到网络层交过来的数据报,它会首先判断其目标IP是否与自己处于同一子网(这大概是通过子网掩码来进行的吧,不知道划分子网和构造超网对客户端的配置是否也有影响,客户端的子网掩码也应该变吧),他才会知道该封装网关的MAC还是直接是目标主机的MAC。这里为当然应该使用网关的MAC.(这里的网关地址多为三层交换机上虚拟的VLAN接口IP地址,而客户端ARP请求获得的MAC则是与它相连的物理端口的MAC.)

  2. 当封装好的帧到达交换机的时候,交换机根据帧的目标MAC查CAM表,三层交换机中的CAM与二层交换机不同的是表中有交换机自己端口的MAC。所以,如果查表中发现是自己的MAC则交由三层处理,否者处理方式与二层一样。

  3. 交与第三层的包是如何处理的呢?根据母的IP地址查找路由表,找出转发出口及其MAC,然后把这个包交给第二层,第二层则根据目标IP解析出对应的MAC,重新封装后转发出去。

  4. 那么,一次路由,多次转发是怎么回事呢?当有了上边的一次转发后,就知道了,目的IP是xx的帧,就应该从哪个端口出去,MAC是多少,会把这些信息写入到一个表里,这个表就相当于是构建了一条捷径。下一次交换机收到一个帧的时候,如果目标MAC是自己,就会再直接根据目的IP查表,如果查到,就会直接根据该条目的信息封装然后转发,不会经过第三层了。



注:这是我自己根据自己的理解所写,不能保证完全正确,只为理清思路。


本文出自 “奋斗的菜鸟” 博客,谢绝转载!

你可能感兴趣的:(三层交换,路由缓存MLS,一次路由多次交换)