原来以太网压根不需要交换机

计网学到过CSMA/CD策略。这是一种冲突检测算法,用来检测物理信道上的冲突,并智能进行回避。但是老师和课本都没提到CSMA/CD应用在哪里、起到了怎样的效果。因为以我浅薄的认知,以太网是通过交换机和路由器组建的,也从未听说有“冲突”的状况。不过应用在802.11上的CSMA/CA则好理解的多,因为无线电通信的干扰是很容易理解的,多个设备向路由器发射无线信号时,自然会发生冲突。

但是有线网络,冲突个什么劲儿呢?这就要从以太网(aka 802.3)说起了。以太网最初的标准诞生于1976年。彼时大行其道的网络协议还是令牌环。以太网与之相比,在性能上其实没有理论优势。一个4M的令牌环网络和一个10M的以太网数据传送率相当,一个16M的令牌环网络的数据传送率接近一个100M的以太网(维基百科)。但是以太网有一个很重要的特性:成本低廉。令牌环网络是环形拓扑,并且采用时分多址的原则进行多路复用。拿到令牌的节点无论是否有数据传输,都要经过获取令牌、交出令牌的动作。这些过程会导致网络的总吞吐下降。更重要的是,令牌环网并不够“端原则”,它需要专门的设备(多站访问部件MAU)来支撑网络。同时环形网络的可靠性严重依赖任何一个成员的可靠性。一些智能的MAU可以在环中跳过无效的节点,但【中央节点】的概念却依然客观存在,并且一个节点突然离开也可能造成网络短暂的不可用。

反观以太网,则是一种具有自组织性质的网络——这能有效降低部署小型网络的成本,对商用推广有很大的好处。以太网是总线结构,早年使用同轴电缆作为物理载体。众所周知,同轴电缆常用于电视广播信号,一根同轴电缆上的信号能被所有成员接收到。因此其天然就是互联的,且不需要任何中继的处理。也正因如此,冲突恐怕无法避免。于是以太网加入了CSMA/CD算法进行冲突检测和避免。当节点要发送消息时,会守听信道一段时间,确定没有人在传输数据。即使发生了冲突,节点间也会自动按一定的规则进行退避,等待其他节点完成发送。可以发现,从始至终,都不存在所谓的“中央节点”来协调网络。若干个节点只要接入同一个物理信道,就可以自行组织成一个有序传输的网络。

回归到开头的话题。CSMA/CD的作用,就是在以太网节点间有序共享同一物理信道。这就意味着,交换机并不是以太网的必选项。只要能让节点间连在一起,他们就能相互通信。集线器不必多言;哪怕把几根网线缠在一起,也能组织成一个可用的网络。

试想一下,假如你生活在上世纪,家里有几台电脑想互相连接。你是愿意买一个需要插电的MAU、还是不用插电的集线器、还是分文不花,把网线直接缠在一起了之呢?


本来想写一篇小短文记录自己的“发现”,但是想了想,这种问题从一开始就不应该存在。理论脱胎于实际,因此脱离实际去学习理论,无异于浮沙筑高塔。而只学理论不学实际,恐怕是国内高校教育的通病。其中最令人诟病的是高等数学、首当其冲的是线性代数。几乎所有高校老师上来就开始讲行列式的计算和100种变式的解决办法,连“大名鼎鼎”的《同济线代》也是如此。直到后来我自己感到有兴趣,稍稍深究了下它的前世今生,才发现原来行列式、矩阵的真正意义,领悟到它对人类上天入地有多么重要。相比之下,课本上、课堂上、考卷上的一道道计算题,仿佛在表达对它的不屑。

之前我的博客也发过一些类似的探究博文,但它们因为博客的蒸发而消散了。后面我有空就试试补档。因为我相信还有很多的像我一样曾经学了个一知半解,但是灵魂深处对它们“从哪儿来到哪儿去”有所渴求的人。