最近有几个学生粉丝后台私信我,让我说说交换机与 VLAN。我在阅读这几个粉丝私信中发现一个有趣的现象,那就是吐槽大学计算机网络课程的晦涩枯燥,而不是去深层次解释协议出现的原因或者用来去解决什么问题。

帅天今天就和大家聊聊交换机与 VLAN 到底是为何而来,是为了解决什么问题而出现的。在说这个之前,大家首先可以想想前一章提到的 Hub 集线器,仔细的思考一下 Hub 有什么巨大的缺点?

Hub 的问题

使用 Hub 这种组网的方法,一旦机器数目增多,问题就出现了。因为 Hub 是广播的,不管某个接口是否需要,所有的 Bit 都会被发送出去,然后让主机来判断是不是需要。

这种方式路上的车少就没问题,车一多,产生冲突的概率就提高了。而且把不需要的包转发过去,纯属浪费。看来 Hub 这种不管三七二十一都转发的设备是不行了,需要点儿智能的。因为每个口都只连接一台电脑,,这台电脑又不怎么换 IP 和 MAC 地址,只要记住这台电脑的 MAC 地址,如果目标 MAC 地址不是这台电脑的,这个口就不用转发了。

交换机工作原理

二层交换机的出现就是为了解决这个问题。我们结合下图看一下二层交换机的工作原理:

如上图所示,两台交换机连接着三个局域网,每个局域网上都有多台机器。如果机器 1 只知道机器 4 的 IP 地址,当它想要访问机器 4,把包发出去的时候,它必须要知道机器 4 的 MAC 地址。

  1. 机器 1 发起广播,机器 2 收到这个广播,但是这不是找它的,所以没它什么事。交换机 A 一开始是不知道任何拓扑信息的,在它收到这个广播后,采取的策略是,除了广播包来的方向外,它还要转发给其他所有的网口。于是机器 3 也收到广播信息了,但是这和它也没什么关系。
  2. 交换机 B 也是能够收到广播信息的,但是这时候它也是不知道任何拓扑信息的,因而也是进行广播的策略,将包转发到局域网三。这个时候,机器 4 和机器 5 都收到了广播信息。机器 4 主动响应说,这是找我的,这是我的 MAC 地址。于是一个 ARP 请求就成功完成了。

在上面的过程中,交换机 A 和交换机 B 都是能够学习到这样的信息:机器 1 是在左边这个网口的。当了解到这些拓扑信息之后,交换机会维持一个转发表,用来记录。

当机器 2 要访问机器 1 的时候,机器 2 并不知道机器 1 的 MAC 地址,所以机器 2 会发起一个 ARP 请求。这个广播消息会到达机器 1,也同时会到达交换机 A。根据之前记录的转发表信息,这个时候交换机 A 已经知道机器 1 是不可能在右边的网口的,所以这个广播信息就不会广播到局域网二和局域网三。

当机器 3 要访问机器 1 的时候,也需要发起一个广播的 ARP 请求。这个时候交换机 A 和交换机 B 都能够收到这个广播请求。交换机 A 当然知道机器 1 是在左边这个网口的,所以会把广播消息转发到局域网一。同时,交换机 B 收到这个广播消息之后,由于它知道机器 1 是不在右边这个网口的,所以不会将消息广播到局域网三。

当交换机作为一个关卡一样,过了一段时间之后。就有了整个网络的一个结构了。这个时候,基本上不用广播了。全部可以准确转发。当然,每个机器的 IP 地址会变,所在的口也会变,因而交换机上的学习的结果,我们称为转发表,是有一个过期时间的。

交换机环路问题

随着办公室越来越大,交换机数目肯定越来越多。当整个拓扑结构复杂了,这么多网线,绕过来绕过去,不可避免地会出现一些意料不到的情况。其中常见的问题就是环路问题

看下面一张图,当两个交换机将两个局域网同时连接起来的时候。你可能会觉得,这样反而有了高可用性。但是却不幸地出现了环路。出现了环路会有什么结果呢?

我们再想象一下机器 1 访问机器 2 的过程。一开始,机器 1 并不知道机器 2 的 MAC 地址,所以它需要发起一个 ARP 的广播。广播到达机器 2,机器 2 会把 MAC 地址返回来,看起来没有这两个交换机什么事情。

