关于以太网什么时候使用CSMA/CD检测机制,这个问题前两天刚和朋友作了讨论。在网络上搜索和好久,也有一些同行们不太理解,特别是一些初学CCNA的,没有工做经验的同行们。在此,我把个人观点和依据发在博客上供你们讨论。
以太网中到底什么时候使用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冲突检测机制来避免冲突的发生。