09_交换机带来的变革和虚拟局域网_
网络协议那些事儿
内容简介 前言 交换机带来的变革 总结 1. 前言 上一课,我们开始了 OSI 第二层的设备交换机的学习,知道了交换机会不断 “学习” 以更新它的 CAM 表。
内容简介
- 前言
上一课,我们开始了 OSI 第二层的设备交换机的学习,知道了交换机会不断 “学习” 以更新它的 CAM 表。有了 CAM 表,交换机就知道如何将数据转发到正确的地方了。
在 CAM 表中引入生存时间(TTL),可以比较有效地避免交换机中的数据陈旧或者数据量过多。
我们也可以通过一些 “捣蛋” 行为,来让交换机饱和,干扰它的运作。
这么有趣又厉害的交换机,光学一课怎么够,怎可就此罢休,我们必须更多地了解它。
- 交换机带来的变革
交换机带来了什么变革?
首先,与集线器(hub)相比,交换机可以隔离对话。集线器会广播信息,但是交换机却可以让两台机器单独对话。
下面我们就来看看交换机为网络领域带来的变革。
帧转发令我头秃
“帧转发(指将帧转发到指定端口)令我头秃”,这应该是 CSMA / CD 会说的一句话。
还记得之前我们学过的 CSMA / CD 协议吗?CSMA / CD 使克服总线拓扑(Bus Topology)上的冲突问题成为可能,但是这种通过等待的解决方案还是很麻烦的,通信效率也不高。
那么,交换机上也会有冲突吗?让我们更仔细地研究可能的情况(参见下图)。

上图表示 “三台机器连接到交换机”,上一课我们已经看过。
假设 23 号机器和 25 号机器同时发送信息给对方,会产生冲突吗?
也许你会说,由于信息是在同一时间发送的,因此它们将会重合 / 重叠。但可别忘了双绞线电缆的结构,在双绞线中,我们使用不同的电线进行发送和接收。因此,发送的信息和接收的信息会交错,但是在不同的电线上。
下图是更符合实际的交换机的通信示意图(每台机器与交换机之间比之前的图多画了一根线,代表发送和接收的两对线):

上图中,我们看到了用于发送和接收的不同的电线对。因此在这种情况下不会发生冲突。
让我们考虑另一种情况:23 号机器和 25 号机器同时向 24 号机器发送信息。
在这种情况下,两条信息将同时到达 24 号机器的接收线上,将会有冲突… 或没有。
按理说这种情况下是有冲突发生的。我们说没有冲突,是因为这种情况已经被预计到了,交换机已经被设计好了来应对这种情况。
事实上,交换机拥有内存。当它接收到一个或多个帧时,它可以将其存储在内存里,仅当目标机器连接的双绞线的传输对空闲时才转发该帧。
因此,当交换机有两个帧要在同一对接收线上发送时,它会先发送第一个帧,然后再发送第二个帧,因此不会有冲突。
这么说来,在交换机上就不会发生冲突咯?
不会。不过,如果我们故意设置的话,还是可能制造出冲突的(我们将在以后看到)。
那如果交换机上不会发生冲突,我们在交换机上就没必要再使用 CSMA / CD 协议了咯?
是的,没有必要,我们可以和 CSMA / CD 说再见了!
没有交换机之前,机器在发送帧之前必须侦听,确定网络是空闲时才能发送帧,这是 CSMA / CD 的基本原理。现在,只要一台机器想要发送帧,它就发送(“想发就发,要发得响亮”),而不必侦听是否有其他机器正在发送帧,因为交换机可以确保不发生冲突。
在交换机上这样的放弃了 CSMA / CD 的通信方式有一个术语,我们说此时网卡是以全双工的方式来运作的。
相反,在集线器或同轴电缆上使用 CSMA / CD 协议进行通信时,网卡是以半双工的方式来运作的(虽然集线器可以使用双绞线,提供了两对线,但在任一时刻,只能有一对线工作,所以集线器是半双工的)。
全双工的英语是 Full Duplex,full 是 “满的,全的” 的意思。duplex 是 “双工,双面” 的意思,在网络通信领域表示 “可以双向发送信息”。半双工的英语是 Half Duplex,half 是“一半” 的意思。
虽然这两个术语好像有点高端,什么全双工、半双工,其实它们的意思非常简单。除了双工,还有一种叫单工的方式,单工的英语是 Simplex。
-
单工(Simplex):数据传输是单向的。通信双方中,一方固定为发送端,另一方则固定为接收端,数据只能沿一个方向传输,类似汽车的单行道。
-
半双工(Half Duplex):数据传输是双向的。数据在通信双方之间能够在两个方向上进行发送,但不能同时发送,因此又被称为双向交替通信。无线对讲机就是一种半双工设备,在同一时间内只允许一方讲话:“长江,长江,我是黄河,收到请回答,完毕”;“黄河,黄河,我是长江,已经收到,完毕”。
-
全双工(Full Duplex):数据传输是双向的。通信双方在发送数据的同时也能够接收数据,两者可以同步进行,类似汽车的双向车道。目前我们打电话,以及手机的通话,都是全双工的例子。
我们可以用下图来表示这三种基本的通信方式:

