Access和Trunk收发报文规则总结及实验测试 本文原理部分转载于网络 原理: Access端口的报文收发规则如下:    Access端口在收到一个报文(Access端口通常是从终端PC中接收报文)后,先判断该报文中是否有VLAN标记信息:如果没有VLAN标记,则打上该Access端口的PVID后继续转发(毕竟Access端口收到报文后是向其他端口发送的,可以识别带有VLAN标记的报文);如果有VLAN标记(这个报文肯定是来自其他非Access端口和终端PC,因为Access端口和终端PC网卡不会发送带VLAN标记的报文),则默认直接丢弃。    Access端口上发送报文时,会先将报文中的VLAN信息去掉(因为Access端口发送报文一般是到终端PC,PC中的网卡是不能识别VLAN标记的。还有一种情况是发送到另一个同VLAN中的Access端口,因为Access端口也不接受带有VLAN标记的报文),然后再直接发送,所以Access端口发关出去的报文都是不带VLAN标记的。

Trunk端口的报文收发规则如下: 在Trunk端口上发送报文时,先会将要发送报文的VLAN标记与Trunk端口的PVID进行比较,如果与PVID相等,则从报文中去掉VLAN标记再发送;如果与PVID不相等,则直接发送。这样一来,如果将交换机级连端口都设置为Trunk,并允许所有VLAN通过后,默认情况下除VLAN 1外的所有来自其他VLAN中的报文将直接发送(因为这些VLAN不是Trunk端口的默认VLAN),而作为Trunk端口默认VLAN的VLAN 1,则需要通过去掉报文中的VLAN信息后再发送。    在Trunk端口收到一个报文时,会首先判断是否有VLAN信息:如果没有VLAN标记,则打上该Trunk端口的PVID,视同该帧是来自PVID所对应的VLAN转发到PVID所对应的VLAN接口上;如果有VLAN标记,判断该Trunk端口是否允许该VLAN的报文进入,如果允许则直接转发,否则丢弃。     实验一:

拓扑:PC1——(access)SW1(access)——(access)SW2(access)——PC4 如图:Sw1和SW2相连的端口分别起属于vlan10和vlan20,问两端的PC之间是否可以正常通信? 答:该情况下,PC1与PC4可以正常通信。

数据帧流向: PC1数据帧进入SW1时会打上vlan10的tag,离开SW1时会剥掉vlan10的tag,无tag的数据帧进入SW2时会打上vlan20的tag,离开SW2时会剥掉vlan20的tag,最终无tag的数据帧到达PC4;同理,数据帧也能够由PC4到达PC1。

实验验证: SW1:端口e0/0和端口e0/1属于vlan10

SW2:端口e0/0和端口e0/1属于vlan20

ping测试:

实验二:

拓扑:SW1(access)——(trunk)SW2 如图,Sw1和SW2相连的端口分别起access和trunk,问什么情况下两端之间可以正常通信? 答:(Cisco设备)当access口的vlan ID与trunk口的native vlan ID相同时,两端可以相互通信;(H3C设备)当access口与trunk口的pvid相同时,两端可以相互通信。

实验验证: SW1:端口g1/0/1起access,并将端口划到vlan 20

SW2:端口g1/0/1起trunk,默认pvid是1,此处pvid改为20

ping测试: