计算机网络误区——VLAN中Access和Trunk原理详解

你真的了解VLAN吗?可能很多学过计算机网络的同学都对VLAN的知识学习过,也做过响应的实验,简单的实现了不同VLAN隔离,相同VLAN互通的要求,自认为对VLAN了解的同学可以先看一下下面这个拓扑,本文会让您对VLAN有着更加深入的了解。在这里插入图片描述
交换机链接和端口配置如上图所示。请问,在上述拓扑图中,两个PC之间可以通信吗?
如果您认为可以通信,那么恭喜您,您对VLAN的了解已经比较深入了,可以跳过本文;如果您认为不能通信,那么还请您耐心的看完本文。
首先,上述的配置是可以让两个PC之间相互通信的。当然实际的网络环境中也没有人这样配置。但是其实这个题目反应了对VLAN配置中Access和Trunk的实际了解。
我们都知道,在配置中,与PC即相连的端口一般用Access,表示该PC机加入那个VLAN,而交换机之间互联的端口一般用Trunk,并且配置允许交换机互联的VLAN ID通过,这样子是VLAN的最经典配置,但是不知道大家有没有想过为什么这样配置呢?
这涉及到VLAN中Access端口和trunk端口对数据包的具体处理问题。原来,为了能够实现VLAN的效果,交换机在接受到的每个数据包上打上了一个特殊的“标签”,该”标签“反应了该数据包的VLAN属性。不同的Access、Trunk端口对VLAN标签的处理是不同的,下面两个表体现了Access和Trunk对不同数据包的VLAN标签处理情况:
对于Access:

要处理的数据 进行的操作
收到一个不含VLAN ID的数据包 将该数据包打上Access的PVID
收到一个含VLAN ID的数据包 如果该VLAN ID与Access的PVID相同,则接收;如果该VLAN ID与Access的PVID不同,则丢弃
发送一个含VLAN ID的数据包 如果该VLAN ID与Access的PVID相同,则剥离VLAN标签后发送;如果该VLAN ID与Access的PVID不同,则丢弃

注:有的同学问如果要发送一个不含VLAN ID的数据包会怎么样,其实这种状况压根不会出现,因为华为和思科交换机在默认情况下每个端口都为Access类型,属于VLAN1。(华为默认为Hybrid类型,也可以按照上述理解)
对于Trunk:

要处理的数据 进行的操作
收到一个不含VLAN ID的数据包 将该数据包打上Trunk端口PVID的标签
收到一个含VLAN ID的数据包 如果该VLAN ID与Trunk的PVID相同,则接收;如果该VLAN ID与Trunk的PVID不同,则丢弃
发送一个含VLAN ID的数据包 如果Trunk端口配置允许该VLAN的数据包通过,则保留VLAN ID通过;如果Trunk端口配置不允许该VLAN的数据包通过,则丢弃

因此,回到一开始的问题,为什么两个PC之间可以相互通信的?根据上表,PC1与PC2之间的通信是以下过程:
PC1发送的数据包,到SW1的G0/0/1端口,之后打上VLAN 10的标签,从SW1的G0/0/2端口出来后剥离VLAN 10的标签。进入SW2的G0/0/2端口,之后打上VLAN20的标签,从SW2的G0/0/1端口出来后魄力VLAN20的标签,这样PC1到PC2的数据包就可以正常传递给PC2了,反过来原理也是一样的。
原创不易,转载请说明出处,原文链接:
https://blog.csdn.net/weixin_40228200/article/details/118250256

猜你喜欢

转载自blog.csdn.net/weixin_40228200/article/details/118250256#comments_22764060