vlan划分不能上网_VLAN工作原理

什么是VLAN

VLAN(Virtual LAN),翻译成中文是“虚拟局域网”。可以看做是在一个物理局域网络上搭建出几个逻辑上分离的几个局域网。举个例子来说,如果一个交换机划分为两个VLAN,则相当于这台交换机逻辑上划分为两个交换机。

e5a2a2dd4affe21fb4455e5477400756.png

VLAN的一个简单直观说明:物理上一个交换机,分为逻辑上两个分离的交换机

上面这个简单例子是对一台交换机上的VLAN划分,实际上VLAN也可以跨越多台交换机,本质上VLAN是一个网络层次上的概念,将整个网络划分为多个逻辑上隔离的网络(一个VLAN就是一个独立的广播域)比如下图的VLAN2和VLAN5。

afae978fd20bd8926e7294c6975624ea.png

跨越多台交换机的VLAN

那么我们为什么要引入VLAN的概念,VLAN究竟有哪些好处,总结起来主要有下面几点:

  1. 更安全:数据包仅在本VLAN内传递。

由于配置了VLAN后,一个VLAN的数据包不会发送到另一个VLAN,这样,其他VLAN的用户的网络上是收不到任何该VLAN的数据包,这样就确保了该VLAN的信息不会被其他VLAN的人窃听,从而实现了信息的保密。

  • 更高效:泛洪转发仅在本VLAN内复制。

按照802.1D透明网桥的算法,如果一个数据包找不到MAC表,那么交换机就会将该数据包向除接收端口以外的其他所有端口发送,这就是桥的泛洪转发。(典型的广播方式包括组播报文,广播报文,以及未知单播报文都会进行泛洪转发)。这样的结果,毫无疑问极大的浪费了带宽,如果配置了VLAN,那么,当一个数据包需要泛洪转发时,交换机只会将此数据包发送到所有属于该VLAN的其他端口,而不是所有的交换机的端口,这样,就将数据包限制到了一个VLAN内。在一定程度上可以节省带宽。

  • 更方便:不改变物理组网的情况下,灵活进行逻辑网络的变更。

使用VLAN的最终目标就是建立虚拟工作组模型,例如,在企业网中,同一个部门的就好象在同一个LAN上一样,很容易的互相访问,交流信息,同时,所有的广播包也都限制在该虚拟LAN上,而不影响其他VLAN的人。一个人如果从一个办公地点换到另外一个地点,而他仍然在该部门,那么,该用户的配置无须改变;同时,如果一个人虽然办公地点没有变,但他更换了部门,那么,只需网络管理员更改一下该用户的配置即可。这个功能的目标就是建立一个动态的组织环境,当然,这只是一个理想的目标,要实现它,还需要一些其他方面的支持。

如何实现VLAN功能

1. 如何识别VLAN报文

要使网络设备能够分辨不同VLAN的报文,需要在报文中添加标识VLAN的字段。由于普通交换机工作在OSI模型的数据链路层,只能对报文的数据链路层封装进行识别。因此,如果添加识别字段,也需要添加到数据链路层封装中。
IEEE于1999年颁布了用以标准化VLAN实现方案的IEEE 802.1Q协议标准草案,对带有VLAN标识的报文结构进行了统一规定。

  • 无VLAN的传统的以太网数据帧格式:目的MAC地址和源MAC地址之后封装的是上层协议的类型字段,

  • DA表示目的MAC地址

  • SA表示源MAC地址

  • Type表示报文所属协议类型。

    fc568212d2b3f0bac8b688a0698319aa.png

    传统无VLAN的二层报文

  • 增加VLAN Tag支持的以太网帧格式:IEEE 802.1Q协议规定在目的MAC地址和源MAC地址之后封装4个字节的VLAN Tag,用以标识VLAN的相关信息。VLAN Tag包含四个字段,分别是TPID(Tag Protocol Identifier,标签协议标识符)、Priority、CFI(Canonical Format Indicator,标准格式指示位)和VLAN ID。

  • TPID用来判断本数据帧是否带有VLAN Tag,长度为16bit,缺省取值为0x8100。

  • Priority表示报文的802.1P优先级,长度为3bit,相关内容请参见“QoS分册”中的“QoS配置”。

  • CFI字段标识MAC地址在不同的传输介质中是否以标准格式进行封装,长度为1bit,取值为0表示MAC地址以标准格式进行封装,为1表示以非标准格式封装,缺省取值为0。

  • VLAN ID标识该报文所属VLAN的编号,长度为12bit,取值范围为0~4095。由于0和4095为协议保留取值,所以VLAN ID的取值范围为1~4094。

