前几天在网上贴了一张图片:
用一根网线连接家里的路由器的两个端口。这样的结果不出意外的话,在网络中就出现了一个环路(loop)。
这样做,其实不为别的,就是为了拍张照片炸出一些所谓的“大神”。和预想的一样,很多人会冒出来说你的路由器要宕机了、这样接影响网速、这样弄网络会瘫痪……
说这话吧,如果要放在30年前,是对的。但在现在看来其实是废话一句。
为什么这样说,咱们还得从以太网的标准架构来说起。
以太网的标准拓扑结构为总线型拓扑,这是一个大家几乎已经遗忘掉的网络架构。
在最初的以太网设计中,以太网是由一根同轴电缆当作总线的,这跟同轴电缆两端有阻抗端结器用来消除脉冲信号,而设备的以网卡会向这跟同轴电缆中以广播的形式发送网络脉冲信号。
因此,之前的网卡都是这样的:
这种方法其实在抗干扰性以及点对点的传输效率上都是优于双绞线的。但大家看总线型的拓扑结构也会发现,我们并不能很方便的在网络中增加或减少节点。毕竟要增加一台计算机到网络中,我们就要断开网络一次,因此,就出现了星形网络:
本质上,星形网络就是将总线型以太网的那根同轴电缆做到了集线器(Hub)中,在设备内部实现了广播信号。在设备外,可以通过方便的插入和拔出网线做到网络中节点数量的更改。
到今天,BNC并不是不存在了,而是被应用到了更加不注重系统结构改变的位置上,例如传输视频信号:
星形网络可以方便的接入设备,同时也可以接入其他星形网络设备,这时候星形网络就有了一个变体叫做树形网络
在一个星形节点上的广播信号会传递到另一个星形节点,以此类推,这个广播信号最终可以传播到整个网络结构中。这样的方式和当初总线型以太网要达到的目标是相同的。
看到这里,你会发现以太网的结构本质上是没有什么不同的,最终都是广播信号进入了网络总线进行传输。因此在以太网上一个网卡是可以接收到网络中任意主机发送的信号的。类似于宿管阿姨在楼道里喊了一声“李冬梅出来接电话”,整个楼道里面不仅仅是李冬梅一个人能听到,而是楼道里所有人都可以听到喊声,但只有李冬梅会颠颠颠的跑出来。
所谓的树形结构以太网既解决了网络容量方便扩容的问题也解决了流量传输的问题,因此现在大部以太网的形式都是树形的。看来树形以太网似乎是可以一统天下了,但这里面有一个bug。
这个bug就是如果树形结构并不是一棵真正的树呢?
例如上面的这张网络拓扑图,如果去掉了红线部分就是一个完美的树形结构,但有了红线网络结构就不是树形了。带来的问题就是以太网的广播信号会在SWA-SWC-SWE-SWB-SWA这样的一个环路中转圈反复传递而不会停下来。不会停止、反复传播的广播信号就叫做“广播风暴”,当以太网中环路形成后,广播风暴就会迅速不断的积累增加,最终导致设备达到满负载运行,以至于阻塞正常的网络传输信号。
在树形以太网出现初期,总有智力不健全的人错误的将网线插入不该插入的接口中,导致了环路的形成。
但这种事情吧,是3、40年前的事情了。在1985年针对于消除以太网中的环路问题,已经出台了STP(Spanning Tree Protocol,生成树协议),简单的说就是当一个交换机中如果到达根网桥有两条或者两条以上的链路,生成树协议都根据算法把其中一条切断,仅保留一条,从而保证任意两个交换机之间只有一条单一的活动链路。
回到咱们之前的那张照片实际上也是相同的道理。在STP的加持下,这条线路实际上是断开的。
除了会让设备上的LED指示灯亮起来之外并无其他任何作用。
各种技术和标准的出现,有很大一部分是防止SX无脑操作的。在技术领域叫做“防呆设计”。防呆(日语:ポカヨケ poka yoke),又称错误校对,是一种预防矫正的行为约束手段,运用防止错误发生的限制方法,让操作者不需要花费注意力、也不需要经验与专业知识,凭借直觉即可准确无误地完成的操作,在许多场景下可以提升效率和使用体验,也防止损坏更换的成本,因此优良的产品中防呆设计极为基础而普遍。这种设计思路遍布于我们生活中的方方面面,例如USB接头,是分出反正面的:
为的就是防止用户反接。当然了,还有头铁的用户用很大力量插废了usb设备,解决的方法就是升级了新的USB tpye C接口
增加额外的端子数量,让用户无论从哪个方向插都不会出现问题。
网络设备也是一样,大量的协议就是为了防止用户出错,例如今天我们讲到的STP协议,很多的指令协议都做到了预防,
真正能给大家带来问题的实际上还是各种SX操作而已。
但和SX操作相比,更多的观点的错误,例如一根网线插入相同设备就会成环路的问题已经是老古董了。再拿出来当作什么知识来忽悠人也就没有必要了。