文章目录
前言
阅读本文前请注意最后编辑时间,文章内容可能与目前最新的技术发展情况相去甚远。欢迎各位评论与私信,指出错误或是进行交流等。
本文是关于《计算机网络:自顶向下方法(第七版)》的学习分享,内容书写顺序也是按照书中的顺序。本文并不会提及书中的所有内容,主要写重点的知识,以及自己感兴趣的内容。会对原文中的内容进行一定的精简,或者加上个人的理解。
链路层和局域网
交换局域网
下图显示了一个交换局域网连接了 3 个部门,两台服务器和一台与4 台交换机连接的路由器。 因为这些交换机运行在链路层,所以它们交换链路层帧(而不是网络层数据报),不识别网络层地址,不使用如RIP或OSPF这样的路由选择算法来确定通过第二层交换机网络的路径。 它们使用链路层地址而不是IP地址来转发链路层帧通过交换机网络。

链路层寻址和 ARP
- MAC地址
主机和路由器具有链路层地址。 事实上,并不是主机或路由器具有链路层地址,而是它们的适配器(即网络接口)具有链路层地址。因此,具有多个网络接口的主机或路由器将具有与之相关联的多个链路层地址,就像它也具有与之相关联的多个IP地址一样。 然而,重要的是注意到链路层交换机并不具有与它们的接口(这些接口是与主机和路由器相连的)相关联的链路层地址。 这是因为链路层交换机的任务是在主机与路由器之间承载数据报;交换机透明地执行该项任务,这就是说,主机或路由器不必明确地将帧寻址到其间的交换机。

上图说明了这种情况。 链路层地址有各种不同的称呼: LAN 地址 (LAN address) 、 物理地址 (physicaladdress) 或 MAC 地址 (MAC address) 。 MAC 地址似乎是最为流行的术语。MAC地址长度为6字节,通常用十六进制表示法,并被设计为永久的,但用软件改变一块适配器的 MAC地址现在是可能的。MAC 地址的一个有趣性质是没有两块适配器具有相同的地址。而且不论适配器到哪里用MAC地址都不会变化。与之形成对照的是,lP地址具有层次结构(即一个网络部分和一个主机部分),而且当主机移动时,主机的 lP地址需要改变,即改变它所连接到的网络。
当某适配器要向某些目的适配器发送一个帧时、发送适配器将目的适配器的 MAC 地址插入到该帧中,并将该帧发送到局域网上。 一台交换机偶尔将一个入帧广播到它的所有接口。因此一块适配器可以接收一个并非向它寻址的帧。 这样,当适配器接收到一个帧时,将检查该帧中的目的 MAC 地址是否与它自己的 MAC 地址匹配。 如果匹配,该适配器提取出封装的数据报,并将该数据报沿协议栈向上传递。 如果不匹配,该适配器丢弃该帧,而不会向上传递该网络层数据报。
然而,有时某发送适配器的确要让局域网上所有其他适配器来接收并处理它打算发送的帧。 在这种情况下,发送适配器在该帧的目的地址字段中插入一个特殊的MAC 广播地址 (broadcast address) 。 对于使用 6 字节地址的局域网(例如以太网和 802. 11 ) 来说,广播地址是48个连续的 1组成的字符串(即以十六进制表示法表示的 FF-FF-FF -FF -FF-FF) 。
- 地址解析协议
因为存在网络层地址(例如因特网的IP地址)和链路层地址(即 MAC地址),所以需要在它们之间进行转换。 对于因特网而言、这是地址解析协议 (Address Resolution Protocol , ARP) 的任务。为了理解对于诸如ARP这样协议的需求,考虑如图所示的网络。 在这个简单的例子中,每台主机和路由器有一个单一的IP地址和单一的MAC地址。 与以往一样, IP地址以点分十进制表示法表示, MAC 地址以十六进制表示法表示。 为了便于讨论,我们在本节中将假设交换机广播所有祯;这就是说,无论何时交换机在一个接口接收一个帧,它将在其所有其他接口上转发该帧。