网络设备利用VLAN ID来识别报文所属的VLAN,根据报文是否携带VLAN Tag以及携带的VLAN Tag值,来对报文进行处理。

a89a88ccf2d35cab5deeac1dd504c93b.png

支持VLAN字段以后的二层报文

2. 交换机如何转发VLAN报文

要说明交换机如何转发报文,先得说明一下交换机支持VLAN时用到的几个专用术语:
端口类型:VLAN交换机的端口一般可以分为几大类:

  1. Access端口:一般用于交换机与终端之间,该类端口仅归属于一个VLAN。Access链路上的报文没有VLAN tag,与传统报文保持兼容。但交换机的Access端口上回配置Vlan。这样所有从该Access链路上收到的报文都归属于Access端口所归属的Vlan。(核心概念:报文兼容,没有vlan-tag)

  1. Trunk端口:一般交换机与交换机之间,该类型端口允许多个VLAN的报文通过。该端口所在的链路上的报文需要有VLAN tag。(核心概念:除默认Vlan外,其他VLAN报文有vlan-tag)

  2. Hybrid端口:Hybrid类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,可以用于交换机之间连接,也可以用于连接用户的计算机。Hybrid端口和Trunk端口在接收数据时,处理方法是一样的,唯一不同之处在于发送数据时:Hybrid端口可以允许多个VLAN的报文发送时不打标签,而Trunk端口只允许缺省VLAN的报文发送时不打标签。(核心概念:哪些vlan打tag,哪些不打tag可以手工配置)

术语:默认VLAN-ID(或者缺省VLAN-ID,PvidVlan,Native Vlan,都是一个意思):简而言之,收报文:如果是没有tag,则认为来自于默认vlan;发报文:如果是该vlan的报文则不打VLAN tag

  • Access端口只属于1个VLAN,所以它的缺省VLAN就是它所在的VLAN,不用设置;

  • Hybrid端口和Trunk端口属于多个VLAN,所以需要设置缺省VLAN ID。缺省情况下,Hybrid端口和Trunk端口的缺省VLAN为VLAN 1 。如果设置了端口的缺省VLAN ID,当端口接收到不带VLAN Tag的报文后,则认为报文的VLAN ID是缺省VLAN-ID;当端口发送报文时,如果该报文的VLAN ID与端口缺省的VLAN ID相同,则系统将去掉报文的VLAN Tag,然后再发送该报文。

下面具体介绍着几种端口的工作原理

2.1 Access端口

这一类端口只有一个唯一的VLAN。通常由于交换机与终端的连接。为了保持与已有终端的兼容性,在设计VLAN相关协议时有这样一个约束:端口发送和接收的报文格式都不允许修改,也就是说,这一类接口上收发的报文都不带VLAN信息。(Untagged)。
既然报文中不带VLAN信息,又要满足VLAN隔离性需求,则必然在端口上要进行VLAN-ID的设置(这个VLAN称为端口的PVID)。

2.2 Access端口的报文转发流程

  • Acess端口收报文:

  1. 收到个报文判断是否有VLAN信息:

  1. 如果没有则打上端口 PVID并进行交换、转发,

  2. 如果有则直接丢弃(缺省)

  • Acess端口发报文:

Access端口发送非常简单,将报文VLAN信息剥离,直接发送出去

2.2 Access端口如何划分VLAN

为了方便用户使用,各设备厂商实现了多种方式来进行VLAN划分,总的来说,有静态方式和动态方式两大类:

  • 静态方式:通过用户手工配置方式,来指定某个端口属于哪个VLAN,静态方式也成为基于端口的VLAN。当网络中的计算机数目超过一定数字(比如数百台)后,这些配置操作就会变得烦杂无比。并且,客户机每次变更所连端口,都必须同时更改该端口所属VLAN的设定——这显然不适合那些需要频繁改变拓补结构的网络。

  • 动态方式:动态VLAN则是根据每个端口所连的计算机,随时改变端口所属的VLAN。这可以减轻配置人员的负担。动态VLAN又可以进一步分为下面3类:

  1. 基于MAC地址的VLAN(MAC Based VLAN)

