首先要搞明白VLAN的由来,为什么会产生这样一种技术。这得从计算机网络的数据交换说起,最开始,我们的网络处于蛮荒时代,数据是怎么交换的,就是简单的介质共享,大家都接到一条线路上,然后互相发数据,这个必然就会产生一个问题,路只有一条大家抢着用,难免不会产生冲突,用的人越多,冲突越厉害。那么接下来大家就共同制定一个规定,CSMA/CD产生了,发送数据之前先检测下线路忙不忙,不忙再发。不过问题还是有,忙的时候,线路一直轮不到我用,我不开心,服务总是被拒绝。怎么办,二层交换机来了,每个人分配端口,MAC地址绑定,自己用自己的,这样冲突减小了。二层交换机虽然隔离冲突域,但是不能有效划分广播域。广播报文会像所有人(端口)发,人多了还是有问题,虽然数据能转发,但是效率低,容易广播风暴。怎么办,VLAN来了,他干了什么,划分广播域。

下面看看专业说法:

为什么需要VLAN技术,它的优点在哪里呢?

在TCP/IP协议规范中,没有VLAN的定义。当第二层网络交换机发展到一定程度的时候,传统的路由器由于在性能上的不足,它作为网络节点的统治地位受到了很大的挑战。既然传统路由器是网络的瓶颈,而交换机又有如此优越的性能,为什么不用交换机取代传统路由器,来构造网络呢?我们都知道,位于协议第2层的交换机虽然能隔离冲突域,提高每一个端口的性能,但并不能隔离广播域,不能进行子网划分,不能层次化规划网络,更无法形成网络的管理策略,因为这些功能全都属于网络的第三层———网络层。因此,如果只用交换机来构造一个大型计算机网络,将会形成一个巨大的广播域,结果是,网络的性能反而降低以至无法工作,网络的管理束手无策,这样的网络是不可想象的。按照TCP/IP的原理,一般来说,广播域越小越好,一般不应超过200个站点。那么,如何在一个交换网络中划分广播域呢?交换机的设计者们借鉴了路由结构中子网的思路,得出了虚网的概念,即通过对网络中的IP地址或MAC地址或交换端口进行划分,使之分属于不同的部分,每一个部分形成一个虚拟的局域网络,共享一个单独的广播域。这样就可以把一个大型交换网络划分为许多个独立的广播域,即VLAN。

那么我们来讲讲VLAN,Virtual Local Area Network(虚拟局域网)。

VLAN,即Virtual Local Area Network(虚拟局域网),遵循IEEE802.1Q标准,它在原来的以太网帧源MAC字段的后面加入了4个字节的VLAN Tag,这4字节的结构如图:

VLAN Tag中各字段的含义如下:

Type:取固定值0x8100,用于标志VLAN Tag;

User Priority:用户优先级,用于流量的等级划分;

Flag:该bit在以太网中固定取0;

VLAN-ID:取值为0~4095,用于标志不同VLAN。下面就看看是怎么实现的:

由于不同VLAN之间是二层隔离,通过将不同的主机分到不同的VLAN中去,就有效控制了广播域的范围。这样,通过上面增加VLANID,可以对端口进行隔离,包的转发也就相对有序,广播域减小,冲突减少了。

更多的知识:http://www.h3c.com.cn/MiniSite/Technology_Circle/Net_Reptile/The_One/Home/Catalog/200911/655250_97665_0.htm