因此,交换机的出现给网络领域带来了极大的变革,尤其是它的全双工的通信方式。但请注意,我们将看到全双工有时也会引入一些麻烦。
全双工使我头秃
全双工很棒!但是必须明智地使用它,但事实上并非总能如愿。有时全双工的方式可能引入一些麻烦。
假设我们将 10 台机器连接到集线器。我们在集线器上,是在总线拓扑上,因此这些机器要以半双工的通信方式来交流,并且要用 CSMA / CD 协议。
如果其中一个机器的网卡设置为全双工怎么办?
好吧,这会使局面非常尴尬。很简单,因为其他 9 台机器都需要等待集线器空闲时才可以发送信息,如果有机器和它们同时发送信息,它们会认为发生了冲突,就会 “闭嘴”。
但我们的全双工的机器 “非常任性”,想什么时候发送信息就什么时候发送,毫不关心自己给别的 9 台机器造成的冲突。简而言之,这是一团糟。
更糟糕的是,如果那台全双工的机器正在下载很大的文件,它将不断传输信息,并阻止其他人发送信息,其他 9 台机器就不能工作了。
因此,连接到集线器的任何机器都应该将其网卡配置为半双工。
“真的吗?”,你也许会说,“但我从来没有配置过我的机器的网卡呀…”。好吧,算你幸运咯。或更确切地说,现在的网卡很智能,可以自己决定应该使用全双工还是半双工。因此,当网卡连接到集线器时,它将以半双工的方式运行;连接到交换机时,它将以全双工的方式运行。
聪明如你也许会问:“那么,如果我将一个集线器连接到一个交换机,会怎么样呢?”
这是一个很好的问题!
我们无法配置集线器,集线器就是要半双工的方式,它以总线拓扑的方式来运作,需要配合 CSMA / CD 协议才能很好地工作。
因此,如果把交换机与集线器相连,那么交换机将不得不去适应集线器的半双工的工作方式。事实上,也不是整台交换机都需要去适应集线器的工作方式,仅仅是交换机上和集线器连接的那个端口,这个端口须要以半双工的方式来运作,交换机上的其他端口则维持全双工的方式。
通常,交换机是会自己检测到某个端口连着集线器的,然后做出调整。当然对那些可以被配置的交换机,我们也可以手动修改交换机的配置。下图演示了一个可配置的交换机的端口管理:

上图中,我们可以看到端口 21 以 100 Mbps 的速率运行,FC 表示 “全双工”。
那么,如果我将一台半双工的普通机器(比如电脑,不是集线器这样的特殊设备)连接到交换机,会怎么样呢?
很可能会发生交换机的双工的自动调整不起作用,以致于这台机器在全双工的交换机端口上处于半双工状态。
在这种情况下,这台半双工的机器将受到极大的 “惩罚”。因为每次有别的机器给它发送信息时,它就无法对外发送信息。而且,如果发生之前我们学过的 flooding(泛洪)的情况,帧通过广播方式发给除发送方以外的其他机器,那么这台半双工的机器也只能 “闭嘴”。
幸运的是,这台机器是唯一受影响的,网络的其余部分将正常运行。当然了,对于使用这台机器的用户来说,就有点 “哑巴吃黄连” 了。
我们可以得出结论:在大多数情况下,你不必为全双工还是半双工而操心。
但是,最好知道其运作原理,因为如果你遇到这样的问题而又不知道原因,那就很尴尬了。
- 总结
这一课我们学习了交换机所带给网络领域的巨大变革,了解了单工,半双工,全双工这三种基本的通信方式:
-
单工(Simplex):数据传输是单向的,类似汽车的单行道。
-
半双工(Half Duplex):数据传输是双向的。数据在通信双方之间能够在两个方向上进行发送,但不能同时发送。
-
全双工(Full Duplex):数据传输是双向的。通信双方在发送数据的同时也能够接收数据。
下一课我们将学习一个很有用的技术:VLAN,以及交换机应用了 VLAN 技术会给网络领域带来什么巨大变革。敬请期待吧!
}如果您想了解更多技术资源,欢迎加入点击这里钉钉群交流IT技术资源查看“IT技术交流群一”群的钉钉群号: 129605002953