1.什么是VLAN技术?
VLAN是Virtrual local area network 虚拟局域网,是物理设备上连接的不受物理位置限制用户的一个逻辑组;即交换机上所有的接口默认情况下属于同一个广播域,也就是说属于同一个VLAN,即VLAN1。
--这里有个概念,可能大家不太清楚,什么是广播域?
广播是一种传播方式,指网络中的某一设备同时向网络中所有的其他设备发送数据,这个数据所能广播到的范围即为广播域(Broadcast Domain)。
简单来说,广播域就是指网络中所有能接受到同样广播消息的设备的集合。
2.那么为什么要使用VLAN技术?一般适用于哪些地方?
那么我们学习各种网络技术,目的是为了“网络互通”,直白点,也就是说,网络中的不同设备之间,可以正常互相发送数据。此时,必须要求网络中每个设备,必须有IP地址。那么,基于通信的俩个设备的IP地址是否在同一网段,可以将网络互通的类型分为:交换互通和路由互通
--在这里有个概念,什么是交换互通?
就是通信的设备IP地址在同一网段之中。
--如何实现交换互通,也就是交换互通的原理?
交换互通是通过交换机设备实现的,实现原理为:
1>形成MAC地址表
当交换机在某个端口接收到数据后,会将其源MAC地址提取出来,与“接收到数据的端口”形成一个对应关系,称之为MAC地址条目,也成MAC地址表;
2>查找MAC地址表
交换机将数据帧中的目标MAC地址提取出来,然后在MAC地址表中查看是否有对应的MAC地址条目;
--如果有,则将数据帧从对应的端口发送出去;
--如果没有,则将数据进行广播(将数据从除入端口以外的其他端口都发送出去);
&综上所述:
--交换机是可以隔离冲突域的;
--这里有个概念,什么是冲突域?
冲突域指的是会产生冲突的最小范围,在计算机和计算机通过设备互联时,会建立一条通道,如果这条通道只允许瞬间一个数据报文通过,那么在同时如果有两个或更多的数据报文想从这里通过时就会出现冲突了。冲突域的大小可以衡量设备的性能,多口hub的冲突域也只有一个,即所有的端口上的数据报文都要排队等待通过。而交换机就明显的缩小了冲突域的大小,使到每一个端口都是一个冲突域,即一个或多个端口的高速传输不会影响其它端口的传输,因为所有的数据报文不同都按次序排队通过,而只是到同一端口的数据才要排队。
--交换机是无法隔离广播域的。
?在某些情况下,比如同一个交换网络中的 PC1 中毒了,此时总是频繁的、以广播的方式,发送病毒报文,干扰其他所有的正常主机进行工作。
--所谓的“报文是以广播方式”进行转发的,那么“广播方式”如何在报文中体现出来?
“广播方式”是以“数据包中的目标地址的类型”体现出来的。如果是广播的话,那么目标地址必然是“广播地址”,因为当前我们研究的是“交换网络/交换机”,所以此时我们描述的“广播地址”指得是 “广播 MAC 地址” , 即: FF-FF-FF-FF-FF-FF (即 48bit全是1);所以,几乎所有的病毒报文的目标MAC地址,都是全F;
--交换机的MAC地址表中,有没有一个针对 全 F 的 MAC地址条目?
答案是没有,结果是,交换机就会将该广播的“病毒报文”进行“广播”,即从除入端口以外的其他端口都发送出去,就会导致本交换机所连接的所有主机都会受到病毒的攻击,基于这种情况,为了让交换机可以隔离不同的广播报文,我们可以使用相关的技术,将原来同一个广播域,隔离成多个不同的广播域。对应的技术:VLAN技术
--总结:
交换机上所有的接口默认都属于同一个广播域,有了VLAN技术之后,可以实现不同的接口加入不同的VLAN,从而属于不同的广播域;
也就是说,每个VLAN都是一个独立的广播域,不同VLAN就是不同的广播域;每个VLAN都是独立的,不会受到其他VLAN的影响;
VLAN的作用就是用来隔离不同的广播域的
3.VLAN技术是如何实现的?怎么配置?
在交换机上,属于不同的 VLAN 设备不可以互通,本质原因是:
交换机将原来的那个大的MAC地址表,以 VLAN 为基本单位,分割成了很多小的 MAC 地址,即交换机为每个 VLAN都单独形成了一个MAC地址表。

