天天看点

trunk与access的区别首先声明我没研究过交换机底层实现,以下结论都是我的个人理解。不保证正确,但是有助于理解trunk和access。以下言论可能你在哪里都没有看到过。

首先声明我没研究过交换机底层实现,以下结论都是我的个人理解。不保证正确,但是有助于理解trunk和access。以下言论可能你在哪里都没有看到过。

先说观点:我认为trunk与access并没有本质的区别。

access收到带vlan的帧和自己所属vlan比较,相同转发,不相同丢弃。(1)

trunk 收到带vlan的帧和自己所属vlan比较,相同转发,不相同丢弃。(2)

access收到不带vlan的帧,打上自己所属vlan的tag进行转发。 (3)

trunk 收到不带vlan的帧,打上自己所属vlan的tag进行转发。 (4)

下面对以上四句话进行解释:

(1)可在模拟器做如下实验

sw1的1口配置成access划入vlan 10,连接pc1,ip配置为10.0.0.1/24

sw1的2口配置成trunk并允许所有vlan通过,连接sw2的1口。

sw2的1口配置成access划入vlan 10,连接sw1的1口。

sw2的2口配置成access划入vlan 10,连接pc2,ip配置为10.0.0.2/24

trunk与access的区别首先声明我没研究过交换机底层实现,以下结论都是我的个人理解。不保证正确,但是有助于理解trunk和access。以下言论可能你在哪里都没有看到过。

此时pc1 ping pc2,数据进入sw1的1口打上vlan10的tag,由于sw1的2口trunk允许此vlan通过会转发给sw2的1口(此时不会去掉tag),此时满足上面的第(1)句(access收到带vlan的帧和自己所属vlan比较,相同转发,不相同丢弃。),会把数据转发给2口,此时在sw2的2口上抓包可以看到pc1发送的arp请求和pc2的arp应答。但pc1无法ping通pc2原因后面会说明,到此仅为说明access收到带vlan的帧的处理方法。

(2)这句需要解释的有两点

第一,trunk所属的vlan是一种不规范说法,或者说没有这种说法,实际上就是本征vlan,或者说trunk的pvid。只是说成trunk所属的vlan比较好理解。

第二,后面的说法并不严谨,只是为了和(1)做比较,实际上trunk收到带vlan的帧和自己的vlan(pvid)不相同,则比较是否是自己允许通过的vlan,是转发,不是丢弃。

总结:trunk配置成只允许本征vlan(pvid)通过此时和access并无不同之处。

(3)这句无需解释就是正常的处理过程

(4)这句还可以参考(1)中的实验

pc2到pc1的通信过程,pc2发数据给pc1时,sw2的2口收到数据打上vlan10的tag转给sw2的1口,sw2的1口在发送时去掉tag转发,此时sw1的2口(trunk)收到不带vlan的帧,打上自己的pvid,此时自己的vpid是1,而pc1属于vlan10所以pc1无法ping通pc2,因为数据回不去。此时修改trunk的pvid为10,pc1和pc2即可相互ping通(access和trunk口相连可以实现通信也变相说明两者无本质区别)。

由上可见,trunk和access并无本质区别,所谓的本征vlan,native vlan,pvid本质上就是trunk所属的vlan而已。trunk和access在处理数据时也没有本质上的区别,过程上完全相同。只是access不允许多个vlan通过,所以处理数据时比trunk少了一步判别。

所属vlan 允许通过vlan
access 只能 1个 (即划入的vlan) 只能1个即划入的vlan
trunk 只能1个(即pvid) 任意个

之所以设计成这样,我觉得和底层的实现有关,access和trunk在程序处理过程中是一样的,只是access少了一步判别而已。

再次说明,以上只是本人猜测。不对之处还请大家指出,多谢!

继续阅读