现在假设IP地址为222.222.222.220 的主机要向主机 222.222.222.222 发送 IP 数据报。源和目的均位于相同的子网中。为了发送数据报,该源必须要向它的适配器不仅提供 IP 数据报,而且要提供目的主机222. 222. 222. 222 的 MAC 地址。 然后发送适配器将构造一个包含目的地的 MAC 地址的链路层帧,并把该帧发送进局域网。
发送主机如何确定IP地址为222.222.222. 222 的目的主机的 MAC 地址呢?正如你也许已经猜想的那样,它使用 ARP。在发送主机中的ARP模块将在相同局域网内的IP地址作为输入, 然后返回相应的 MAC地址。在眼下的这个例子中,发送主机222. 222.222.220 向它的 ARP 模块提供了 IP 地址 222.222.222.222,并且其ARP 模块返回了相应的 MAC 地址49-BD-D2-C7-56-2A。ARP 将一个 IP 地址解析为一个 MAC 地址。
每台主机或路由器在其内存中具有一个 ARP 表, 这张表包含 IP 地址到 MAC 地址的映射关系。下图显示了在主机222. 222. 222. 220 中可能看到的 ARP 表中的内容。该 ARP 表也包含一个寿命 (TTL) 值,它指示了从表中删除每个映射的时间。 注意到这张表不必为该子网上的每台主机和路由器都包含一个表项;某些可能从来没有进入到该表中,某些可能已经过期。 从一个表项放置到某ARP表中开始, 一个表项通常的过期时间是20分钟。

现在假设主机222.222.222. 220 要发送一个数据报,该数据报要 IP 寻址到子网上另一台主机或路由器。 发送主机需要获得给定 IP地址的目的主机的 MAC 地址。如果发送方的 ARP表具有该目的节点的表项,这个任务是很容易完成的。 但如果ARP表中当前没有该目的主机的表项, 又该怎么办呢?在这种情况下,发送方用 ARP 协议来解析这个地址。 首先,发送方构造一个称为ARP 分组 (ARP packet) 的特殊分组。 一个 ARP分组的字段包括发送和接收IP 地址及MAC 地址。 ARP查询分组和响应分组都具有相同的格式。 ARP查询分组的目的是询问子网上所有其他主机和路由器,以确定对应于要解析的 IP 地址的那个 MAC地址。
回到我们的例子上来, 222.222.222.220 向它的适配器传递一个 ARP 查询分组,并且指示适配器应该用 MAC广播地址 (即FF-FF-FF-FF-FF-FF) 来发送这个分组。 适配器在链路层帧中封装这个ARP分组,用广播地址作为帧的目的地址, 并将该帧传输进子网中。该ARP查询的帧能被子网上的所有其他适配器接收到,并且每个适配器都把在该帧中的ARP分组向上传递给ARP 模块。 这些 ARP 模块都检查它的 IP地址是否与 ARP分组中的目的IP地址相匹配。 与之匹配的一个给查询主机发送回一个带有所希望映射的响应 ARP分组。 然后查询主机222. 222.222.220 能够更新它的 ARP 表,并发送它的 IP数据报,该数据报封装在一个链路层帧中, 并且该帧的目的MAC就是对先前ARP请求进行响应的主机或路由器的 MAC 地址。
查询ARP报文是在广播帧中发送的.而响应ARP报文在一个标准帧中发送。一个ARP 表是自动建立的,它不需要系统管理员来配置。 并且如果某主机与子网断开连接,它的表项最终会从表中删除掉。
- 发送数据报到子网以外
现在我们来看当子网中的某主机要向子网之外(也就是跨越路由器的另一个子网)的主机发送网络层数据报的情况。在下图 的环境中来
讨论这个问题. 该图显示了一个由一台路由器互联两个子网所组成的简单网络。