基于MAC地址的VLAN,就是通过查询并记录端口所连计算机上网卡的MAC地址来决定端口的所属。假定有一个MAC地址“A”被交换机设定为属于VLAN  “10”,那么不论MAC地址为“A”的这台计算机连在交换机哪个端口,该端口都会被划分到VLAN 10中去。

  • 基于子网的VLAN(Subnet Based VLAN)

基于子网的VLAN,则是通过所连计算机的IP地址,来决定端口所属VLAN的。不像基于MAC地址的VLAN,即使计算机因为交换了网卡或是其他原因导致MAC地址改变,只要它的IP地址不变,就仍可以加入原先设定的VLAN。

  • 基于协议或用户的VLAN(User Based VLAN)

基于协议或用户的VLAN,则是根据交换机各端口所连的计算机发送报文的协议,或者计算机上当前登录的用户,来决定该端口属于哪个VLAN。这里的用户识别信息,一般是计算机操作系统登录的用户,比如可以是Windows域中使用的用户名。这些用户名信息,属于OSI第四层以上的信息。

2.4 Trunk端口

其实原则上,有了Access口,就可以完成VLAN所需要的完整功能了。比如:交换机上也使用Access口进行连接,每一个端口一个VLAN进行隔离。比如下面的例子,两个VLAN,全部使用Access接口来构建。

5178785f4929f378ac36afa8c936137c.png

全部使用ACCESS接口构建VLAN网络

但这儿存在一个问题,因为一个Access口仅属于一个VLAN,如果两个交换机配置了成百上千个VLAN,这些VLAN需要跨交换机组网时,意味着两个交换机之间需要连接成百上千根的Access口链路。这样组网成本太高了。
为了解决这一问题,提出了Trunk端口的概念,Trunk端口允许接受和发送多个VLAN的报文,这些报文都打上VLAN-tag,用来标示每一个报文属于哪个VLAN。这样,交换机之间就只需要一个Trunk链路,就可以将多个VLAN连接起来。

89d96b4915048f878926e7e37fa3a2c2.png

Trunk端口,用于连接交换机,充当逻辑上的多个链路

2.5 Trunk端口的报文收发流程

  • Trunk端口收报文:

Trunk端口收到一个报文,判断是否有VLAN信息:

  • 如果报文中没有VLAN-tag,则打上端口的PVID,并进行交换转发,

  • 如果报文中有Vlan-tag,进一步判断trunk端口是否允许该 VLAN的数据进入:

    • 如果可以则转发

    • 否则丢弃

  • Trunk端口发报文:

比较端口的PVID和将要发送报文的VLAN信息:

  • 如果两者相等则剥离VLAN信息,再发送

  • 如果不相等则直接发送

2.6 Hybrid端口

Hybrid端口和Trunk端口的相同之处在于两种链路类型的端口都可以允许多个VLAN的报文发送时打标签;不同之处在于Hybrid端口可以允许多个VLAN的报文发送时不打标签,而Trunk端口只允许缺省VLAN的报文发送时不打标签。
对于Hybrid端口来说,可以同时属于多个VLAN。这些VLAN分别是该Hybrid端口的PVID,以及手工配置的”untagged”及”tagged”方式的VLAN。

2.7 Hybrid端口的报文收发流程

  • Hybrid端口收报文:  与Trunk端口手报文流程完全相同。

Hybrid端口收到一个报文,判断是否有VLAN信息:

  • 如果报文中没有VLAN-tag,则打上端口的PVID,并进行交换转发,

  • 如果报文中有Vlan-tag,进一步判断trunk端口是否允许该 VLAN的数据进入:

    • 如果可以则转发

    • 否则丢弃

  • Hybrid端口发报文:

判断该VLAN在本端口属性(哪些vlan需要打tag,哪些不需要打tag,是手工配置的):

  • 如果需要tag,则tag后直接发送(同Trunk端口)

  • 如果不需要tag,则剥离tag后发送(同Access端口)因为Hybrid端口的行为是access和trunk的混合模式,所以称为Hybrid

2.8 Hybrid的应用场景:

