二层数据交换机的工作原理

交换机

交换机工作在数据链路层,以数据帧作为传输载体,依靠mac地址表作为转发依据

工作原理

1、基于mac地址学习 (收到终端发来的包,记录下端口)
2、收到一个广播,除源端口,所有端口转发
3、基于目的mac转发
4、在不同时间的不同端口收到相同的mac地址,选择最新的

交换机通信分析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mDa9UqK7-1586404750430)(https://i.imgur.com/RGnGLGk.png)]

假设这是一个刚刚建立的网络
pc1的ip:10.1.1.1 
mac:54-89-98-5A-1D-F1

pc2的ip:10.1.1.2
mac:54-89-98-20-32-C5

pc3的ip:10.1.1.3
mac:54-89-98-85-0E-E2

此时pc1执行pin 10.1.1.2 这条命令,由应用层产生数据,向下逐层封装,封装到数据链路层的时候
因为不知道目的mac,所以以太网帧的封装不了的,此时,pc1向交换机发送一个arp requst包
交换机收到arp requst包,解封装到数据链路层,交换机首先把剥开的mac地址
与自己的mac地址表对比,发现自己的mac地址表里没有这个mac,所以就把这个mac保存在自己的mac地址表里面
然后就会看到这个帧里面的类型,为0x0806,是一个广播包,马上把它转发到除源端口外的所有端口,
两种情况:
(1)pc2收到的时候解封装到网络层,更新自己的arp缓存表,记录下这个包的源ip和对应的源mac(即pc1的ip、mac)
(2)然后发现这个包的目的IP是自己,它就会回一个arp reply单播包给pc1
(3)而arp reply 在经过交换机的时候,交换机会解封装到数据链路层发现这个包里面的源mac自己的mac 地址表里面没有
(4)然后更新自己的mac地址表,记录下这个mac 和这个mac进来的端口
(5)pc1收到之后,更新自己的arp缓存表,记录下这个包的源ip和源mac(即pc2的ip、mac)
(6)然后继续封装,完成之后,将ping的数据发给交换机,
(7)交换机解封装,看到里面的目的mac,对照自己的mac地址表,将数据从对应的端口发出去

第二种情况:
 (1)pc3收到交换机发过来的arp requst包之后,解封装到数据链路层,
(2)更新自己的qrp缓存表,记录下这个包的源mac 和 源ip(即pc1的 mac 和 ip
(3)所以在arp缓存表有效的时间内,pc3与pc1通信,是不需要发 arp requst包的)

所以在arp缓存表有效的时间内,pc3与pc1通信,是不需要发 arp requst包的)