二层转发原理
数据帧
二层即数据链路层的转发是以数据帧的格式进行转发,数据帧的格式如下:
目的地址(Destination Address,DA) :可以是单独的地址,或者是广播或组播MAC地址。
源地址(Source Address,SA) :用来识别发送没备,在SA字段中,广播和组播地址格式是非法的。
类型(Type) :用类型字段来识别网络层的协议。
数据(Data) :这是从网络层传送到数据链路层的数据包。它的大小可以在46~1500字节之间变化。
帧校验序列(FraIue check sequence,FCS) :用来存放循环冗余校验(CRC)。
交换机
交换机有多个网络端口,它通过识别数据帧的目标 MAC 地址,根据 MAC 地址表决定从哪个端口发送数据。MAC 地址表不需要在交换机上手工设置,而是可以自动生成的。
交换机是如何添加、更新、删除 MAC 地址表条目
添加:数据帧到达交换机的端口时,交换机就会记录下数据帧的源MAC地址与接受数据帧的端口,同时在接收到这个数据帧时重置这个条目的老化计时器时间。这样凡是送到交换机端口的数据帧,都有对应的MAC地址条目。
更新:如果交换机再次从同一个端口收到相同 MAC 地址为源 MAC 地址的数据帧时,交换机就会更新这个条目的老化计时器,确保活跃的的条目不会老化。
删除:如果在老化时间内都没收到匹配这个条目的数据帧,交换机就会将这个老化的条目从自己的 MAC 地址表中删除。
交换机是如何转发数据帧
以主机A和主机C为例,使主机我们会先给主机接口上配置对应的IP地址:
主机A:1.1.1.2/24
主机C:1.1.1.4/24
与交换机相连的每一个主机都会发arp报文,告诉其他设备自己的IP和MAC ,这样每个主机也会有对应的arp缓存,用来存储IP和MAC 地址的映射关系。
此时如果我们在主机A上去ping 1.1.1.4,首先会查询本地的arp表,如果有直接取表项中IP对应的MAC 地址用来填充数据帧的目的MAC ,数据帧的源MAC 则为主机A发送报文出接口的MAC 地址。目的MAC 填充好之后,交换机通过解析二层头获取到目的MAC ,查找交换机上的MAC地址条目,从对应的端口将数据帧转出去。这样报文就可以到达主机C。
由此看来,交换机MAC地址条目中的MAC,学习的是数据帧的源MAC,转发时用作目的MAC。