计算机网络VLAN学习的更多相关文章

  1. VLAN学习

    IEEE于1999年颁布了标准化VLAN实现方案的 IEEE 802.1Q 协议标准草案,对带有VLAN标识的报文结构进行了统一规定. 传统的以太网数据帧在目的MAC和源MAC地址之后封装的是上层协议 ...

  2. 计算机网络-vlan划分

    1.VLAN的划分 (1)基于端口的VLAN: 交换机A上的1,2端口和交换机B上的3,4端口构成一个VLAN. 交换机A上的3,4端口和交换机B上的1,2端口构成一个VLAN. (2)基于MAC地址 ...

  3. 计算机网络&http学习笔记持续整理

    http不常见状态码: 204: 请求处理成功,但是没有资源可返回. 206: 只返回请求资源的某一部分(客户端只想请求某一部分),响应报文中包含由Content-Range指定范围的实体内容. 30 ...

  4. 计算机网络:这是一份全面 & 详细 的TCP协议学习指南

    原文链接:blog.csdn.net 用这个媒体播放器组件,实时互动时也可共同观看本地视频juejin.im 前言 计算机网络基础 该是程序猿需掌握的知识,但往往会被忽略 今天,我将详细讲解计算机网络 ...

  5. OpenFlow能解决私有云网络VLAN问题么

    本文转载自:http://network.51cto.com/art/201202/314310.htm 在关于私有云网络的文章中,我们首先探讨了物理网络是否影响私有云.本文我们将讨论如何通过软件定义 ...

  6. 802.1Q VLAN技术原理

    文章出处:http://hi.baidu.com/x278384/item/d56b0edfd4f56a4eddf9be79 在数据通信和宽带接入设备里,只要涉及到二层技术的,就会遇到VLAN.而且, ...

  7. 拿到这份 Java、C++ 软件开发完整学习路线图,我面试再也没挂过..

    大家好,我是柠檬. 柠檬哥作为一个普通大学.非计算机专业,自学后端技术进入腾讯做后端开发工作,我自己也是非科班自学计算机成功转行软件开发(有想听柠檬哥转行之路经历的吗,可以留言告诉我,人多就写写),体 ...

  8. 计算机网络之应用层概述(C/S模型与p2p模型)

    文章转自:https://blog.csdn.net/weixin_43914604/article/details/105582318 学习课程:<2019王道考研计算机网络> 学习目的 ...

  9. 计算机网络传输层之TCP拥塞控制(慢开始与拥塞避免、快重传和快恢复)

    文章转自:https://blog.csdn.net/weixin_43914604/article/details/105532044 学习课程:<2019王道考研计算机网络> 学习目的 ...

随机推荐

  1. 解决:debug-stripped.ap_' specified for property 'resourceFile' does not exist.

    1.错误描述 更新Android Studio到2.0版本后,出现了编译失败的问题,我clean project然后重新编译还是出现抑郁的问题,问题具体描述如下所示: Error:A problem ...

  2. Android Studio 实用快捷键

    ctrl + alt + 方向键   跳转到上次或下次编辑位置 ctrl + alt +n   查找文件 shift + f6       重构之重命名 ctrl + f12       导航到类方法 ...

  3. js的相关验证

    1 var JavaScriptCommon = { /*身份证号码校验*/ VerifyID: function (socialNo) { if (socialNo == "") ...

  4. C++中类成员使用前需要初始化的重要性

    今天写程序的时候,创建了一个结构体: struct BufferObj { char* buf; int bufLen; SOCKADDR_STORAGE addr; int addrLen; str ...

  5. Linux编程基础——GDB(设置断点)(转:TianFang,cnblog: http://www.cnblogs.com/TianFang/archive/2013/01/20/2868889.html)

    启动GDB后,首先就是要设置断点,程序中断后才能调试.在gdb中,断点通常有三种形式: 断点(BreakPoint): 在代码的指定位置中断,这个是我们用得最多的一种.设置断点的命令是break,它通 ...

  6. li的border无法和上边对齐

    如果利用border设置四周的border,如果一边的边框比较长无法对齐 解决办法: .test{ position: relative; border: 1px solid #808080; hei ...

  7. Nginx源码研究二:NGINX的事件处理概论

    NGINX作为服务端的应用程序,在客户端发出数据后,服务端在做着这样一些处理,数据先会经过网卡,网卡会和操作系统做交互,经过操作系统的协议栈处理,再和不同的应用程序交互. 在这里面涉及两个概念,一个是 ...

  8. python: list[-1] 与 list[-1:] 的区别

    >>> l '3.542485\t1.977398\t-1\r\n' >>> l.split() ['3.542485', '1.977398', '-1'] &g ...

  9. PreparedStatement執行sql語句

    import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import org ...

  10. Ubuntu命令行下安装,卸载软件包的过程[转]

    一.Ubuntu中软件安装方法 1.APT方式 (1)普通安装:apt-get install softname1 softname2 …; (2)修复安装:apt-get -f install so ...