为什么不再需要CSMA/CD?
诞生
为什么需要冲突检测?
因为最开始的以太网使用的同轴电缆,同轴电缆因其单根导线的物理构造决定了它不具备在两个方向上同时运行通信流量,物理层面无论什么频率调制双向电流肯定会冲突,所以同轴电缆不能实现全双工,而且必须有冲突检测机制。
之所以有CSMA/CD的存在,是因为在早期的共享式以太网中,双向的传输是在同一线路上进行的,而以太网是一种共享介质的广播技术,所以同一时间只能有一面的信号在线路上,即要么A往B发,要么B往A发,如果AB同时发送数据或者线路上已有信号,那么信号就会发生碰撞,继而影响数据有效传输,为了解决此一问题,才有了CSMA/CD的技术!
随着技术的发展,CSMA/CD在最初的以太网中具有的历史和实践的重要性在慢慢减弱,现在交换式以太网取代了共享式以太网,甚至于共享式以太网消失。这主要是因为介质和交换技术的发展而造成的.
介质方面:使用4对线的UTP,传输和接收各自使用一对,可以全双工方式工作,这样,一边只管发,一边只管收,因此就能够避免碰撞了,光纤方面也可如此!
交换技术方面:当两个工作站需要通信时,交换技术在两个站之间建立了一个点到点的虚链路,也叫做微分段,因此同样也避免了碰撞了!这就是交换机使用的技术.
所以,从上面可以看出,以太网访问控制机制和交换机工作原理并没有相冲突的地方,只是随着技术的发展,一些不必要的机制就慢慢不要了!
以太网中到底何时使用CSMA/CD检测机制来避免冲突,在于网络处于什么样的工作模式(全双工或者半双工)下工作,网卡将自动与网络接入设备(例如:交换机或者集线器)进行协商来判断时候使用CSMA/CD检测机制避免冲突的发生。
我想,关于什么是CSMA/CD各位网管或者网络工程师们都应该知道,在这里就不做太多解释了。大家都知道,以太网工作模式有两种,一种是全双工工作模式,一种是半双工工作模式。我们看分析一下这两个模式下到底是不是用CSMA/CD冲突检测机制。
一.在全双工工作模式下的以太网使用CSMA/CD检测机制来避免冲突吗?
在这一工作模式下的以太网是不需要使用CSMA/CD冲突检测机制的。我们知道,全双工工作模式下可以完成同时接收和发送数据。我们想想,网卡可能会在同一时刻发送两个数据包吗?这是不可能的。绝对不可能会出现在同一时刻网卡接收到两个或两个以上同时需要发送数据的请求,就连CPU也不可能同时做到在同一时刻处理两个或两个以上指令呀。这个时候,如果我们假设网卡启用CSMA/CD机制来检测冲突,请问他检测哪一条冲突通道呢?我们可要知道,网卡在接收到需要发送的数据包后,就像排队一样一个一个往外发送,怎么可能会冲突呢?
这个时候有人可能要问了,那接收呢?它可能会和接收的冲突呀?其实这么想就错了。全双工工作模式下,我们将使用双绞线中的2对线进行工作。一对用于发送,一对用于接收。那么既然发送和接收是分开的2条链路,就不存在冲突的问题了。就像在高速公路上,有一个车道是由东往西行驶车道,一个车道是由西往东行驶车道。那么,你说两车对开,各行驶于各自的车道,有可能会冲撞吗?所以,全双工工作模式下是不需要使用CSMA/CD冲突检测机制的。
二.在半双工工作模式下的以太网使用CSMA/CD检测机制来避免冲突吗?
我想这个问题只要是网管或者是CCNA的工程师们都应该知道,在这一工作模式下的以太网是需要使用CSMA/CD冲突检测机制的。我们知道,半双工模式下虽然可以实现在同一链路上进行发送和接收,但不是在同一时间。这就必须使用CSMA/CD冲突检测机制来避免冲突的发生。半双工工作模式的典型接入设备就是集线器。至于为什么,请大家认真复习一下CCNA中的这一节内容。这里就不做详细的讨论了。
三.我们都说交换机中有智能设备,如CPU和缓存。为什么工作在半双工模式下的交换机,还会使用CSMA/CD呢?
这个问题问得特别好。其实大家想一想就知道了。我们先明白一点:交换机确实有CPU和缓存来调节数据包的输出和接收,是不会发生冲突的。交换机只关心它的背板速率,关心的是整个带宽。所以,在交换机内的数据包是绝对不会发生冲突的情况。只会发生是否出现网络拥塞。这是和冲突没有任何关联的。
理解了这一点,我们再理解下一个问题:CSMA/CD侦听包是有谁发出,什么时候才会发出呢?我们回忆一下CCNA的教程,其实,CSMA/CD侦听包是由网卡发出的,并不是有交换机或者集线器发出的侦听包。而且,网卡在发送数据前,才会发送CSMA/CD侦听包侦听网络是否畅通。
理解了这两点,我们就好解释了。对于CSMA/CD冲突检测机制而言,交换机和集线器的侦听对象是不完全相同的。在集线器中,每一个端口都同在一个冲突域中,CSMA/CD检测的整个同处一个冲突域每一个端口的每一种状态。它既侦听网络中正在发送的数据包,也真听网络中正在接收的数据包。因为,它只有1条通道。就像总线一样,所有数据都在同一个通道内跑。CSMA/CD必须侦听到没人使用,它才发送数据包。而交换机则不太相同。虽然每一个端口都是一个独立的冲突域,端口之间并不相互冲突。可如果实在半双工工作模式下,一个端口中的接收和发送就产生冲突了。这个时候,CSMA/CD冲突检测机制将侦听在这个端口上是否有数据正在被接收而占用。所以,交换机在半双工工作模式下工作,网卡同样会启用CSMA/CD冲突检测机制来避免冲突的发生。
理解之前首先要知道CSMA/CD不是一项技术特征,这里起码要分解成两项技术特征,即CSMA和Collision Detection(CD)。这里要想理解清楚就给分开来看CSMA:其核心为LBT机制,listen before transmission。先听后发,这个机制本质上除了能够规避盲的直接传输造成的冲突,另外一个重点,是通过LBT来判定,对方有没有东西要给自己传的。注意,半双工系统里面,如果只有本地和对端两个节点的情况下,也有可能发生冲突。所以LBT机制最基本的是判定是否要接收,在没有接收的状态下其实也同时判定了对方没有在发送,从而自己才可以发送。这里另外需要注意,在CSMA/CD中,其对应的CSMA其实是1-persistent的CSMA,换言之,LBT如果信道是idle的话,那么直接就发送了。这点相关内容在WiFi的细节里面体现的尤为突出。
Collision Detection:实际上是一种近似“全双工”的冲突检测机制。在一开始梅特卡夫的设计里面,节点发送信号的同时,是同时用另外一根线连接到总线上面,监听总线上的电压是不是符合一个人传输的。如果电压出现变高的情况,那么可能就是多人同时传输,从而识别到了冲突。后面随着技术进步,理论上也可以做到边发送边监听的操作,这里所谓的监听,实际上就是接收总线上的数据,来看和自己是不是一样,如果不一样,那么就是冲突。所以这里有发送,有接收,所以从机理上而言,是一种“全双工”,只不过不是全双工的数据收发而已。
现在交换机代替了CSMA/CD,实际上要分别解决以上两个技术对应的问题。那么这里引入的两个,cross-bar switch是用来解决冲突的问题的,即对应Collision Detection,而Full-duplex是对应收发识别的问题的,即对应CSMA的case。Cross-bar switch: 这项技术其实也是一个非常有历史的技术,早在贝尔实验室搞电话通信网络时候就有了,我记得小枣君有一篇文章已经总结了这个(即从cross-bar到clos那篇)。这个技术本质上有点类似空分复用。
如上图所示,Cross-bar结构保证了在星型拓扑这种架构下面,每一个节点和另外一个节点都可以找到一条独立的路径执行传输。由于路径是独立互不干扰的,所以没有冲突,进而就不需要冲突检测了。没有冲突,那么自然而言就不需要冲突检测collision Detection机制了。
Full-duplex:这里的全双工实际上还是基于双绞线特性的全双工。全双工其实分两种,一种是共享总线的,这个上面要做回波抵消,现在在无线全双工下面叫做自干扰抵消,这个其实有线下面也是诞生了很久了。那么还有一种全双工技术其实没那么复杂,完全是通过独立的收发链路来做一个空间隔离,从而实现全双工的,双绞线中间采用了4根线,收发各2根(2根是为了差分信号抗干扰的),从而收和发的链路独立所实现的全双工。这里还需要注意,早期以太网是跑在同轴电缆上面的,那个上面就没有全双工特性,实际上就是一根共享总线(铜芯的),外面包一个屏蔽层的,这种上面才更需要跑CSMA/CD。那么双绞线的图例如下
这里其实就对应了前面说的,通过收发链路的隔离来实现全双工Full-duplex的接入的(Remark:这里图上1,2和对端1,2对上可能是双绞线两种线序的问题),重点要表述的就是收和发都是有独立路径的,(另外这里remark下,有的可能也会在这里存在一定的回波抵消应用,这里回波抵消主要是因为收发信号还是通过双绞线绑在一起的,所以还是会存在一定的干扰,此时用回波抵消可以去掉这一部分的干扰。相对于完全的自信号干扰的抵消而言,这种回波抵消有点类似于自适应滤波器了。实际上相当于物理上隔离一下,然后加回波抵消进一步降低回波干扰。有线网下面除了ethernet以外,docsis 4.1里面的full-duplex也是类似这样,只不过那个不是通过线缆抵消了,毕竟是同轴电缆的介质,那个相当于做了一个FDD,然后上下行分离的情况下,还要做一次回波抵消,其实和这里是同理。这点算是实际实现时候的细节了。)。直观点看下面这张图
收和发有独立路径,那么其实就对应到前面说CSMA时候,所述如果仅仅只有本地和对端两个节点的情况下,是通过LBT来解决即使两点,也存在的彼此可能会竞争的问题。那么由于收和发都有独立路径,实际上就是通过全双工的方式,对应接收的模块一直处于"Listen and reception”的状态即可,就不需要做LBT先听后发的切换了,所以Full-duplex可以代替原来的CSMA的机制。Remark:其实星型拓扑连接也是一个非常重要的点,只不过这里题目里面直接是星型拓扑架构了,就不拉长说了,也是要强调下。另外,题目里面那个段其实也可以注意下,其实也是从segment这个词翻译过来的,描述物理层介质线缆之类的时候,最后都要加上segment,其实就是代表了一段介质,而且加上segment强调这个段其实还与介质的最远传输距离有关,属于介质和线缆本身的属性了。繁体里面把这个segment喜欢翻译成區段,相当于简单强调了下,比如network segment就翻成網路區段。所以,结合1)Cross-Bar Switch,2)Full-duplex,3)星型拓扑,这三个点,才可以代替CSMA/CD的机制。另外,CSMA/CD用星型拓扑来理解笔者认为实际上不太合适,还是给用总线型网络来理解,否则的话,歧义很多。
本文来自博客园,作者:GPL-技术沉思录,转载请注明原文链接:https://www.cnblogs.com/polin/p/17196653.html