Access和Trunk端口收发数据的区别
端口类型 | 接收数据 | 转发数据 |
---|---|---|
Access端口 | 如果接收的是不带标签的的数据,则打上自己的pvid接受该数据,如果接受的是带标签的数据,会判断该数据的vlan id是否和自身的pvid相同,若相同则接收该数据,若不同则丢弃该数据 | 转发数据时会将数据的标签剥掉,也就是通过Access端口转发出去的数据都是不带标签的 |
Trunk端口 | 如果接受的是不带标签的数据,则会打上自身的pvid,然后判断数据的vlan id是否在允许通过的vlan id列表中,如果允许通过则接收数据,如果不允许通过则丢弃数据,如果是带标签的数据,则判断该数据的vlan id是否在允许通过vlan id列表中,如果允许通过,则接收该数据,如果不允许,则丢弃该数据 | 转发数据时查看转发数据的vlan id是否在允许通过的vlan id列表中,如果不允许通过,则丢弃该数据,如果允许通过,再判断数据的vlan id是否和端口的pvid相同,如果相同,则剥掉标签转发,如果不同,则直接转发 |
pvid:即Port Vlan ID,端口的缺省vlan
vlan id:可以看作数据的Tag
通过树形图可以更清晰的看出两种类型端口收发数据的方式
在这我们可以通过几个例子来分析一下数据传输的过程
这里我们把左边交换机的所有接口都配置为access端口(虽说access端口是连接主机的,但这里我们只是为了学习,所以交换机之间我们也配成了access类型),pvid都为10,右边交换机的所有端口我们也都配成了access类型,pvid为20,这里我们就以PC1访问PC2为例:
PC1发送数据到E0/0/2端口,此时数据是不带标签的,所以E0/0/2端口就将数据打上自己的pvid(10)后接收数据,然后通过G0/0/1端口发送数据,G0/0/1会先判断数据的vlan id是否和自己的pvid相同,若相同则发送,若不同则丢弃,因为数据的vlan id为10,自己的pvid也是10,所以G0/0/1端口就将数据剥掉标签发送,然后就是右边端口G0/0/2接收数据,因为此时数据是没有标签的,所以G0/0/2端口打上自己的pvid(20)然后接收数据,再通过右边E0/0/3端口发送数据,E0/0/3端口会先判断数据的vlan id是否和自己的pvid相同,若相同则发送,若不同则丢弃,因为此时数据的vlan id是20,E0/0/3端口的pvid也是20,所以E0/0/3端口剥掉数据的标签发送给PC2,PC2发送响应数据时,也是同样的线路。
我们看看测试结果:
这次我们将同一个交换机上的端口设定在不同的vlan
我们还是将两台交换机上的所有端口都设置为access类型,然后将左边交换机的两个端口分别划分到vlan10和vlan20,右边交换机的两个端口分别划分到vlan25和vlan20,这次我们以PC14访问PC15为例:
PC14发送数据到端口E0/0/2,因为数据不带标签,所以端口E0/0/2将数据打上自己的pvid(10)后接收数据,然后通过G0/0/1端口发送数据,端口G0/0/1会先判断数据的vlan id是否和自己的pvid相同,若相同则发送数据,若不同则丢弃数据,因为数据的vlan id是10,而端口G0/0/1的pvid为15,数据的vlan id与端口的pvid不同,所以端口将数据丢弃,也就代表PC14无法访问PC15
我们测试一下
我们再来看一下trunk端口的数据传输过程:
左边的为vlan10,右边为vlan20,我们把左边交换机的两个端口分别配置为一个access端口,一个trunk端口,两个端口的pvid都是10,右边交换机也是一个access端口,一个trunk端口,pvid都是20,我们以PC16访问PC17为例:
PC16发送数据到端口E0/0/2,因为数据没有标签所以端口E0/0/2将端口打上自己的pvid(10)后接收,然后通过端口G0/0/1发送,当数据带标签时,端口G0/0/1会先判断数据的vlan id是否在允许通过的列表中,若允许通过,在进行下一步判断,若不允许,则丢弃,因为数据的vlan id为10,而我们没有在交换机中添加允许vlan10通过,所以数据无法通过。
测试:
下面我们在交换机14的G0/0/1端口上添加允许vlan10通过,执行命令:
[Huawei]interface GigabitEthernet 0/0/1[Huawei-GigabitEthernet0/0/1]port trunk allow-pass vlan 10
现在端口G0/0/1允许vlan id为10的数据通过,因为数据的vlan id为10,所以G0/0/1端口允许数据通过,此时端口G0/0/1再判断数据的vlan id是否和自己的pvid相同,若相同则剥掉标签转发,若不同则直接转发,因为端口G0/0/1的pvid为10,数据vlan id也为10,所以端口G0/0/1会剥掉数据的标签转发,此时G0/0/2接收数据,因为此时数据没有标签所以端口G0/0/2将数据打上自己的pvid(20),再判断数据的vlan id是否在允许通过的列表中,数据的vlan id为20,而我们没有在端口G0/0/2中添加允许vlan20通过,所以数据还是无法通过,执行命令:
[Huawei]interface GigabitEthernet 0/0/2[Huawei-GigabitEthernet0/0/2]port trunk allow-pass vlan 20
此时端口G0/0/2允许数据通过,端口G0/0/2接收数据,然后再通过端口E0/0/3转发数据,端口E0/0/3会判断数据的vlan id是否和自己的pvid相同,若相同则剥掉标签转发,若不同则丢弃,因为数据的vlan id为20,端口E0/0/3的pvid为20,两者相同,所以端口E0/0/3剥掉数据的标签转发到PC17
PC17发送响应数据时也是相同的原理,PC17发送数据到端口E0/0/3,因为数据没有标签,端口E0/0/3将数据打上自己的pvid(20)后接收,然后通过端口G0/0/2转发,因为端口G0/0/2我们添加了允许vlan20通过,所以端口G0/0/2允许数据通过,又因为数据的vlan id与端口G0/0/2的pvid相同,所以端口G0/0/2剥掉数据的标签转发,然后是端口G0/0/1接收数据,因为数据没有标签,所以端口G0/0/1将数据打上自己的pvid(10),再判断端口vlan id是否在允许通过的列表中,因为我们在端口G0/0/1中添加了允许vlan10通过,所以端口G0/0/1允许数据通过,所以端口G0/0/1接收数据,再通过端口E0/0/2转发,因为数据的vlan id与自己的pvid相同,所以端口E0/0/2剥掉数据的标签转发到PC16,此时PC16和PC17就完成了访问
我们来测试一下