最近在讲防火墙、IDS、VPN的部署,涉及到网络拓扑的规划,所以重新温故了下计算机网络的知识。接下来对Vlan、子网划分、二层/三层交换机这几个概念进行辨析阐释。

1 交换机

首先,先从《计网:自顶向下》的课本上回顾一下交换机的相关基础知识。

传统的交换机是指用来代替集线器Hub的二层交换机(或称为链路层交换机,之后简称为交换机),工作在第二层,其存在的目的是接收并转发链路层的帧。也就是说交换机对与网络中的主机和路由器是透明的,他们都不会对交换机的接口进行寻址。

1.1 交换机的转发和过滤

过滤和转发是交换机的工作内容,即决定帧该被转发到哪个接口还是应该丢弃掉以及把该帧移动到那些接口。交换机的过滤和转发借助于交换机表,如下表所示。

  • 当主机A向交换机发送目的MAC地址为DD-DD-DD-DD-DD-DD的帧时,由于交换机表中并不存在该项,则默认对该帧向除eth1外的接口进行广播。
  • 当主机A向交换机发送目的MAC地址为AA-BB-CC-DD-EE-O1的帧时,该表项显示其应该转发的接口为eth1。但是该帧就是从eth1发送过来的,所以也进行丢弃,而不是转发回去。
  • 当主机A向交换机发送目的MAC地址为FF-GG-HH-II-JJ-G7的帧时,交换机会将该帧只发送给eth2接口,完成转发。

那么交换机表是如何构建的呢?交换机属于即插即用的设备,并不需要人为干预。当网络管理员把线接到交换机上时,交换机表是自学习生成的:

  1. 初始交换机表是空的。
  2. 对于每个接口收到的帧,交换机会将该帧源地址上的MAC地址和该接口对应,添加上当前的时间,成为交换机表中的一项。
  3. 在一段时间以后,如果交换机没有收到以该地址作为源地址的帧,就在表中删除该项。

1.2 交换机表 vs ARP表

由以上可见,交换机表用于链路层帧的转发和过滤,位于交换机上。而ARP表仅在拥有ARP模块的主机和路由器等设备上存在,用于IP与MAC地址的映射。

一个数据包在跨域传播时如下图所示。主机A试图与其不在同一网段的主机B进行通信。首先,主机A发现主机B与其不在同一网段,则将报文的目的MAC地址填为其网关的目的地址,即路由器的eth1接口的MAC地址。当该报文被发送至路由器时,路由器首先通过其路由表确定要将该报文转发至eth2接口。接着根据其ARP表确定目的IP地址所对应的MAC地址,即主机B的MAC地址,并将源MAC地址改为eth2的MAC地址,将报文发送出去。在整个过程中,报文的MAC地址在同一广播域中是不变的,但是跨域传播时会改变。

报文的源MAC地址在跨域传播中为什么要改变呢?这是由于交换机中的交换机表是自学习的,我们显然不希望它记录所有经过报文的源MAC地址和对应接口,它只需要知道如何转发到达其所在内网的设备即可。

2 VLAN划分,二层交换机还是三层交换机?

2.1 为什么要划分VLAN

VLAN的出现是因为有以下三个原因:

  • 缺乏流量隔离。广播流量如果不被限制的话,会很大程度上影响到局域网的网络性能。在正常网络中,ARP请求、DHCP报文、或者交换机还未自学习到的帧都会通过广播的方式在局域网中传播。或者当局域网中一台终端发生故障,频繁的发送广播流量,将会对局域网造成难以控制的影响。所以对局域网进行细分并流量隔离是十分必要的。

  • 交换机的资源浪费。交换机中通常包含24个及以上的接口数,如果坚持一个小组(如只包含5个人网络渗透小组)使用一台交换机并与其他小组(如远程控制小组)的流量隔离开来,则会造成很大的浪费。

  • 管理用户。在现实情况下,如果网络渗透小组的成员被分散至不同位置,无法连接到同一台交换机。那如何方便地对他们的流量进行标识和管理呢?

2.2 VLAN是如何划分的