但是问题来了,这两个交换机还是都能够收到广播包的。交换机 A 一开始是不知道机器 2 在哪个局域网的,所以它会把广播消息放到局域网二,在局域网二广播的时候,交换机 B 右边这个网口也是能够收到广播消息的。交换机 B 会将这个广播息信息发送到局域网一。局域网一的这个广播消息,又会到达交换机 A 左边的这个接口。交换机 A 这个时候还是不知道机器 2 在哪个局域网,于是将广播包又转发到局域网二。左转左转左转,好像是个圈哦。

每台机器都会发广播包,交换机转发也会复制广播包,当广播包越来越多的时候,按照上一节讲过一个共享道路的算法,也就是路会越来越堵,最后谁也别想走。所以,必须有一个方法解决环路的问题,怎么破除环路呢?

在计算机网络中,有一种协议叫 STP ,它就是为解决交换机环路问题而设计的。

我们知道,在数据结构中,有一个方法叫作最小生成树。有环的我们常称为。将图中的环破了,就生成了。在计算机网络中,生成树的算法叫作STP,全称Spanning Tree Protocol。可以简单理解为,通过比较权重大小从多个交换机中选举出五岳盟主的方式。为了给大家一个感性的认知,可以看下图,通过 STP 算法,网络拓扑最终形成了类似的树结构。

STP 选举过程比较复杂,不是专门从事网络工程师的童鞋理解只需了解即可。

交换机的安全问题和广播问题

一般几千人的公司,部门很多,人也很多,机器多了,交换机也多了,就算交换机比 Hub 智能一些,但是还是难免有广播的问题。同时,公司有一些部门是需要保密的部门,比如财务部。由于在同一个广播域里面,很多包都会在一个局域网里面飘啊飘,碰到了一个会抓包的程序员,就能抓到这些包,如果没有加密,就能看到这些敏感信息了。

为了解决这问题,我们可以使用虚拟隔离技术,也就是常说的 VALN,或者叫虚拟局域网。使用 VLAN,一个交换机上会连属于多个局域网的机器,那交换机怎么区分哪个机器属于哪个局域网呢?

如上图所示,我们只需要在原来的二层的头上加一个 TAG,里面有一个十二位的 VLAN ID。

如果我们买的交换机是支持 VLAN 的,当这个交换机把二层的头取下来的时候,就能够识别这个 VLAN ID。这样只有相同 VLAN 的包,才会互相转发,不同 VLAN 的包,是看不到的。这样广播问题和安全问题就都能够解决了。

有人会问交换机之间怎么连接呢?将两个交换机连接起来的口应该设置成什么VLAN 呢?对于支持 VLAN 的交换机,有一种口叫作 Trunk。它可以转发属于任何 VLAN 的口。交换机之间可以通过这种口相互连接。

总结

这一章先从 Hub 转发任何数据包带来的效率极低情况出发,引出了交换机。交换机有一张转发表用来提高寻址的效率。接着指出交换机存在的环路问题,并提出了 STP 生成树协议的解决方案。最后为了解决交换机的安全问题,介绍了 VLAN 虚拟局域网技术。

如果喜欢这篇文章,请点个关注,你的关注是我最大的动力。