- 案例分析:
PC1 ping PC3 ,无法互通; [期待你的答案......]
有可能存在的原因:
1.PC1 向 PC3 发送不成功;
2.PC3 向 PC1 返回不成功;
###########################################
1-1.PC1 无法发送报文;【数据封装】
1-2.SW1 无法传输报文;【数据传输】
1-3.PC3 无法接收报文;【数据解封装】
###########################################
2-1.PC3 无法发送报文;
2-2.SW1 无法传输报文;
2-3.PC1 无法接收报文;
原因是: 1-1
解释:
PC1 ping PC3 ,即 PC1 需要向 PC3 发送 ICMP 数据包,格式如下:
Ethernet头部 + IP头部 + ICMP头部 + ICMP数据 + Ethernet 尾部
@IP 头部:
源IP:192.168.10.1
目标IP:192.168.10.3
协议号: 1
@Ethernet头部:
目标MAC:?????
源MAC:PC1的MAC地址
类型:0x0800
所以, 如果 PC1 想要向 PC3 发送上述结构的数据,那么必须得知道 Ethernet头部的 “目标MAC地址”。知道目标IP地址,想要获得目标MAC地址,此时通过 ARP 协议:
1.PC1 通过广播的方式发送一个 ARP 请求报文;
请求 192.168.10.3 所对应的MAC地址;
2.该ARP请求报文,经过 GE0/0/1 端口,进入到 SW1 ;
3.SW1在 GE0/0/1 接口收到数据帧以后:{GE0/0/1属于 vlan 10}
-形成MAC地址表
10 ---- PC1-MAC ---- GE0/0/1
-查找MAC地址表 (严格来说:查找VLAN10的MAC地址表)
因为当前的ARP报文,是广播的,即目标MAC地址是 全F 。
所以在SW1的 VLAN 10 对应的 MAC 地址表中,肯定是找不到
对应的 ARP 条目的,
所以,SW1会将该ARP请求报文,从所有属于 VLAN 10 的端口上
进行“广播”,
但是,SW1 上属于 VLAN 10 的端口,仅仅包含 ge0/0/1和 ge0/0/2
所以, ARP 请求报文转发给了 GE0/0/2 ,该端口连接的是 PC2,不是我们要请求的 PC3 ,
所以, VLAN 10 中的所有的 PC,没有办法回应 PC1 发送的 ARP 请求。
所以, PC1 无法获得 192.168.10.3 所对应的 MAC 地址, 导致,
PC1 无法完成 ICMP 数据包的正常封装,导致数据包无法发出,
从而 PC1 与 PC3 之间无法互通。
4.VLAN互联链路的应用
相同 VLAN 的成员主机,连接到不同的交换机上时,如果想实现互通,必须在交换机之间连接“互联链路”。
互联链路的接口类型分为:
1>access访问接口类型
特点:永远只能属于同一个VLAN,默认属于VLAN1;通常情况下,交换机连接“非交换机”设备的时候, 都强烈建议使用 access 模式;
如何配置:

收发包过程:
--收包过程:
如果交换机的access接口,接收到的数据帧,没有标签;则使用该接口的 PVID来 表示的 VLAN ,为“收到的数据帧”打一个标签(vlan-id)。
--发包过程:
交换机从 access接口,向外发送数据时,是不携带任何的 VLAN 标签的;即数据帧在交换机的access 接口发送出来的时候,会将该数据帧原来携带的 vlan 标签,全部给丢弃掉。
注意:[交换机内部处理的各种数据帧,都是有 vlan 号的]
存在的问题:
由于access类型的互联链路只能属于同一个vlan
所以,交换机上存在数量非常多的 VLAN 时,为了实现不同交换机上的相同 VLAN 成员通信, 就必须在交换机之间“互联大量的链路”,这样一来,非常的浪费交换机的端口资源。
所以,我们提出更好的解决方案: 将交换机之间的多个 VLAN 的通信数据,放在一个链路上进行传输。
但是,此时带来的问题是:
我们需要在交换机之间的互联链路上,区分不同的 VLAN 的数据。
为了实现该功能,我们需要让交换机将数据发送到“互联链路”的时候,为每个数据包添加一个 VLAN号。
添加的方法,使用的是一个国际标准协议:802.1Q,该协议规定了:标记的格式;如何在原来的数据帧中添加标记;
即:
交换机之间的互联链路,能够同时传输多个 VLAN 的数据,并且互不混淆。这种链路称之为:Trunk 链路
2>trunk干道链路
特点:同时承载多个 VLAN 的数据,即 trunk 链路同时属于多个 VLAN ;通常情况下,交换机连接“交换机”设备的时候, 都强烈建议使用 Trunk 模式;
该模式的端口,可以同时收发多个 VLAN 的数据 (但是,默认情况下,仅仅允许 vlan 1)
如何配置:

收发包过程:
--收包:
如果交换机的 trunk 接口,接收到的数据帧,没有标签;则使用该接口的 PVID 表示的 VLAN ,为“收到的数据帧”打一个标签(vlan-id);
如果交换机的 trunk 接口,接收到的数据帧,有标签;则不对该标签进行任何处理,直接被交换机接收。
--发包:
交换机从 trunk 接口,向外发送数据时,将该数据的入端口所属于的标签,加入到2层头部信息中。如果这个数据的 VLAN 标签,等于 Trunk 链路的PIVD(默认是1),那么在 trunk 链路上发送该数据的时 候,就不携带任何标签了。如果这个数据的VLAN标签,和trunk链路的pvid不一样,那么不做任何处理,直接携带标签发包;在 Trunk 链路上,交换机使用标准的标签协议为数据打标签。
什么是802.1q协议?
-该协议规定:vlan标签,位于 2层头部中的“源MAC地址”和“类型”字段中间;
-当2层数据帧有了VLAN 标签以后,2层以太网头部中的 type 字段,变成了 0x8100 ;
-该协议规定:vlan标签,总长度为 32bit (即4个字节),其中用来表示 vlan号的字段,仅仅占用了其中的 12bit ,所以:所有的 vlan 的数量是 4096 ,但是能用的是:1--4094
简单的VLAN的查看的命令:
- port trunk pvid vlan 20 //将trunk接口默认的PVID 1 ,修改为 PVID 20 ;
- display port vlan --> 查看每个接口的 VLAN 信息 (接口类型、所属于的 VLAN )
- display vlan --> 查看设备上的所有的 VLAN 信息
- 如何将access变为trunk
--将access接口的vlan修改为1[首先更改接口当前的 pvid,必须修改为1]
interface gi0/0/24
port default vlan 1
--配置接口的模式为 trunk[其次更改接口当前的 链路类型,设置为 trunk ]
interface gi0/0/24
port link-type trunk
--如何将trunk改为access
Interface gi0/0/24 //进入接口模式
Undo port trunk allow-pass vlan all //取消trunk模式允许所有vlan通过
Port trunk allow-pass vlan 1 //改为默认只允许vlan1通过
Undo port link-type //取消设置的链路类型
Port link-type access //重新设置链路类型为access
3>Hybrid混杂接口
@可以像 access 接口一样工作,即在hybrid接口发送数据的时候,脱掉 vlan 标签;
@也可以像 trunk 接口一样工作,即在 hybrid 接口上发送数据的时候,添加 vlan 标签 ;
@华为交换机端口的默认模式是 hybrid ,且默认的 PVID 是 vlan 1 ;

收发包过程:
--收包:
当Hybrid 接口接收到的数据没有标签,那么交换机就会用 hybrid 接口的 PVID 为 数据打 VLAN 标签;
当Hybrid 接收到的数据有标签,那么交换机会使用数据自身携带的 VLAN 标签;
--发包:
当Hybrid 配置了 untagged vlan ** 的时候,那么携带标签 ** 的数据,要删除标签,发送出去;
当Hybrid 配置了 tagged vlan @@ 的时候,那么携带标签 @@ 的数据,直接发送出去,不删标签;
相关命令:
interface gi0/0/1
port link-type hybrid
port hybrid pvid vlan 10 -> 将端口的PVID设置为10,影响接收的数据;
port hybrid untaggd vlan 10 -> 接口发送数据出去的时候,针对vlan10的数据,不带标签;
port hybrid tagged vlan 20 -> 接口发送数据出去的时候,针对vlan20的数据,带着标签;