通常,可以使用Hybrid对相同网段的主机进行访问权限的控制。比如,通过配置Hybrid端口,可以让改端口的主机同时归属于多个VLAN,并与多个VLAN的主机进行通讯。

c2a0561d4101218cc909db0124119a7a.png

应用场景1:PC间隔离

组网需求:

  • PC1和PC2之间可以互访;

  • PC1和PC3之间可以互访;

  • PC1、PC2和PC3都可以访问服务器;

配置说明:

  • E0/1: Hybrid端口,归属V10, 同时untag加入V20,V30,V100(PC1访问PC2,PC3,Server)

  • E0/2: Hybrid端口,归属V20, 同时untag加入V10,V100(PC2访问PC1,Server)

  • E0/3: Hybrid端口,归属V30, 同时untag加入V10,V100(PC3访问PC1,Server)

  • G2/1: Hybrid端口,归属V100, 同时untag加入V10,V20,V30(服务器访问PC1,PC2,PC3)

41fe9ec92af12bb9dce64d42593561fb.png

应用场景2

组网需求

  1. PC1和PC3之间可以互访;

  2. PC2和PC3之间可以互访;

  3. PC1和PC4之间可以互访;

  4. PC2和PC5之间可以互访;

  5. 其余PC之间均禁止互相访问。

配置说明:
SwitchA:
E0/1: Hybrid端口,加入V10,同时untag加入V30
E0/2: Hybrid端口,加入V20,同时untag加入V30
E0/3: Hybrid端口,加入V30,同时untag加入V10,V20.
G2/1: Hybrid端口,(不加入某个VLAN),tagged加入V10,V20。
SwitchB:
E0/1: Access端口,加入V10
E0/2: Access端口,加入V20
E0/1: Hybrid端口,(不加入某个VLAN),tagged加入V10,V20。
注:交换机间的Hybrid端口,等价于Trunk端口

注意事项

配置Trunk端口或Hybrid端口,并利用Trunk端口或Hybrid端口发送多个VLAN报文时一定要注意:本端端口和对端端口的缺省VLAN ID(端口的PVID)要保持一致。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567300.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql查询条件是小数 查不到6.28_28.mysql数据库之查询

