• 【网络】网络基础知识点(MAC、IP、通讯模式、通信方式、集线器、交换机、路由器、冲突域/广播域、ARP、VLAN等)


    网络基础概念

    Mac地址和IP地址

    Mac地址IP地址
    名称Media Access Control Address,直译为“媒体访问控制地址”,也称为局域网地址(LAN Address),以太网地址(Ethernet Address)或物理地址(Physical Address)Internet Protocol Address,译为“网际协议地址”。目前有大部分软件使用 IPv4 地址,但 IPv6 也正在被人们接受,尤其是在教育网中,已经大量使用
    长度48位的二进制数32位的二进制数
    表述形式MAC地址通常表示为12个16进制数,如:00-16-EA-AE-3C-40就是一个MAC地址,其中前3个字节,16进制数00-16-EA代表网络硬件制造商的编号,它由IEEE(电气与电子工程师协会)分配,而后3个字节,16进制数AE-3C-40代表该制造商所制造的某个网络产品(如网卡)的系列号IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。例如100.41.53.106
    分配方式由网络设备制造商生产时烧录在网卡(Network lnterface Card)的EPROM(一种闪存芯片,通常可以通过程序擦写)基于网络拓扑分配
    用途应用在OSI第二层,即数据链路层,用于链路层寻址应用于OSI第三层,即网络层,用于网络寻址

    一个设备有网络层,它就有IP;它有链路层,它就有MAC
    因此网卡和路由器这种网络设备,既有IP又有MAC

    Mac地址和IP地址在通信中的联系局域网中的路由器/交换机会记录每台计算机的 MAC 地址。当一台计算机通过网络向另一台计算机发送数据时,数据包中除了会附带对方的 IP 地址,还会附带对方的 MAC 地址。当数据包达到局域网以后,路由器/交换机会根据数据包中的 MAC 地址找到对应的计算机,然后把数据包转交给它,这样就完成了数据的传递

    网络基础:MAC地址和IP的关系
    挺有趣的,IP为逻辑地址,它不是一成不变的;MAC是物理地址,网卡以及路由器的物理地址都是在出厂时固定的,而且全世界的每一个设备的MAC地址都是不重复的,唯一的。但是你会发现,IP作用于全球,而MAC只作用在局域网。

    Q:为什么不用mac地址代替ip地址?
    A1:Mac地址就像一个人的身份证号,ip地址就是这个人的所在地。仅仅知道身份证号是不能找到这个人在哪里的,所以还需要ip地址。
    A2:Mac地址就像身份证号一样,具有唯一性,IP就像是你的电话号码可以有多个,不同场景用不同的电话号码。你工作时有一个工作手机号码,工作之外还有一个私人号码用于亲戚朋友联络用的。
    A3:Mac地址是像uuid一样的字符,IP地址则是数字组成的x.x.x.x,可以用来表示范围和层级,适合用于寻址

    Q:Mac地址也会用完吗?
    A:有限的Mac地址,不断的使用,迟早是会消耗完的。但是Mac地址数量足够多,还可以使用很长一段时间。IP地址是32位二进制数,约43亿个IP地址,而Mac地址是48位二进制数,约281万亿个Mac地址。公网IP地址是在2019年才耗尽的,可想而知,Mac地址池可是比IP地址池大了6万多倍,而且重复的Mac地址只要不在一个局域网内就能正常使用,Mac地址相当于永远都消耗不完。


    网卡(网络接口)

    网卡(NICNetwork interface CardNetwork interface Controller),也叫网络接口卡、网卡适配器等类似名称。

    虚拟网卡(VNIC),也叫逻辑网卡、虚拟网络接口等类似名称。它通过软件技术实现,操作系统可以为一个物理网卡创建多个虚拟网卡。

    • 虚拟网卡具有和物理网卡完全相同的功能,操作系统和应用程序会将虚拟网卡视为单独的物理网卡。
    • 虚拟网卡的本质意义在于它可以增加网络的灵活性和可配置性。通过创建多个虚拟网卡,我们可以实现各种网络拓扑和网络隔离方式,从而满足不同的应用需求。例如,我们可以创建多个虚拟网卡,将它们分配给不同的容器或虚拟机,以实现网络隔离和安全性。

    每个(虚拟)网卡都有一个MAC地址。

    每个(虚拟)网卡都必须设置一个IP地址。因为有虚拟网卡技术的存在,通常一张网卡只设置一个IP地址,如果需要多个ip,使用"添加虚拟网卡"的方式会更加灵活和具有可拓展性。但一个(虚拟)网卡也可以配置多个IP地址,只是不常用罢了。

    ip地址是分配给(虚拟)网卡的,因此我们才可以用ifconfig、ipconfig命令查看到本机的IP,这些命令的实际作用是列出本机的网络接口及其配置信息。


    通讯模式

    单播:每个数据包发往单个目的主机,目的地址指明单个接收接口称为单播。
    组播:组播(多播)处于单播和广播之间:帧仅传送给属于多播组的多个主机。
    广播:一个主机向网上的所有其他主机发送帧,称为广播。

    广播和泛洪

    泛洪(Flooding)是交换机和网桥使用的一种数据流传递技术,将从某个接口收到的数据流向除该接口之外的所有接口发送出去。-- 百度百科
    (集线器的转发方式也叫泛洪)

    广播是有一个具体的行为,它的对象是整个网络, 在ARP时往往需要有特定的主机来响应, 当然太多的广播对于网络是有害的, 容易造成广播风暴.。

    总的来说, 主要有以下两点区别:

    • 泛洪操作广播的是普通数据帧而不是广播帧 ;
    • 广播是向同一子网内所有的端口(包括自己的那个端口)发送消息;泛洪是在除自己外的所有的端口发送消息。

    通信方式

    计算机网络 | 通信方式

    网络通信方式分为三种:单工、半双工、全双工通信
    模型示意图
    单工:单行道。是指在数据只在一个方向上传输,方向是固定的,不能实现双向通信。比如广播电台、电视、打印机。只接收信号或者命令,不发出信号。

    半双工:双向单车道。允许数据在两个方向上传输,但是某个时刻,只允许数据在一个方向上传输,可以基本双向通信。
    传统的对讲机使用的就是半双工通信方式。由于对讲机传送及接收使用相同的频率,不允许同时进行。因此一方讲完后,需设法告知另一方讲话结束(例如讲完后加上’OVER’),另一方才知道可以开始讲话。

    为什么对讲机不采用全双工方式通信?

    1. 半双工能够满足对讲机的需求
    2. 由于易受干扰,无线电一般不可能在同一频带上接收和发射信号,所以半双工抗干扰能力强,简单实用
    3. 全双工为了解决信号干扰,需要分离上下行信道,会增加功耗;这就体现出半双工功耗低,设备会更耐用
    4. 半双工难度系数低,成本低;全双工难度系数高,成本高
      新式对讲机也已经有全双工的了

    集线器是半双工通信,半双工通信需采用CSMA/CD机制来避免冲突。

    全双工:双向双车道。允许数据同时在两个方向传输,发送和接收完全独立,在发送的同时可以接收信号,或者在接收的同时可以发送。它要求发送和接收设备都要有独立的发送和接收能力。
    全双工通信效率高,但造价也高。电话、手机都是全双工通信,因为在讲话时可以听到对方的声音。

    网络基础设备

    推荐阅读

    集线器 hub(第一层)

    集线器属于纯硬件网络底层设备,工作在物理层(OSI第一层),它仅仅是无脑将电信号转发到所有出口(广播),不做任何处理,是没有智商的

    通俗解释:集线器就像根铁棒,所有终端把网线收发的几根芯都接在这根铁棒上,不插电的集线器就是普通铁棒,插电的集线器就是带信号放大增强的铁棒。

    电脑A向电脑B发送数据包时,会在头部拼接电脑B的Mac地址。
    在这里插入图片描述
    集线器连接的电脑收到广播后,根据数据包头部的目标Mac地址信息,判断这个数据包是发给自己的,便收下,判断这个数据包并不是发给自己的,便丢弃。
    在这里插入图片描述
    集线器的缺点:

    • 集线器只有广播模式(没有单播、组播),每当有数据传输时都会发往所有端口, 这叫"泛洪",浪费很多带宽,影响正常上网
    • 原来只要发给电脑A的消息,会发给连接到集线器中的所有电脑,这样既不安全,又浪费网络资源

    于是,集线器在本世纪初就被淘汰了

    交换机 switch(第二层)

    交换机工作在数据链路层(OSI第二层),能学习mac地址,可以把消息只发给目标MAC地址指向的那台电脑

    交换机内部的CPU会在每个端口成功连接时,通过将MAC地址和端口对应,形成一张MAC表。在今后的通讯中,发往某个MAC地址的数据包将仅送往其对应的端口,而不是所有的端口(如果没有找到该MAC,那么就把数据包发往所有端口,即"泛洪",如果某个端口应答,就记录MAC,并将数据包发往该端口,否则丢弃)

    交换机内部维护一张 MAC 地址表,记录着每一个 MAC 地址的设备,连接在其哪一个端口上。

    MAC 地址端口
    bb-bb-bb-bb-bb-bb1
    cc-cc-cc-cc-cc-cc3
    aa-aa-aa-aa-aa-aa4
    dd-dd-dd-dd-dd-dd5

    随着机器数量越多,交换机的端口也不够了,但其实只要将多个交换机连接起来,这个问题就轻而易举搞定,完全不需要设计额外的东西
    在这里插入图片描述
    要注意的是,上面那根红色的线,最终在 MAC 地址表中可不是一条记录呀,而是要把 EFGH 这四台机器与该端口(端口6)的映射全部记录在表中。最终,两个交换机将分别记录 A ~ H 所有机器的映射记录

    左边的交换机

    MAC 地址端口
    bb-bb-bb-bb-bb-bb1
    cc-cc-cc-cc-cc-cc3
    aa-aa-aa-aa-aa-aa4
    dd-dd-dd-dd-dd-dd5
    ee-ee-ee-ee-ee-ee6
    ff-ff-ff-ff-ff-ff6
    gg-gg-gg-gg-gg-gg6
    hh-hh-hh-hh-hh-hh6

    右边的交换机

    MAC 地址端口
    bb-bb-bb-bb-bb-bb1
    cc-cc-cc-cc-cc-cc1
    aa-aa-aa-aa-aa-aa1
    dd-dd-dd-dd-dd-dd1
    ee-ee-ee-ee-ee-ee2
    ff-ff-ff-ff-ff-ff3
    gg-gg-gg-gg-gg-gg4
    hh-hh-hh-hh-hh-hh6

    网桥和交换机

    网桥是比交换机出现的更早的设备(现在也已被淘汰)

    网桥(Bridge)是早期的两端口二层网络设备,工作在链路层,可以看做是只有两个端口的交换机。网桥用来将两个局域网合并成一个扩展局域网,或者把一个局域网分隔成两个小局域网。
    在这里插入图片描述
    网桥的两个端口分别有一条独立的交换信道,不和集线器一样共享一条背板总线,并像交换机一样,将每个设备的所有MAC地址存储到一个表中,依据MAC地址向对应端口转发数据。因此网桥有隔离冲突域的作用

    发展过程
    在这里插入图片描述
    一开始的时候,由于硬件水平不是很发达,人们为了提高局域网效率,减少广播风暴的出现,生产了网桥,然后他们把一个局域网一分为2,中间用网桥连接,这样A发给BCD的数据就不会再广播到EFGH了,只有从A发到EFGH的数据包才能通过网桥,到达另外一个子网。

    这样一来,非必要的传输减少了,整个网络的效率也随之提高了不少!随着硬件发展,出现了4个、8个端口的链路层设备,这就是交换机,由于交换机可以使得网络更安全,网络效率更高,交换机渐渐替代了hub和网桥,成为组建局域网的重要设备。

    路由器 router(第三层)

    上边提到,将多个交换机连接起来的方式,足以支撑几十台甚至几百台电脑的互联。但电脑的数量很快就发展到了几千、几万、几十万。交换机已经无法记录如此庞大的映射关系了。接下来看路由器是如何解决这个问题的

    路由器工作在网络层(OSI第三层),跟电脑一样有自己独立的 MAC 地址,并且能把数据包做一次转发

    路由器用来连接不同的子网,交换机的MAC地址表只负责自己所在的子网,这样就解决了交换机MAC地址表膨胀问题

    而为了方便划分子网,就产生了用数字表示的ip地址、子网掩码,利用ip地址和子网掩码可以计算出两个ip是否处于同一子网。
    从此,数据包除了加上链路层的头部(源MAC和目标MAC)外,还要再增加一个网络层的头部(源IP和目标IP)
    **加粗样式**
    从现在开始,主机还要设置一个"网关"地址(在这里就是路由器的地址),这就准备就绪了。

    以下图为例,主机A给主机C发消息。
    主机A发送数据包时,会先将目标IP与子网掩码进行计算,如果源IP与目的IP处于同一子网,则直接将包通过交换机发出去;如果源IP与目的IP不处于同一子网,就发给路由器处理。所以主机A把数据包通过交换机1发送给了路由器
    路由器内部维护着一张路由表,记录了子网与端口的对应关系。路由器收到数据包后,查看路由表和数据包的目的IP,发现应该从x号端口出,再通过arp查到目的MAC地址为CCC,就把数据包从x号端口发出
    交换机2收到数据包后得知数据包的MAC地址是CCC,查询MAC表后发给了与主机C相连的端口
    至此完成了跨网段的数据发送
    (具体过程还涉及到数据帧转发过程中IP地址及MAC地址的变化,这里不细讲)
    在这里插入图片描述
    注意,路由器的每一个端口,都有独立的MAC地址

    三层交换机

    平常说的交换机大多指二层交换机,三层交换机也叫管理型交换机、网管型交换机

    三层交换机工作在OSI的第三层,多用于企业网络拓扑中的核心层和汇聚层,地位很重要。
    三层交换机最重要的目的是加快大型局域网内部的数据交换(在数据中心、网络运营商、服务器机房中,局域网内的通信非常多)

    企业中的网络拓扑通常是:路由器(衔接公网和内网) -> 三层交换机(核心层,局域网高速转发、划分vlan、vlan间通信) -> 二层交换机(划分vlan、拓展接入端口) -> 电脑

    交换芯片(NP)

    • 在三层交换机内部,对于数据包转发等规律性的过程由 交换芯片(NP) 高速实现 (所以很多三层交换机的价格比路由器更贵),而像路由信息更新、路由表维护、路由计算、路由确定等功能,由软件实现
    • 而路由器是通过CPU转发数据的,所有的报文的计算和转发都在CPU的计算下完成,相比之下效率偏低

    比较

    • 与二层交换机:二层交换机只看MAC,而三层交换机即看MAC又看IP,可以管理三层传输
    • 与路由器:三层交换机与路由器相比没有NAT、没有端口映射、没有那么多路由协议。所以三层交换机并不能替代路由器(为什么三层交换机无法替代路由器?)

    因为大量数据不需要在路由器完成交换,所以也减少了路由器中路由表和arp表的数据量,进一步减少了路由器CPU的负担

    家庭路由器

    参考
    计算机网络中的路由器与家里用的路由器是一个概念么?
    家里的路由器和计算机网络里的路由器是一样的吗?
    家用路由是不是每个口出来都是192.168.1.0网段的?

    本文提到的"路由器",若无明确说"家庭路由器",则均为 计算机网络中的路由器、书上的路由器、企业/运营商级路由器、专业路由器

    因为环境需求的不同,我们最常用的家庭路由器,和计网中的路由器并不是完全一样。

    企业级路由器 通常出现在节点众多的公司、机房、数据中心等大型网络环境。主要用于:连接企业的多个子网;实现高性能的三层网络数据包转发;将异种网络互联(指TCP/IP和IPX/SPX这样的不同协议簇互联),实现不同网络协议相互转换。

    • 基本上都:支持多种路由协议(比如RIP,OSPF等),可以根据拓扑结构设置不同的路由协议;支持线路负载均衡;有多个WAN口,可以接入多条宽带、多个运营商网络;支持VPN(在家也能访问公司内网);能划分VLAN;带机量大
    • 其它功能:可以管理用户上网行为,比如禁止使用QQ、微信,禁止访问某些网站等;可以管理AP
    • 物理端口:每个物理端口都属于不同的网段(其实可以设置),对应不同子网。每个物理端口都有一个MAC地址,在路由器固件中也可以虚拟出n个MAC地址分配给物理端口
    • (以上例举的是普遍功能,还和具体产品有关)

    家用路由器 主要为了实现接入广域网的家庭网关功能,简化了计网路由器中家庭用不到的一些硬件配置和软件功能,但也结合了一些其它网络设备的功能,他集合了Router + Switch + NAT + DHCP服务器 + PPPoE客户端 + Firewall + 无线AP等功能为一体。

    一台普通家用路由器由一个CPU担任网关的角色,一个端口创建一个局域网地址池,连接到交换机芯片上分给四个局域网端口,另一端口接广域网口,与局端设备保持连接,获得一个公网IP。至于无线芯片,其实是连在交换机芯片上的。所以家用无线路由器严格来说产品名称应该是家庭网关,就像运营商的路由猫标签上写的是:中国移动/电信智能家庭网关

    • 家庭路由器品类繁多,基本上都不支持多种路由协议、不支持VPN、不支持管理用户上网行为。
    • 低端路由器仅支持基础功能,满足家庭上网需求即可。
    • 部分中高端路由器支持双WAN口、线路负载均衡、可以管理AP、可以划分VLAN
    • 其它功能:有IPTV口、游戏专用口(上行用来连接光猫的IPTV口,下行连接机顶盒);内置游戏加速功能(比如有一些内置UU加速器);有路由模式、无线中继模式、AP模式、桥接模式等;有Mesh组网功能;支持APP管理
    • 大部分家用路由器的带机量都不需要很高(几十台),但有些带机量也能达到上百台
    • 物理端口:家用路由器的LAN口都在同一个网段,其实是一个内置交换机。普通家用路由器一般是WAN口和LAN口各一个MAC地址,也有很多WAN口和LAN口用的是相同的MAC地址 (其实就算LAN口有MAC地址也没用,因为LAN口仅起交换作用,Mac地址取决于端口连接的计算机,就像交换机本身也没有MAC地址)

    虽然家用路由器和企业级路由器的区别会导致了计网实践学习上的一些困难,但家庭路由器在日常使用中确实更加便利。


    网络进阶概念

    冲突域和广播域

    冲突域:连接在同一导线上的所有工作站的集合,或者说是同一物理网段上所有节点的集合或以太网上竞争同一带宽的节点集合;在同一个物理层设备(物理层设备可以理解为网线、集线器)上连接的设备都在一个冲突域;在以太网中,如果任意两台计算机在同时通信是会发生冲突,那么它们所组成的网络就是一个冲突域

    冲突只会出现在半双工通信中,同一时刻有相向传输的两条消息,会发生碰撞冲突

    一些问题
    Q1:同向传输的消息不会发生冲突吗?(比如电脑AB都向电脑C发送消息,AB的消息包同时出现在C的接收线路上)
    Q2:如果全双工通信没有冲突域,为什么交换机的每个端口都是一个冲突域,端口处的网线不是全双工的吗?
    单工通信有冲突域吗,全双工通信没有冲突域吗?
    为什么交换机的一个端口就是一个冲突域,网线不是全双工的吗 ?
    “在全双工模式下,不会有冲突域”?
    A:同方向传输消息,发送方知道自己什么时候发完了一个数据帧,要发送的数据都放在队列里,发完了一个再发下一个。交换机里应该也有芯片控制这种消息队列。并且交换机还采用了"存储转发"机制,tcp也有"拥塞控制"
    A:说交换机一个端口是一个冲突域,更重要的表达了交换机的每个端口都分割了冲突域。如果端口接的是集线器,那当然属于一个冲突域。不过感觉这么解释有点牵强。也有人说,之所以说交换机一个端口一个冲突域,是为了和集线器区分,交换机确实可以把冲突域隔离到每个端口
    看知乎的问答,最终感觉是这样的:没有地方说到底同向的算不算冲突;交换机的每个端口都是一个冲突域,或许只能强行理解,因为虽然解释不清,但这句话是和hub做对比的,hub整体是一个冲突域,交换机能够隔离冲突域,所以就说每个端口是一个冲突域

    冲突域内,靠CSMA/CD协议(又叫做载波监听多点接入/碰撞检测协议)避免冲突。通过监听线路的状态来发送数据,线路空闲则发送,不空闲则等待。同时发送产生冲突,会停止发送,等待再发。

    CSMA/CD协议(一目了然,看过都说好)
    【IT硬核动画搬运/中英双字】什么是CSMA/CD?CSMA/CA?(Powercert animated videos)

    CSMA/CD协议仅用于半双工网络(各种总线结构以太网和双绞线以太网的早期版本)中。 现在的以太网基于交换机和全双工连接,不会有碰撞,因此没有必要使用CSMA/CD协议。(这项技术之所以还存在是为了兼容性,一些老古董交换机使用的还是半双工)

    全双工的以太网还有必要使用CSMA/CD协议吗?

    广播域:能够收到相同广播帧的设备在同一个广播域;广播数据时可以发送到的区域是一个广播域

    在一个冲突域的设备,必定在相同的广播域。反之,不一定成立。

    通常,结合集线器、交换机、路由器来理解冲突域和广播域

    集线器:集线器是工作在物理层的设备,它所有的端口都连接在同一根线路上,这根线属于共享介质/共享总线,是半双工通信设备,他所连接的所有设备处于同一冲突域,在同一时刻只能有一个端口发送数据。集线器所连接的节点越多,冲突的概率就越大

    交换机:交换机工作在链路层,可以根据Mac地址仅向指定端口发送数据,内部有交换矩阵,在同一时刻可进行多个端口之间的数据传输(就像立交桥,各走各的,互不影响)。并且交换机采用全双工通信(除了一些很老旧的古董级交换机)。因此,交换机有隔离冲突域的作用,他的每个端口是一个冲突域(因为每个端口只能插一根网线)。通过交换机互联的主机之间不必再担心流量大产生冲突的影响

    交换机的每个端口只能插一根传输线缆,当这个端口只接入一台终端时,那就没有冲突,数据传输全部是针对这一台终端
    而如果端口级联了一个集线器或者交换机的话,那这个端口下面所有的终端产生的数据传输都会在这个端口产生冲突,所以说一个端口是一个冲突域,一个VLAN是一个广播域。

    路由器:因为广播包仅在同一子网中传递,而路由器是用于隔离/连接子网的设备,所以他有隔离广播域的作用
    (这里说的是企业级路由器,家用路由器通常所有LAN口都处在相同网段)

    ARP

    网络层(IP协议)本身没有传输包的功能,包的实际传输是委托给数据链路层来实现的,而链路层转发数据包依靠MAC地址。
    然而实际情况是,我们不知道对方的MAC地址是多少,因为我们都是使用IP通信的,只是链路层在通过MAC地址寻址,这就需要arp

    ARP(Address Resolution Protocol),即地址解析协议。是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求(arp广播包)广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址

    arp缓存表:ARP缓存表是一个IP地址–>MAC地址的对应表。比如,电脑 A 为了知道电脑 B(192.168.0.2)的 MAC 地址,将会广播一条 arp 请求,B 收到请求后,带上自己的 MAC 地址给 A 一个响应。此时 A 便更新了自己的 arp 表。

    IP地址MAC地址
    192.168.0.2bb-bb-bb-bb-bb-bb

    通过大家不断广播 arp 请求,最终所有电脑里面都将 arp 缓存表更新完整

    计算机和三层设备(如路由器、三层交换机)都可以使用arp来寻找只知道ip不知道Mac地址的电脑,并且在内部维护一张arp缓存表

    • 主机使用arp:你在发送数据包时,一定知道目标的IP。在发送之前,主机会利用这个IP与子网掩码计算来判断目标与自己是否处于同一个子网,如果在同一个子网,就通过 arp 获取对方mac地址把包发出去,不在同一个子网,就通过 arp 获取默认网关的 mac 地址把包发给网关
    • 路由器使用arp:路由器转发数据包时,首先查询路由表,得知数据包的IP地址属于哪个端口,然后通过arp得知目的主机的MAC地址,之后修改数据包的目标MAC并将数据包发送出去

    设备的三张表

    交换机中有 MAC 地址表用于映射 MAC 地址和它的端口,通过以太网内各节点之间不断通过交换机通信不断完善起来。

    路由器中有路由表用于映射 IP 地址(段)和它的端口,通过各种路由算法 + 人工配置逐步完善起来。

    电脑和三层设备(路由器、三层交换机)中都有 arp 缓存表用于缓存 IP 和 MAC 地址的映射关系,通过 arp 协议的请求逐步完善起来。

    VLAN

    参考
    看完就明白为啥需要VLAN了!讲的很透说的很明白
    百度百科:VLAN
    「疑问解答」关于VLAN技术您了解多少?

    VLAN(Virtual Local Area Network),虚拟局域网。工作于OSI模型中的第二层,是交换机的一种管理功能,主要作用是划分子网(即虚拟局域网),有隔离广播域的作用,避免网络上因大量广播包而导致的网络传输效率低的问题。

    同一个VLAN中的广播只有VLAN中的成员才能听到,而不会传输到其他的VLAN中去,这样可以很好的控制不必要的广播风暴的产生

    Q1:因为二层主机间通过MAC地址来寻址通信,所以同一VLAN中即便存在不同网段也可以直接通信吗?
    A2:不可以,因为主机发送数据包时,判断目标IP如果与自己不在同一网段,就会把数据包发给网关,通过网关来间接通信,而不是直接通信
    Q2:同一网段,不同VLAN可以通信吗?
    A:可以,但需要进一步了解VLAN的机制。具体的查阅百度,这里就不深究了

    VLAN网络中的数据包结构

    VLAN标签(VLAN Tag,简称Tag)是一种VLAN标识符,包含了TPID、PRI、CFI、VID四个字段,一般添加在数据链路层封装中。
    VID:即VLAN Identifier,就是一个数字,用来划分不同的VLAN。
    PVID:即Port VID,是交换机(或虚拟交换机)上才有的概念,可以理解为该端口的默认VID
    Tagged包:加入了4字节VLAN标签的帧
    Untagged包:原始的,没加入4字节VLAN标签的帧

    为了让交换机分辨不同VLAN的报文,当报文进入到VLAN所处的交换机端口时,会在报文中添加识别VLAN的字段,根据IEEE 802.1Q协议规定,需在以太网数据帧的目的MAC地址和源MAC地址字段之后、协议类型字段之前加入4个字节的"VLAN标签"

    非VLAN网络,跑的都是untagged包,用MAC地址来定位目标。
    在VLAN网络中,数据包要根据VID来区分不同VLAN,用VID+MAC共同定位目标。对于tagged包,包中含有VID。而对于untagged包,发往交换机时会把端口PVID当做此包的VID。

    交换机+VLAN的必要性

    1. 广播不容忽视:经常说的广播一般就是指ARP,以及DHCP、RIP等广播信息。在以太网中,广播信息会非常频繁地出现(早期有很多内网arp攻击),尤其在大型企业机房、网络运营商、数据中心,电脑多,广播很消耗资源,所以更要划分VLAN来避免不必要的广播风暴,增强网络系统的稳定性。
    2. 交换机接口多、实惠:以前必须使用路由器分割子网,以路由器上的LAN口为单位分割广播域(一个LAN一个子网)。但是,路由器的接口数量是有限的,并且价格较贵,所能分割的个数完全取决于路由器的网络接口个数,使得用户无法自由地根据实际需要分割广播域。而交换机的接口有很多,并且通常用交换机接交换机的方式拓展接口,因此如果能使用交换机分割广播域,那么无疑运用上的灵活性会大大提高。
    3. 与普通子网隔离广播域的区别是,子网隔离广播域发生在ip层(第三层),而VLAN隔离作用在链路层,可以避免广播包对三层设备的冲击

    VLAN划分方式(百度百科)

    1. 按端口划分VLAN:比如一个端口一个VLAN,一个端口对应企业的一个部门,这是最常用的一种方式
    2. 按MAC地址划分VLAN:根据每个主机的MAC地址来划分,最大优点就是当用户物理位置移动时,即从一个交换机换到其他的交换机时,VLAN不用重新配置,所以,可以认为这种根据MAC地址的划分方法是基于用户的VLAN。缺点是用户越多,配置量越大,并且MAC地址其实是可以被改写的
    3. 按IP组播划分:IP组播实际上也是一种VLAN的定义,即认为一个组播组就是一个VLAN,这种划分的方法将VLAN扩大到了广域网,因此这种方法具有更大的灵活性,而且也很容易通过路由器进行扩展,当然这种方法不适合局域网,主要是效率不高。
    4. 基于规则的VLAN:也称为基于策略的VLAN。这是最灵活的VLAN划分方法,具有自动配置的能力,能够把相关的用户连成一体,在逻辑划分上称为“关系网络”
    5. 按用户定义、非用户授权划分:需要提供用户密码,在得到VLAN管理的认证后才可以加入一个VLAN

    以上划分VLAN的方式中,基于端口的VLAN端口方式建立在物理层上;MAC方式建立在数据链路层上;网络层和IP广播方式建立在第三层上(需要三层交换机)。

    (网上也有提到说按照子网划分VLAN,即一个子网一个VLAN,结合更多搜索资料感觉这是乱说的。子网本身就有隔离广播域的作用,按照子网划分VLAN可能是一些人把VLAN和子网搞混了说的)

    VLAN的优势(百度百科) (其实都是围绕"隔离了广播域"来讲的)

    1. 广播风暴防范:限制网络上的广播,将网络划分为多个VLAN可减少参与广播风暴的设备数量。这在大型企业、运营商机房、早期网络中很有必要
    2. 安全:缩小了arp攻击范围,缩小了广播风暴范围;把某些故障(比如环路风暴)限制在一片VLAN中,而不影响其它VLAN,增强了网络系统的稳定性。(感觉百度百科说不好,这条是我自己写的)
    3. 成本降低:成本高昂的网络升级需求减少,现有带宽和上行链路的利用率更高,因而可节约成本。
    4. 性能提高:将第二层平面网络划分为多个逻辑工作组(广播域)可以减少网络上不必要的流量并提高性能。

    关于实际使用场景的深究

    Q:思来想去,网络中真的有那么多arp包吗,多到需要隔离广播域?知乎:划分广播域很有必要吗,有那么多广播包吗?

    A1:目前我只想到使用某些局域网交互软件时会出现比较多的arp包。例如某个局域网聊天软件,为了发现局域网内谁还在用该软件,软件打开后就要监听某一端口(通常为了避免与其它应用端口冲突,这个端口会设置在某一范围内),并向所在网段内包含的所有ip地址发消息(因为不知道目前都有哪些ip在使用),而每向一个ip发消息时,都要先发送arp包获取他的MAC地址。每一个机器打开软件时,都要这么扫描一下所在网段机器,从而产生大量arp包

    A2:实际环境中,不会产生很多 arp 包。或者说是产生 arp 包的总量是可以接受的。通常来说划分广播域提高安全性更多的是所谓避免广播风暴带来的影响。不过现在是2022年,并非是2005-2010的年代很多内网 arp 攻击的年代,而且很多交换机都可以控制广播包在自己接口的比例,所以提高安全性也并非想的那么多。那问题就成了,那为什么我们还是要划分那么多广播域呢?我理解的是这个更多未来是人自己使用的方便而已。我广播域的划分对应了 vlan,vlan 对应了一个子网和 ip 地址规划。子网对应了用途。当我看到某个 ip 地址段,我就知道这个大概是干嘛的。

    摘自TPLINK文档
    企业里面一般连接有多个部门,不同部门可能需要区分管理,设置不同的网络权限,三层交换机可以划分多个网段,实现不同部门设置在不同的网段,方便管理。划分多网段还可以隔离广播包,避免网络上因大量广播包而导致的网络传输效率低的问题。

    一个子网可以设置成一个Super vlan。下面再划分若干个sub vlan。这样下来,各sub vlan之间既归属于同一子网,又是相互独立隔离的。
    划分VLAN一般是基于部门的,一个VLAN就是一个基于2层实现的LAN,每个VLAN都要使用一个独立IP地址段,简单来说有多少VLAN可以理解为有多少网络,在做VLSM子网化的时候要根据VLAN数量决定借位多少,然后根据每个VLAN的大小,里面成员数量决定借位时给主机位预留多少位.一般是先决定有多少个VLAN,如何划分VLAN,再根据VLAN的数量和VLAN内成员数量决定VLSM的借位多少.

    家庭VLAN的使用

    VLAN可以划分子网,进而划分出独立的一对一的通信通道(相当于一根网线)
    (并不是利用VLAN划分广播域,家庭网络没必要划分广播域)

    具体看这篇文章:家庭VLAN实用讲解
    提到用VLAN实现两种用法

    1. IPTV+网线的单线复用:利用VLAN让光猫的IPTV口与机顶盒网口连接在独立的VLAN中
      在这里插入图片描述
    2. 非弱电箱路由器拨号上网(客厅路由器拨号上网,并把网络传送到弱电箱内的预埋网线):利用VLAN让光猫的网口与客厅路由器网口连接在独立的VLAN中
      在这里插入图片描述

    VLAN间通信

    1. 二层交换机+一台路由器实现VLAN间通信(多臂路由)。

    2. 单臂路由的方式实现VLAN间通信。“单臂路由(router-on-a-stick)是指在路由器的一个接口上通过配置子接口(或“逻辑接口”,并不存在真正物理接口)的方式,实现原来相互隔离的不同VLAN(虚拟局域网)之间的互联互通

    3. 用三层交换机的vlanif逻辑接口来实现VLAN之间通信

    简单了解,具体略。

  • 相关阅读:
    大数据(三)大数据技术栈发展史
    Jenkins自动化:简化部署流程
    SpringMVC之JSR303与拦截器
    长城首款MPV上市,能否迎来「高山」时刻?
    C++ Reference: Standard C++ Library reference: Containers: deque: deque: cbegin
    为什么 FindFirstFile 会查找短文件名?
    linux驱动程序40:页内存分配
    深度学习服务器怎么选?哪个更划算?
    【云原生-白皮书】简章2:深入理解DevOps+微服务
    (附源码)php二手服装网站 毕业设计 201711
  • 原文地址:https://blog.csdn.net/qq_43413788/article/details/106040013