注意,每台主机仅有一个 IP地址和一个适配器。 一台路由器对它的每个接口都有一个 IP地址。 对路由器的每个接口,也有一个ARP模块和一个适配器。 在图中的路由器有两个接口,所以它有两个IP地址、两个ARP模块和两个适配器。
现在我们考察子网 1 上的一台主机将向子网2上的一台主机发送数据报。 假设主机111.111.111.111 要向主机222.222.222.222 发送一个 IP数据报。和往常一样,发送主机向它的适配器传递数据报。 但是,发送主机还必须向它的适配器指示一个目的 MAC 地址。 该适配器应该使用什么MAC地址呢?有人也许大胆猜测,这个适当的MAC地址就是主机222.222. 222.222 的适配器地址,即 49-BD-D2-C7-56-2A。然而,这个猜测是错误的!
为了使一个数据报从 111.111. 111. 111 到子网2 上的主机,该数据报必须首先发送给路由器接口 111.111.111.110, 它是通往最终目的地路径上的第一跳路由器的IP地址。 因此,对于该帧来说,适当的 MAC地址是路由器接口 111.111.111.110 的适配器地址,即 E6-E9-00- 17- BB- 4B。 但发送主机怎样获得111.111.111.110 的 MAC 地址呢?当然是通过使用 ARP!一旦发送适配器有了这个 MAC地址,它创建一个帧,并把该帧发送到子网 1中。 在子网 1 上的路由器适配器看到该链路层帧是向它寻址的,因此把这个帧传递给路由器的网络层。 该IP数据报终于被成功地从源主机移动到这台路由器了!但是我们的任务还没有结束。 我们仍然要将该数据报从路由器移动到目的地。 路由器现在必须决定该数据报要被转发的正确接口。 如在网络层中所讨论的,这是通过查询路由器中的转发表来完成的。 转发表告诉这台路由器该数据报要通过路由器接口 222.222.222.220 转发。 然后该接口把这个数据报传递给它的适配器,适配器把该数据报封装到一个新的帧中,并且将帧发送进子网2 中。 这时,该帧的目的MAC地址确实是最终目的地MAC地址。 路由器又是怎样获得这个目的地MAC地址的呢?当然是用ARP获得的!
以太网
以太网是到目前为止最流行的有线局域网技术,而且到可能预见的将来它可能仍保待这一位置。 可以这么说,以太网对本地区域联网的重要性就像因特网对全球联网所具有的地位那样。
以太网的成功有很多原因。 首先,以太网是第一个广泛部署的高速局域网。 因为它部署得早,网络管理员非常熟悉以太网(它的奇迹和它的奇思妙想),并当其他局域网技术间世时,他们不愿意转而用之。 其次、其他局域网技术比以太网更加复杂、更加昂贵,这就进一步阻碍了网络管理员改用其他技术。 第三,改用其他局域网技术的最引人注目的原因通常是这些新技术具有更高数据速率;然而以太网总是奋起抗争,产生了运行在相同或更高数据速率下的版本。20世纪90 年代初期引入了交换以太网,这就进一步增加了它的有效数据速率。 最后,由于以太网已经很流行了,所以以太网硬件(尤其是适配器和交换机)成了一个普通商品,而且极为便宜。
在 20 世纪 70 年代中期发明初始的以太局域网使用同轴电缆总线来互联节点。 从20世纪80年代到90年代中期以太网的总线拓扑是一种广播局域网, 即所有传输的帧传送到与该总线连接的所有适配器井被其处理。到了20 世纪90 年代后期,大多数公司和大学使用一种基于集线器的星形拓扑以太网安装替代了它们的局域网。在21 世纪初,以太网又经历了一次重要的革命性变化。 以太网安装继续使用星形拓扑,但是位于中心的集线器被交换机 (switch) 所替代。
- 以太网帧结构