通过将交换机的端口划分成不同的组,形成相互隔离的广播域,即构成了多个虚拟局域网。如下图所示。

通过这样的划分,首先可以解决流量隔离的问题。其次通过将端口进行划分隔离,显然也更充分地利用了交换机的资源。此外,通过在交换机间建立Trunk链路也可以解决用户管理问题,使物理上不相连的终端设备存在于同一虚拟局域网内,如下图所示。在此不再详细说明,可以参考这篇博客

2.3 VLAN间通信

但是有一个问题接踵而至,隔离了广播域的虚拟局域网中是如何通信的呢?只能通过路由。因为广播域是指通过数据链路层的广播可以到达节点的集合,跨域之间的设备的通信只能通过路由,如下图所示。交换机两个不同VLAN分别连接到路由器的eth1和eth2接口。网络渗透小组发送的数据包需要经过交换机vlan1的端口,路由器eth1,再路由转发到eth2,最终通过交换机的vlan2端口发送至远程控制小组的设备上。

但以上方法限制很大,每增加一个VLAN就会多一根线和路由器相连。能否将不同vlan的数据帧通过一条链路传输并且逻辑上将其区分开来呢?答案是Trunk链路。通过Trunk链路发送至路由器的帧包含两个vlan,但是帧上会被标记。路由器物理上的接口eth1可以对应逻辑上的两个子接口,vlan1和vlan2,通过设置路由器eth1接口为Trunk接口。

但是这样的话,路由器和交换机之间的汇聚链路很可能成为瓶颈。因为交换机使用被称为ASIC(ApplicationSpecified Integrated Circuit)的专用硬件芯片处理数据帧的交换操作,在很多机型上都能实现以缆线速度(Wired Speed)交换。而路由器,则基本上是基于软件处理的。也就是说交换机处理传发过滤很快,但是路由器路由转发却很慢,所以会导致效率下降。

2.4 三层交换机

为了解决上述问题,三层交换机应运而生。三层交换机,本质上就是“带有路由功能的(二层)交换机”。路由属于OSI参照模型中第三层网络层的功能,因此带有第三层路由功能的交换机才被称为“三层交换机”。三层交换机的出现可以解决以上的所有问题,为VLAN划分画上一个完美的句号。

2 VLAN划分和子网划分,路由器vs三层交换机

VLAN划分和子网划分这两个概念相互交叉的概念很多,所以很容易乱,下面通过几个角度来试图理清一下。

2.1 VLAN划分是否意味着子网划分?

答案是不一定。也就是一个网段可能包含多个VLAN。通过桥接将不同VLAN连接起来,从而监控VLAN间的通信。但是一般情况下,一个VLAN就是对应着一个网段。

那么VLAN里面可能包含不同网段嘛?我认为一定是否定的。首先,连接在同一台交换机上的属于不同网段的设备是无法直接通信的。因为发送的设备A会通过ARP请求获取属于另一网段的目的设备B的MAC地址,当A发现B的目的地址与其不在同一网段,则直接去请求其网关的MAC地址。但是,同一网段内的设备间的通信还是会通过ARP广播获取。这些广播会被交换机传播到非接收端口的任意端口,也就是说网段间的ARP请求还是互相广播。这样看来,这个VLAN划分没有任何意义。

综上,VLAN划分在大部分情况下意味着子网的划分。

2.2 划分子网与VLAN划分

我们可能要关注的是划分子网的目的是什么。是更高效的路由。通过划分子网的方式,我们可以清晰地看到IP为172.16.129.4/18的设备A是属于172.16.128.0/18这个子网,而这个子网又属于172.16.0.0/16这个子网。层级化的网络划分可以使网络的路由更加高效。

VLAN划分的目的是什么:隔离广播流量,高效利用交换机,更方便的设备管理。两者在根本目的上就是不一样,只不过VLAN划分往往伴随着子网划分。

2.3 三层交换机 vs 路由器

三层交换机既然也有路由功能,那它和路由器有什么区别?

可以参考这篇博客,写的很详细,不需要搬运了。

本博客主要参考:https://zhuanlan.zhihu.com/p/35616289

如有问题或疑问,欢迎评论区讨论。