1.查询语句mysql 多表关系 查询语句 索引1.添加数据补充:将一个查询结果插入到另一张表中create table student(name char(10),gender int);insert into student values("jack",1);insert into student values("rose",0);create table student_man(name ch…

控制for each循环次数_CCF CSP编程题解201312-1:出现次数最多的数

试题编号:201312-1试题名称:出现次数最多的数时间限制:1.0s内存限制:256.0MB问题描述:给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。输入格式:输入的第一行只有一…

python编程优化_掌握六大技巧,让python编程健步如飞!

有人跟我抱怨说python太慢了,然后我就将python健步如飞的六大技巧传授给他,结果让他惊呆了,你也想知道这个秘诀吗?这就告诉你:Python是一门优秀的语言,它能让你在短时间内通过极少量代码就能完成许多操作。不仅如此&a…

python离线安装依赖包_python离线安装外部依赖包的实现

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台&…

python段子_Python爬取内涵段子里的段子

环境:Python3.6#!/usr/bin/env python3#-*-coding:utf-8-*-#version:3.6.4__author__ 杜文涛import requestsimport jsondef get_json_dic(url):global dict_jsonresponse requests.get(urlurl)json_response response.content.decode() #获取r的文本 就是一个js…

r语言中的或怎么表示什么不同_R经典入门 之 R语言的基本原理与概念 -- 200430

一、基本原理R是一种解释型语言,输入的命令可以直接被执行,不同于C等编译语言需要构成完整的程序才能运行。R的语法非常简单和直观。合法的R函数总是带有圆括号的形式,即使括号内没有内容(如,ls())。所有函数后都接有圆括号以区别…

旋流式沉砂池计算_旋流沉砂池设计方法

旋流沉砂池设计接口条件和主要参数设计旋流沉砂池前要确认的接口条件和信息包括:地质、气候等基本设计条件;可用地尺寸及在总图的位置坐标;地坪标高,上下游水位或范围,冻土层高度,管道覆土小深度要求&#…

parallelstream启动的线程数_高并发与多线程网络学习笔记(三)线程组和线程池

线程组线程组的作用是:可以批量管理线程或线程组对象,有效地对线程或线程组对象进行组织。构造函数ThreadGroup(String name)//默认parent为当前线程组 ThreadGroup(ThreadGroup parent, String name)具体方法//评估当前活跃的线程数,包括当前group和子g…

java 缓冲流_Java缓冲流的使用

package java;import org.junit.Test;import java.io.*;/*** 处理流之一:缓冲流的使用** 1.缓冲流:* BufferedInputStream* BufferedOutputStream* BufferedReader* BufferedWriter** 2.作用:提供流的读取、写入的速度* 提高读写速度的原因&a…

pytorch l2正则化_吴恩达深度学习 编程作业六 正则化(2)

推荐守门员应该将球踢到哪个位置,才能让自己的队员用头击中。1.无正则化模型判别是否有正则化与调用其他计算函数。准确率:0.948/0.915明显过拟合overfiting了。2.L2正则化公式如下,在原有cost函数基础上增加L2项,L2为参数w的均方…

java 代码锁_Java中的Lock锁

Lock锁介绍:在java中可以使用 synchronized 来实现多线程下对象的同步访问,为了获得更加灵活使用场景、高效的性能,java还提供了Lock接口及其实现类ReentrantLock和读写锁 ReentrantReadWriteLock。相比synchronized来实现同步,使…

vs中工具箱代表的意思_“日”除了代表太阳,其实还有这种意思,特别是出现在这些词语中的“日”...

对于“日”来说,大家都并不陌生,对于日的成语更是多得数不胜数,今天小编将日字成语进行了一个总结,需要用到的朋友们可以收藏!一:以“日”开头的成语,大多数形容的是时间。日积月累、日久天长、…

java 访问路径_java获取项目访问路径的相关方法

java获取项目访问路径的相关方法刘振兴代码分享2016年02月11日6292暂无评论在jsp和class文件中调用的相对路径不同。在jsp里,根目录是WebRoot 在class文件中,根目录是WebRoot/WEB-INF/classes 当然你也可以用System.getProperty("user.dir")获…

java 保存文件在服务器_java文件保存至服务器

import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;public class ImageRequest{/*** 读取网络图片并保存至服务器硬盘中* param imgUrl* return …

mysql or走索引吗_加了索引,mysql查询就一定会用吗?

小白白跑去鹅厂面试,面试官提出了一个很实际的问题: mysql增加索引,那些情况会失效呢?谈一下实际工作中遇到的情况。我们的小白白又抛出了白氏秘籍:用不用索引,找DBA小姐姐!啊?这是你…

java单词查找树_Trie 单词查找树 java实现(来自算法第4版)

强烈建议看书上的实现步骤,这里只是一个个人记录。单词查找树的性能:查找命中所需的时间与被查找的键的长度成正比。比如单词有7个字符,查找或插入操作最多只需要检查8个节点。查找未命中只需检查若干个字符。所需空间:在RN~RNw之…

学python开发必须要会wsgi么_学python着几个要搞清楚WSGI和uWSGI区别

Python: 解决pip安装源被墙的问题pip install -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.c ...resin的简单介绍和使用1.resin是一款应用服务器(application server),它自身也包含一款支持Http1.1协议的WEB服务器(web server),它也可以…

java 连接 sftp失败_java – 文件上传到SFTP失败(Apache VFS)

我有一个SFTP问题(WindowsWinSSHD).我尝试用Apache Commons VFS在一个文件夹中写一个文件.在本地SFTP上我没有上传的问题,但在第二个SFTP上我总是得到以下错误.FTP看起来像这样:我需要上传到文件夹“alis”.奇怪的是它没有User / Group和770权限.但是,使用FileZilla…

基本农田卫星地图查询_如何基于西安80坐标查询定位

1. 概述水经注软件除了可以轻松下载无水印Google Earth卫星影像、有明确拍摄日期的历史影像、地方高清天地图、百度高德大字体打印地图,且可按1万/5千等国家标准图幅下载,下载含高度的全国矢量建筑、全国乡镇及街区行政区划、地名点、高速铁路网、公交路…

java getipaddress_教你java用getAddress方法取得IP地址

本篇教你java用getAddress方法取得IP地址:getAddress方法和getHostAddress类似,它们的唯一区别是getHostAddress方法返回的是字符串形式的IP地址,而getAddress方法返回的是byte数组形式的IP地址。getAddress方法的定义如下:public…