为了将对以太网帧的讨论放到切实的环境中,考虑从一台主机向另一台主机发送一个lP 数据报,且这两台主机在相同的以太局域网上。假设发送适配器 (即适配器A) 的 MAC 地址是AA-AA-AA-AA-AA-AA, 接收适配器( 即适配器B) 的 MAC 地址是BB-BB-BB-BB-BB-BB。 发送适配器在一个以太网帧中封装了一个IP 数据报,并把该帧传递到物理层。 接收适配器从物理层收到这个帧,提取出 IP数据报, 并将该IP数据报传递给网络层。 我们现在在这种情况下考察如图所示的以太网帧的6个字段:
- 前同步码 (8 字节)。以太网帧以一个8 字节的前同步码 (Preamble) 字段开始。该前同步码的前7字节的值都是10101010; 最后一个字节是 10101011。 前同步码字段的前7 字节用于"唤醒"接收适配器,并且将它们的时钟和发送方的时钟同步。 为什么这些时钟会不同步呢?记住适配器 A 的目的是根据以太局域网类型的不同,分别以 10Mbps、 100Mbps 或者 1Gbps 的速率传输帧。 然而,没有什么是完美无缺的,因此适配器A不会以精确的额定速率传输帧;相对于额定速率总有一些漂移,局域网上的其他适配器不会预先知道这种漂移的。 接收适配器只需通过锁定前同步码的前7 字节的比特, 就能够锁定适配器A 的时钟。 前同步码的第8个字节的最后两个比特警告适配器B,"重要的内容"就要到来了。
- 目的地址 (6字节)。这个字段包含目的适配器的 MAC 地址,即 BB-BB-BB-BBBB-BB。 当适配器 B 收到一个以太网帧,帧的目的地址无论是BB-BB-BB-BB-BB-BB. 还是MAC 广播地址,它都将该帧的数据字段的内容传递给网络层;如果它收到了具有任何其他MAC地址的帧,则丢弃之。
- 源地址 (6 字节)。 这个字段包含了传输该帧到局域网上的适配器的 MAC 地址,在本例中为AA-AA-AA-AA-AA-AA。
- 类型宇段 (2字节)。 类型字段允许以太网复用多种网络层协议。 为了理解这点、我们需要记住主机能够使用除了 IP以外的其他网络层协议。 事实上、 一台给定的主机可以支待多种网络层协议,以对不同的应用采用不同的协议。 因此, 当以太网帧到达适配器B, 适配器B需要知道它应该将数据字段的内容传递给哪个网络层协议(即分解)。 IP 和其他链路层协议(例如, Novell lPX 或 AppleTalk) 都有它们各自的、 标准化的类型编号。 此外, ARP协议有自己的类型编号,并且如果到达的帧包含 ARP 分组, 则该 ARP 分组将被多路分解给 ARP 协议。 注意到该类型字段和网络层数据报中的协议字段、运输层报文段的端口号字段相类似; 所有这些字段都是为了把一层中的某协议与上一层的某协议结合起来。
- 数据宇段 (46 ~ 1500 字节) 。 这个字段承载了 IP数据报。 以太网的最大传输单元(MTU) 是 1500 字节。 这意味着如果 IP 数据报超过了 1500 字节,则主机必须将该数据报分片。 数据字段的最小长度是46字节。 这意味着如果 IP 数据报小于46字节,数据报必须被填充到46字节。 当采用填充时,传递到网络层的数据包括IP数据报和填充部分。 网络层使用IP数据报首部中的长度字段来去除填充部分。
- CRC (4 字节) 。 CRC (循环冗余检测)字段的目的是使得接收适配器 (适配器B) 检测帧中是否引人了差错。
所有的以太网技术都向网络层提供无连接服务。 这就是说,当适配器A要向适配器B发送一个数据报时,适配器A在一个以太网帧中封装该数据报,并且把该帧发送到局域网上,没有先与适配器B握手。
以太网技术都向网络层提供不可靠服务。 特别是,当适配器B收到一个来自适配器A的帧,它对该帧执行CRC校验,但是当该帧通过CRC 校验时它既不发送确认帧;而当该帧没有通过CRC校验时它也不发送否定确认帧。 当某帧没有通过CRC 校验,适配器B 只是丢弃该帧。 因此,适配器A根本不知道它传输的帧是否到达了 B 并通过了 CRC校验。(在链路层)缺乏可靠的传输有助于使得以太网简单和便宜。但是它也意味着传递到网络层的数据报流能够有间隙。
如果由于丢弃了以太网帧而存在间隙, 主机B上的应用也会看见这个间隙吗?这取决于该应用是使用UDP还是使用TCP。 如果应用使用的是
UDP, 则主机 B 中的应用的确会看到数据中的间隙。 另一方面,如果应用使用的是TCP,则主机B中的TCP将不会确认丢弃帧,从而引起主机A 的TCP重传。 注意到当TCP重传数据时,数据最终将回到曾经丢弃它的以太网适配器。 因此,从这种意义上来说,以太网的确重传了数据,尽管以太网并不知道它是正在传输一个全新数据报,还是一个包含已经被传输过至少一次的数据的数据报
- 以太网技术(简略介绍)
以太网的协议标准具有许多不同的特色,有某种令人眼花缭乱的首字母缩写词,如 10BASE-T、10BASE-2 、 100BASE-T、 1000BASE-LX 和 10GBASE-T。这些以及许多其他的以太网技术在多年中已经被标准化了。尽管这些首字母缩写词看起来眼花缭乱,实际上其中非常有规律性。 首字母缩写词的第一部分指该标准的速率: 10、 100、 1000 或 I0G, 分别代表 10Mhps、 100Mbps、 1000Mbp( 或1Gbps) 和 10Gbps 以太网。"BASE" 指基带以太网,这意味着该物理媒体仅承载以太网流量;几乎所有的802.3 标准都适用于基带以太网。 该首字母缩写词的最后一部分指物理媒体本身; 以太网是链路层也是物理层的规范,并且能够经各种物理媒体(包括同轴电缆、铜线和光纤)承载。一般而言, "T" 指双绞铜线。
链路层交换机
交换机的任务是接收入链路层帧并将它们转发到出链路;我们将在这一节中详细学习这种转发功能。 我们将看到交换机自身对子网中的主机和路由器是透明的; 这就是说,某主机/路由器向另一个主机/路由器发送一个帧,顺利地将该帧发送进局域网,并不知道某交换机将会接收该帧并将它转发到另一个节点。 这些帧到达该交换机的任何输出接口之一的速率可能暂时会超过该接口的链路容量。 为了解决这个问题,交换机输出接口设有缓存,这非常类似于路由器接口为数据报设有缓存。
- 交换机转发和过滤
过滤 (filtering) 是决定一个帧应该转发到某个接口还是应当将其丢弃的交换机功能。转发 (forwarding) 是决定一个帧应该被导向哪个接口,并把该帧移动到对应接口的交换机功能。 交换机的过滤和转发借助于交换机表 (switch table) 完成。 该交换机表包含某局域网上某些主机和路由器的但不必是全部的表项。 交换机表中的一个表项包含: 1.一个MAC 地址;2.通向该MAC地址的交换机接口;3.表项放置在表中的时间。 图中显示了一个交换机表的例子。 尽管帧转发的描述听起来类似于网络层讨论的数据转发,但我们将很快看到它们之间有重要的差异。 许多现代分组交换机能够被配置,以基于第二层目的 MAC地址( 即起着第二层交换机的功能)或者第三层IP 目的地址(即起着第三层交换机的功能)进行转发。 无论如何,我们将对交换机基于MAC地址而不是基于IP地址转发分组进行明确区分。 我们也将看到传统的(即处于非SDN环境)交换机表的构造方式与路由器转发表的构造方式有很大不同。