怎么判断再一个局域网内一个ip被两台机器占用_交换机与 VLAN 到底是怎么来的...相关推荐

  1. 如何在同一个局域网内实现简单的两台Linux主机互相连接

    文章目录 二.配置步骤 二.配置步骤 试验前准备: vmware内创建两个虚拟机 两台虚拟机确保连着同一个网络 可以适用于两个朋友之间相互连接虚拟机使用,下面的步骤一样的. 1.首先我们将两台虚拟机的 ...

  2. 计算机无法访问另一台计算机,同在一个局域网内,我的机子不能访问另一台计算机...

    同在一个局域网内,我的机子不能访问另一台计算机 (2006-11-15 18:07:21) 1.开启guest账户. 2.允许Guest用户访问本机 :打开组策略编辑器,依次选择"计算机配置 ...

  3. 单个路由器设置计算机无线网络,两个无线路由器怎么设置到一个局域网内?

    本文中,鸿哥主要给大家介绍,如何把两个无线路由器设置到一个局域网内的方法. "把两个路由器设置到一个局域网内的方法有2种: 两个路由器无线桥接 路由器2设置成无线交换机 在本文中,鸿哥主要给 ...

  4. 无线网怎么调成一个服务器,两个无线路由器怎么设置到一个局域网内?

    本文中,鸿哥主要给大家介绍,如何把两个无线路由器设置到一个局域网内的方法. "把两个路由器设置到一个局域网内的方法有2种: 两个路由器无线桥接 路由器2设置成无线交换机 在本文中,鸿哥主要给 ...

  5. 怎么扫描同网段mac地址linux,如何快速收集局域网内的IP+MAC信息?用这个扫描器分分钟搞定!!!...

    原标题:如何快速收集局域网内的IP+MAC信息?用这个扫描器分分钟搞定!!! 网 工 圈 中国圈内 最早的公益 公众号,本号已认证(关注近 5w+) 关注 科来MAC地址扫描器安装 1.右键" ...

  6. 关于局域网计算机ip地址设置,在win7系统局域网内设置ip地址的方法

    局域网是指在某一区域内由多台计算机互联成的计算机组,当windows7系统设备连接进局域网时,为了方便区分,要在局域网内设置ip地址,这该怎么操作?我们可以通过控制面板来设置,下文小编告诉大家在win ...

  7. 使用 NetworkInterface 获得本机在局域网内的 IP 地址

    转载于: https://segmentfault.com/a/1190000007462741 1.问题提出 在使用 Java 开发网络程序时,有时候我们需要知道本机在局域网中的 IP 地址.很常见 ...

  8. Android 获取局域网内网IP地址

    Android 获取局域网内网IP地址 废话 上代码 完事 废话 拿局域网IP一般用在tcp通讯或udp通讯上,下次再整理下这类通讯的框架 上代码 /*** 网络工具* 获得局域网IP地址* @aut ...

  9. 局域网内电脑IP冲突解决办法

    局域网内电脑IP冲突解决办法: 对于不是绑定IP的电脑,可以自动获取也可以手动设置IP连接,这时候IP就变化了,如果原先的IP连接了别的电脑,或者别的电脑连接了原先的IP,这时候改过IP之后就不能够连 ...

最新文章

  1. python3中map()函数用法
  2. aop实现原理_Java:由浅入深揭开 AOP 实现原理
  3. git对指定commitid 打tag_Git-命令行-使用 Tag 标记你的代码
  4. 数据结构实验 5.二叉树深度
  5. 2oracle单行函数
  6. 本週主題 -- Jakarta Commons Lang
  7. 一个前端博客(7)——事件绑定和移除事件
  8. vue 后台翻译_vue - 实战项目 - 在线翻译
  9. Linux gzip 压缩/解压 详解
  10. 31页智慧文旅云服务平台建设方案【附下载】
  11. yii2自动更新时间
  12. 面具root后如何解决SafetyNet不通过-SafetyNet API错误解决办法
  13. windows下制作macos安装u盘_制作MacOS系统启动盘教程以及安装教程
  14. 怎么把PDF转换成Excel文件?分享两种简单好用的转换方法
  15. vue 所见即所得_Vue html5编辑器:Vue的html5所见即所得编辑器
  16. Linux其实也是时间管理大师——掌握crontab
  17. android p2p 学习
  18. newifi3 web认证_newifi新路由3图文设置教程 | 192.168.1.1登陆页面
  19. AFNetworking 为韩流圈项目做的技术储备
  20. 具有大写字母和数字的随机字符串生成

热门文章

  1. 基于DotNet Core的RPC框架(一) DotBPE.RPC快速开始
  2. OSS.Social微信项目标准库介绍
  3. 《机器学习项目开发实战》送书活动结果公布
  4. php.ini-development和php.ini-production的区别
  5. [转]一文读懂目标检测:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD
  6. 学习C语言指针,这一篇案例教程就够够的了
  7. 剑指offer之判断链表是否包含环
  8. C和指针之字符串之strncpy、strncat、strncmp
  9. linux c 之使用-O来优化gcc
  10. 因为我的名字特殊大家都是用异样的眼光在看着我 04