一.介绍
一句话:VLAN :虚拟局域网,用来隔离网络中的广播域,使在同一vlan下的终端才能通信(二层)
1.1 无VLAN与有VLAN的情况
无VLAN的情况
![](https://i-blog.csdnimg.cn/blog_migrate/cffe8dc467a4fe0e162704d0aa2e9082.png)
图中,是一个由
5
台二层交换机(交换机
1
~
5
)连接了大量客户机构成的网络。假设这
时,计算机
A
需要与计算机
B
通信。在基于以太网的通信中,必须在数据帧中指定目标
MAC
A
B
地址才能正常通信,因此计算机
A
必须先广播
“ARP
请求(
ARP Request
)信息
”
,来尝试获
取计算机
B
的
MAC
地址。 交换机
1
收到广播帧(
ARP
请求)后,会将它转发给除接收端口外
的其他所有端口,也就是
Flooding
了。接着,交换机
2
收到广播帧后也会
Flooding
。交换机
3
、
4
、
5
也还会
Flooding
。最终
ARP
请求会被转发到同一网络中的所有客户机上。
有VLAN的情况
如果在交换机上生成红、蓝两个
VLAN
;同时设置端口
1
、
2
属于红色
VLAN
、端口
3
、
4
属于蓝色
VLAN
。再从
A
发出广播帧的话,交换机就只会把它转发给同属于一个
VLAN
的其他端口
——
也就是同属于红色
VLAN
的端口
2
,不会再转发给属于蓝色
VLAN
的端口。
同样,
C
发送广播信息时,只会被转发给其他属于蓝色
VLAN
的端口,不会被转发给属于红
色
VLAN
的端口。
1.2 VLAN划分方法
1.2.1 静态VLAN
静态
VLAN
又被称为基于端口的
VLAN
(
Port Based VLAN
)。顾名思义,就是明确指定
各端口属于哪个
VLAN
的设定方法。
1.2.2 动态
VLAN
另一方面,动态
VLAN
则是根据每个端口所连的计算机,随时改变端口所属的
VLAN
。
这就可以避免上述的更改设定之类的操作。动态
VLAN
可以大致分为
3
类:
●
基于
MAC
地址的
VLAN
(
MAC Based VLAN
)
●
基于子网的
VLAN
(
Subnet Based VLAN
)
●
基于用户的
VLAN
(
User Based VLAN
)
二.数据包中的VLAN
2.1抓包数据
![](https://i-blog.csdnimg.cn/blog_migrate/a5d1b3faf3a297e1ea366185b61676ee.png)
总字节数:4byte
priority: 优先级
CFI: 标记位,华为交换机称之为颜色标记
ID: vlan id
2.2数据包结构说明
基于
IEEE802.1Q
附加的
VLAN
信息,就像在传递物品时附加的标签。因此,它也被称
作
“
标签型
VLAN
(
Tagging VLAN
)
”
。
![](https://i-blog.csdnimg.cn/blog_migrate/1f942afd0d93c7ddab9b06b1bf2bd26c.png)
1. TPID (Tag Protocol Identifier
,也就是
EtherType)
是
IEEE
定义的新的类型,表明这是一个加了
802.1Q
标签的帧。
TPID
包含了一个固定的值
0x8100
。
2. TCI (Tag Control Information)
包括用户优先级
(User Priority)
、规范格式指示器
(Canonical Format Indicator)
和
VLAN ID
。
①
User Priority
:该字段为
3-bit
,用于定义用户优先级,总共有
8
个
(2
的
3
次方
)
优先级别。
IEEE
802.1P
为
3
比特的用户优先级位定义了操作。最高优先级为
7
,应用于关键性网络流量,如
路由选择信息协议(
RIP
)和开放最短路径优先(
OSPF
)协议的路由表更新。优先级
6
和
5
主要用于延迟敏感(
delay-sensitive
)应用程序,如交互式视频和语音。优先级
4
到
1
主要用
于受控负载(
controlled-load
)应用程序,如流式多媒体(
streaming multimedia
)和关键
性业务流量(
business-critical traffic
) - 例如,
SAP
数据 - 以及
“loss eligible”
流量。
优先级
0
是缺省值,并在没有设置其它优先级值的情况下自动启用。
②
CFI
:
CFI
值为
0
说明是规范格式,
1
为非规范格式。它被用在令牌环
/
源路由
FDDI
介质访问
方法中来指示封装帧中所带地址的比特次序信息。
③
VID
:该字段为
12-bit
,
VLAN ID
是对
VLAN
的识别字段,在标准
802.1Q
中常被使用。
支持
4096(2
的
12
次方
) VLAN
的识别。在
4096
可能的
VID
中,
VID
=
0
用于识别帧优先级。
4095(FFF)
作为预留值,所以
VLAN
配置的最大可能值为
4094
。
所以有效的
VLAN ID
范
围一般为
1-4094
。
注:网络中还存在多个vlan的情况,是不同厂商在不同业务场景对vlan的使用定义如华为的QINQ技术:什么是QinQ? 为什么需要QinQ? - 华为
三.交换机各类型端口对VLAN的处理
1、Untagged Port和tagged Port不是讲述物理端口的状态,而是将是物理端口所拥有的某一个VID的状态,所以一个物理端口可以在某一个VID上是Untagged Port,在另一个VID上是tagged Port;
2、一个物理端口只能拥有一个PVID,当一个物理端口拥有了一个PVID的时候,必定会拥有和PVID的TAG等同的VID,而且在这个VID上,这个物理端口必定是Untagged Port;
3、PVID的作用只是在交换机从外部接受到可以接受Untagged数据帧的时候给数据帧添加TAG标记用的,在交换机内部转发数据的时候PVID不起任何作用;
4、拥有和TAG标记一致的VID的物理端口,不论是否在这个VID上是Untagged Port或者tagged Port,都可以接受来自交换机内部的标记了这个TAG标记的tagged数据帧;
5、拥有和TAG标记一致的VID的物理端口,只有在这个VID上是tagged Port,才可以接受来自交换机外部的标记了这个TAG标记的tagged数据帧.
收报文: ==================================================================
Access端口:
1、收到一个报文;
2、判断是否有VLAN信息;如果没有则转到第3步,否则转到第4步;
3、打上端口的PVID,并进行交换转发;
4、直接丢弃(缺省);
Trunk端口:
1、收到一个报文;
2、判断是否有VLAN信息;如果没有则转到第3步,否则转到第4步;
3、打上端口的PVID,并进行交换转发;
4、判断该trunk端口是否允许该VLAN的数据进入;如果可以则转发,否则丢弃;
Hybrid端口:
1、收到一个报文;
2、判断是否有VLAN信息;如果没有则转到第3步,否则转到第4步;
3、打上端口的PVID,并进行交换转发;
4、判断该Hybrid端口是否允许该VLAN的数据进入:如果可以则转发,否则丢弃.
发报文: ==================================================================
Access端口:
1、将报文的VLAN信息剥离,直接发送出去;
Trunk端口:
1、比较端口的PVID和将要发送报文的VLAN信息;
2、如果两者相等则转到第3步,否则转到第4步;
3、剥离VLAN信息,再发送;
4、直接发送;
Hybrid端口:
1:判断该VLAN在本端口的属性(display interface即可看到该端口对哪些VLAN是untag,哪些VLAN是tag。)
2、如果是untag则转到第3步,如果是tag则转到第4步;
3、剥离VLAN信息,再发送;
4、直接发送;