为了理解交换机过滤和转发的工作过程。假设目的地址为DD-DD-DD-DD-DD-DD的帧到达了交换机接口x。交换机用MAC地址DD-DD-DD-DD-DD-DD索引它的表。有3种可能的情况:
- 表中没有对于DD-DD-DD-DD-DD-DD的表项。在这种情况下,交换机向除接口x外的所有接口的输出缓存转发该帧的副本。换言之,如果没有对于目的地址的表项,交换机广播该帧。
- 表中有一个表项将DD-DD-DD-DD-DD-DD与接口x联系起来。在这种情况下,无须将该帧转发到任何其他接口,交换机通过丢弃该帧执行过滤功能即可。
- 表中有一个表项将DD-DD-DD-DD-DD-DD与接口y≠x联系起来。在这种情况下,该帧需要被转发到与接口y相连的局域网网段。交换机通过将该帧放到接口y的输出缓存完成转发功能。
- 自学习
交换机具有令人惊奇的特性(特别是对于早已超负荷工作的网络管理员),那就是它的表是自动、动态和自治地建立的,即没有来自网络管理员或来自配置协议的任何干预换句话说, 交换机是自学习 (self-learning) 的。这种能力是以如下方式实现的:
1 ) 交换机表初始为空
- 对于在每个接口接收到的每个入帧,该交换机在其表中存储: 1.该帧源地址字段中的MAC 地址; 2.该帧到达的接口; 3.当前时间。 交换机以这种方式在它的表中记录了发送节点所在的局域网网段。 如果在局域网上的每个主机最终都发送了一个帧,则每个主机最终将在这张表中留有记录。
3 ) 如果在一段时间(称为老化期 (aging time)) 后,交换机没有再接收到某源地址的帧, 就在表中删除这个地址。以这种方式,如果一台PC被另一台PC (具有不同的适配器)代替,原来PC 的 MAC地址将最终从该交换机表中被清除掉。
交换机是即插即用设备 (plug-and-play device) , 因为它们不需要网络管理员或用户的干预。 要安装交换机的网络管理员除了将局域网网段与交换机的接口相连外,不需要做其他任何事。 管理员在安装交换机或者当某主机从局域网网段之一被去除时,他没有必要配置交换机表。 交换机也是双工的,这意味着任何交换机接口能够同时发送和接收。
- 链路层交换机的性质
在描述了链路层交换机的基本操作之后,我们现在来考虑交换机的特色和性质。 我们能够指出使用交换机的几个优点,它们不同于如总线或基于集线器的星形拓扑那样的广播链路:
- 消除碰撞。 在使用交换机(不使用集线器)构建的局域网中,没有因碰撞而浪费的带宽!交换机缓存帧并且决不会在网段上同时传输多于一个帧。 就像使用路由器一样,交换机的最大聚合带宽是该交换机所有接口速率之和。 因此,交换机提供了比使用广播链路的局域网高得多的性能改善。
- 异质的链路。 交换机将链路彼此隔离,因此局域网中的不同链路能够以不同的速率运行并且能够在不同的媒体上运行。
- 管理。 除了提供强化的安全性,交换机也易于进行网络管理。例如,如果一个适配器工作异常并持续发送以太网帧,交换机能够检测到该问题,并在内部断开异常适配器。交换机也收集带宽使用的统计数据、 碰撞率和流量类型,并使这些信息为网络管理者使用。 这些信息能够用于调试和解决问题、 并规划该局域网在未来应当演化的方式。
- 交换机和路由器比较
路由器是使用网络层地址转发分组的存储转发分组交换机。 尽管交换机也是一个存储转发分组交换机,但它和路由器是根本不同的,因为它用MAC 地址转发分组。 交换机是第二层的分组交换机,而路由器是第三层的分组交换机。然而,使用"匹配加动作" 的现代交换机能够转发基于帧的目的MAC地址的第二层帧,也能转发使用数据报目的 IP地址的第三层数据报。使用OpenFlow 标准的交换机能够基于 11 个不同的帧、数据报和运输层首部字段,执行通用的分组转发。
即使交换机和路由器从根本上是不同的,网络管理员在安装互联设备时也经常必须在它们之间进行选择。 网络管理员可以很容易地使用路由器而不是交换机来互联各个系的局域网、 服务器和互联网网关路由器。 路由器的确使得各系之间通信而不产生碰撞。 既然交换机和路由器都是候选的互联设备,那么这两种方式的优点和缺点各是什么呢?
交换机是即插即用的,这是世界上所有超负荷工作的网络管理员都喜爱的特性。 交换机还能够具有相对高的分组过滤和转发速率,交换机必须处理高至链路层的帧,而路由器必须处理高至网络层的数据报。另外, 一个大型交换网络将要求在主机和路由器中有大的 ARP表,这将生成可观的ARP流量和处理量。 而且,交换机对于广播风暴并不提供任何保护措施,即如果某主机出了故障并传输出没完没了的以太网广播帧流,该交换机将转发所有这些帧.使得整个以太网的崩溃。
因为网络寻址通常是分层次的,即使当网络中存在冗余路径时,分组通常也不会通过路由器循环。 路由器的另一个特色是它们对第二层的广
播风暴提供了防火墙保护。 也许路由器最重要的缺点就是它们不是即插即用的,即路由器和连接到它们的主机都需要人为地配置 IP地址。而且路由器对每个分组的处理时间通常比交换机更长,因为它们必须处理高达第三层的字段
通常,由几百台主机组成的小网络通常有几个局域网网段。 对于这些小网络、交换机就足够了,因为它们不要求IP地址的任何配置就能使流量局部化并增加总吞吐量。 但是在由几千台主机组成的更大网络中,通常在网络中(除了交换机之外)还包括路由器。 路由器提供了更健壮的流量隔离方式和对广播风暴的控制,并在网络的主机之间使用更智能的路由。
虚拟局域网

