VLAN:不同的VLAN之间在二层网络上互相隔离,数据包(包括广播包)只能在同一VLAN内转发,不能跨越不同的VLAN。要实现这一功能,显示不同VLAN之间的数据是有区别的,它的区别就在于VLAN的标准定义, VLAN由IEEE 802.1Q标准定义,主要在普通二层数据包中多加入4个byte的VLAN标记,其中包括3 bits的优先级字段(802.1p标记),12 bits的VLAN号,称为VID。
带有效VID(12 bits)的VLAN帧(有效VID范围:1~4094,VID 0和4095保留,不是有效的VID.)则被称为VLAN标记帧;
除此之外还有非标记帧:即普通的二层数据包,不带4个字节的VLAN标记;优先权标记帧:
仅带有优先权标记,而VID字段等于0的帧。支持VLAN的交换机对优先权标记帧和非标记帧的处理应相同。
对于这些不同的帧,不同的端口处理机制也是不同的,端口类型,一般可分为:
Access port,一般接终端设备,如IED、PC工作站等,端口仅能属于一个VLAN,转发一个VLAN的流量。
Trunk类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,一般用于交换机之间连接的端口;
Hybrid类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,可以用于交换机之间连接,也可以用于连接用户的计算机。
Hybrid端口和Trunk端口在接收数据时,处理方法是一样的,唯一不同之处在于发送数据时:Hybrid端口可以允许多个VLAN的报文发送时不打标签,而Trunk端口只允许缺省VLAN的报文发送时不打标签。
缺省VLAN: Access端口只属于1个VLAN,所以它的缺省VLAN就是它所在的VLAN,不用设置;Hybrid端口和Trunk端口属于多个VLAN,所以需要设置缺省VLAN ID.缺省情况下,Hybrid端口和Trunk端口的缺省VLAN为VLAN 1;
一般交换机的默认配置下,仅有一个VLAN(VID=1,默认VLAN),且所有端口都属于该VLAN。
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
下面详细说明不同端口出入数据处理过程:
Acess端口收报文:收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有不等则直接丢弃(缺省)如果有相等,接收。
Acess端口发报文: 将报文的VLAN信息剥离,直接发送出去
trunk端口收报文: 收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有判断该trunk端口是否允许该VLAN的数据进入,如果可以则原样转发,否则丢弃
trunk端口发报文: 比较端口的PVID和将要发送报文的VLAN信息,如果两者相等则剥离VLAN信息,再发送,如果不相等则直接发送
hybrid端口收报文: 收到一个报文,判断是否有VLAN信息:如果没有则打上端口的PVID,并进行交换转发,如果有则判断该hybrid端口是否允许该VLAN的数据进入:如果可以则原样转发,否则丢弃(此时端口上的untag配置是不用考虑的,untag配置只对发送报文时起作用)
hybrid端口发报文: 1、判断该VLAN在本端口的属性(disp interface 即可看到该端口对哪些VLAN是untag,哪些VLAN是tag) 2、如果是untag则剥离VLAN信息,再发送,如果是tag则直接发送 可以用此理论解释如下图示两台PC(属于两个VLAN,同一个网段)间可以通信的问题。