重新观察上面这张图,我们注意到现代机构的局域网常常是配置为等级结构的,每个工作组(部门)有自己的交换局域网,经过一个交换机等级结构与其他工作组的局域网互联。 虽然这样的配置在理想世界中能够很好地工作,但在现实世界常常不尽如人意。在上图的配置中,能够发现3 个缺点:
- 缺乏流量隔离。 尽管该等级结构把组流量局域化到一个单一交换机中,但广播流量(例如携带ARP和 DHCP报文或那些目的地还没有被自学习交换机学习到的帧)仍然必须跨越整个机构网络。 限制这些广播流量的范围将改善局域网的性能。也许更为重要的是,为了安全/隐私的目的也可能希望限制局域网广播流量。 例如,通过用路由器代替图中的中心交换机,能够提供这种类型的隔离。 我们很快看到这种隔离也能够经过一种交换机解决方案来取得。
- 交换机的无效使用。 如果该机构不止有3 个组,而是有 10个组,则将要求有 10个第一级交换机。 如果每个组都较小,比如说少于10个人,则仅使用一台96端口的交换机将足以容纳所有组的每个人,但这台单一的交换机将不能提供流量隔离,如果能进行流量隔离就不需要那么多台交换机了。
- 管理用户。 如果一个雇员在不同组间移动,必须改变物理布线,以将该雇员连接到不同的交换机上。 属于两个组的雇员在同一局域网内,将使问题更为困难。
幸运的是,每个难题都能够通过支持虚拟局域网 (Virtula Local Network, VLAN) 的交换机来处理。 顾名思义,支持VLAN 的交换机允许经一个单一的物理局域网基础设施定义多个虚拟局域网。 在一个VLAN 内的主机彼此通信,它们(没有与其他主机)与交换机连接。 在一个基于端口的VLAN 中,交换机的端口(接口) 由网络管理员划分为组。 每个组构成一个VLAN, 在每个VLAN 中的端口形成一个广播域(即来自一个端口的广播流量仅能到达该组中的其他端口)。

上图显示了具有 16 个端口的单一交换机。 端口 2 ~ 8 属于电气工程系VLAN, 而端口 9 ~ 15 属于计算机科学系VLAN (端口 1 和 16 未分配)。 这个VLAN 解决了上面提到的所有困难,即电气工程系VLAN 帧和 计算机科学系VLAN 帧彼此隔离,之前等级结构中的两台交换机已由一台交换机替代,网络操作员只需配置VLAN 软件即可。人们容易想象到 VLAN 交换机配置和操作的方法.即网络管理员使用交换机管理软件声明一个端口属于某个给定的VLAN , 在交换机中维护一张端口到 VLAN 的映射表:交换机软件仅在属于相同VLAN 的端口之间交付帧。
但完全隔离两个VLAN带来了新的困难!来自电子工程系(EE)的流量怎样才能发送到计算机科学系(CS)呢?解决这个问题的一种方式是将VLAN 交换机的一个端口 (例如图中的端口 1) 与一台外部的路由器相连,并且将该端口配置共同属于电气工程系 VLAN 和 计算机科学系 VLAN 。在此情况下,即使电子工程系和计算机科学系共享相同的物理交换机,其逻辑配置看起来也仿佛是电子工程系和计算机科学系具有分离的经路由器连接的交换机。 从电子工程系发往计算机科学系的数据报将首先跨越电气工程系VLAN到达路由器,然后由该路由器转发跨越计算机科学系VLAN 到达 计算机科学系某主机。 幸运的是交换机厂商使这种配置变得容易,网络管理员通过构建包含VLAN 和路由的单一设备,这样就不再需要分离的外部路由器了。
现在假设新增了一部分电子工程和计算机科学教职员工,他们也需要网络接入,并且他们希望与之前交换机中的VLAN相连。图中显示了第二台 8 端口交换机,其中交换机端口已经根据需要定义为属于EE VLAN 或CS VLAN。 但是这两台交换机应当如何互联呢?一种容易的解决方案是在每台交换机上定义一个属于 CS VALN 的端口(对EE VLAN 也类似处理),并且如图所示将这两个端口彼此互联起来。 然而,这种解决方案不具有扩展性,因为在每台交换机上N个VLAN将要求N个端口直接互联这两台交换机。

一种更具扩展性互联VLAN 交换机的方法称为 VLAN干线连接 (VLAN trunking)。 在下图所示的 VLAN 干线方法中,每台交换机上的一个特殊端口(例如左侧交换机上的端口16 , 右侧交换机上的端口 1) 被配置为干线端口,以互联这两台 VLAN 交换机。 该干线端口属于所有VLAN, 发送到任何VLAN 的帧经过干线链路转发到其他交换机。

但这会引起另外的问题:一个交换机怎样知道到达干线端口的帧属于某个特定的 VLAN 呢? IEEE 定义了一种扩展的以太网帧格式 802. 1Q, 用于跨越 VLAN 干线的帧。 如图所示,802. 1Q 帧由标准以太网帧与加进首部的4 字节 VLAN 标签 (VLAN tag) 组成,而 VLAN标签承载着该帧所属的VLAN标识符。 VLAN 标签由在 VLAN 干线发送侧的交换机加进帧中,在VLAN干线接收侧的交换机解析后并删除。 VLAN 标签自身由一个2字节的标签协议标识符 (Tag Protocol Identifier, TPID) 字段(具有固定的十六进制值 81-00) 、一个2字节的标签控制信息字段 (包含一个 12 比特的VLAN标识符字段)和一个3 比特优先权字段(具有类似于IP数据报TOS字段的目的) 组成。

在这部分讨论中,我们仅仅简要地涉及了 VLAN, 关注了基于端口的 VLAN。 我们也应当提及VLAN 能够以几种其他方式定义。 在基于 MAC 的 VLAN 中,网络管理员指定属于每个VLAN 的 MAC 地址的集合;无论何时一个设备与一个端口连接时,端口基于设备的 MAC 地址将其连接进适当的 VLAN。 VLAN 也能基于网络层协议(例如 IPv4、 IPv6 或Appletalk) 和其他准则进行定义。 VIAN 跨越 IP 路由器扩展也是可能的,这使得多个 LAN孤岛能被连接在一起,以形成能够跨越全局的单一LAN。 详情请参见802. 1Q 标准。
参考目录
书籍:《计算机网络:自顶向下方法(第七版)》