[转载]Ethernet,Half-Duplex/Full-Duplex,CSMA

CSMA/CD(Carrier Sense Multiple Access/Collision Detect)

全双工以太网是在同一个时刻能够同时收发的以太网。
全双工模式:传输数据是双向同步进行的,即同时接收和发送数据。
半双工模式:同一时刻只能单向传输数据,即要么是接收数据,要么是发送数据。
自适应模式:即自动协商双工模式。在状态显示时,显示的是协商后的实际工做模式。

      咱们知道:以太网访问控制用的是CSMA/CD,即载波侦听多点接入/ 冲突检测,是以广播的方式将数据发送到全部端口;咱们还知道:交换机能主动学习端口所接设备的MAC地址,在获知该端口的MAC 地址后,就会把传送给目标设备的直接发送到该端口而不是广播出去。
      那么,以太网交换机是如何工做的呢?交换机和以太网的工做机理岂不是要相冲突吗
      回答:之因此有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检测机制来避免冲突吗?
      在这一工做模式下的以太网是不须要使用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冲突检测机制来避免冲突的发生。
------------------------------------------------------------------------
自协商~~
case:
链接好的A、B两个端口。当A端口打开自协商,B端口关闭自协商且配置为100M全双工时,在A口获得的协商结果是100M半双工。而咱们通常但愿A口也协商成B端口的最大能力,即100M全双工。

自协商是经过一种叫作快速链接脉冲(Fast Link Pulse)的信号实现的,简称FLP。自协商的双方经过FLP来交换数据。

在具有自协商能力的端口没有Link的状况下,端口一直发送FLP,在FLP中包含着本身的链接能力信息,包括支持的速率能力、双工能力、流控能力等。这 个链接能力是从自协商能力寄存器中获得的(Auto-Negotiation Advertisement Register ,PHY标准寄存器地址4 )。FLP中的编码方式如图。依靠脉冲位置编码携带数据。一个FLP突发包含33个脉冲位置。17个奇数位置脉冲为时钟脉冲,时钟脉冲老是存在的;16个 偶数位置脉冲用来表示数据:此位置有脉冲表示1,此位置没有脉冲表示0。这样1个FPL的突发就能够传输16bit的数据。自协商交互数据就这样经过物理 线路被传输。

若是两端都支持自协商,则都会接收到对方的FLP,而且把FLP中的信息解码出来。获得对方的链接能力。而且把对端的自协商能力值记录在自协商对端能力寄 存器中(Auto-Negotiation Link Partner Ability Register , PHY标准寄存器地址5 )。同时把状态寄存器(PHY标准寄存器地址1)的自协商完成bit(bit5)置成1。在自协商未完成的状况下,这个bit一直为0。
而后各自根据本身和对方的最大链接能力,选择最好的链接方式Link。好比,若是双方都即支持10M也支持100M,则速率按照100M链接;双方都即支持全双工也支持半双工,则按照全双工链接。

一旦链接创建后,FLP就中止发送。直到链路中断,或者获得自协商Restart命令时,才会再次发送FLP。

并行检测:
为了保证在对端不能支持自协商的状况下也能链接,引入了被称为并行检测(Parallel Detection)的机制。在一端打开自协商,另外一端关闭自协商的状况下,链接的创建就依靠并行检测功能实现。
并行检测机制是这样的:在具备自协商能力的设备端口上,若是接收不到FLP,则检测是否有10M链路的特征信号或100M链路的特征信号。
若是设备是10M设备,不支持自协商,则在链路上发送普通链接脉冲(Normal Link Pulse)简称NLP。NLP仅仅表示设备在位,不包含其它的额外信息。
若是是100M设备,不支持自协商,则在没有数据的状况下,在链路上一直发送4B/5B编码的Idle符号。
并行检测机制若是检测到NLP,则知道对方支持10M速率;若是检测到4B/5B编码的Idle符号,则知道对方支持100M速率。可是对方是否支持全双工、是否支持流控帧这些信息是没法获得的。所以在这种状况下,认为对方只支持半双工,不支持全双工,且不支持流控帧。

基于以上原理,在对端不打开自协商时,打开自协商的一方只能协商成半双工模式。
802.3协议规定,经过并行检测创建链接后,PHY的状态寄存器(PHY标准寄存器地址1)的自协商完成bit(bit5)依然要置位成1,尽管链路上 并不是使用了真正的自协商操做。同时规定在自协商完成bit为1的状况下,本地自协商能力寄存器(PHY标准寄存器地址4)和对端自协商能力寄存器(PHY 标准寄存器地址5)是有意义的。因此,要把寄存器5中的数据更新。若是创建的链接为10M,则寄存器5的10M能力bit(bit5)置1,其它bit置 0,表示对端只能支持10M半双工;若是创建的链接为100M,则寄存器5的100M能力bit(bit7)置1,其它bit置0,表示对端只能支持 100M半双工。

=============================

端口自协商

端口自协商基本原理

端口自动协商模式是端口根据另外一端设备的链接速度和双工模式,自动把它的速度调节到最高的公共水平,即线路两端能具备的最快速度和双工模式。html

自协商功能容许一个网络设备可以将本身所支持的工做模式信息传达给网络上的对端,并接受对方可能传递过来的相应信息,从而解决双工和10M/100M速率自协商问题。自协商功能彻底由物理层芯片设计实现,所以并不使用专用数据包或带来任何高层协议开销。   
自协商功能的基本机制是:每一个网络设备在上电、管理命令发出、或是用户干预时发出FLP(快速 链接脉冲),协商信息封装在这些FLP序列中。FLT中包含有时钟/数字序列,将这些数据从中提取出来就能够获得对端设备支持的工做模式,以及一些用于协 商握手机制的其余信息。当一个设备不能对FLP做出有效反应,而仅返回一个NLP(普通链接脉冲)时,它被做为一个10BASE-T兼容设备。 快速链路脉冲FLP和普通链路脉冲NLP都仅使用于非屏蔽双绞线上,而不能应用在光纤媒体。   
自动协商的内容主要包括双工模式、运行速率、流控等内容,一旦协商经过,链路两端的设备就锁定在这样一种运行模式下。1000M以太网也支持自协商,在此从略。
 
电口和光口自协商主要区别是在OSI 中它们所处的位置不一样。对于电口来讲,协商发生在链路信号传输以前;对于光口来讲, 自协商机制与PCS在同一层, 这意味着光口的协商必须先创建链路同步之后才能够进行协商。
  
以太网端口电口工做模式简单介绍    1.以太网口的两端工做模式(10M半双工、10M全双工、100M半双工、100M全双工、自协商)必须设置一致。    2.若是一端是固定模式(不管是10M、100M),另一端是自协商模式,即使可以协商成功,自协商的那一端也将只能工做在半双工模式。    3.若是一端工做在全双工模式,另一端工做在半双工模式(包括自协商出来的半双工,也同样处理),Ping是没有问题的,流量小的时候也没有任何问题,流量达到约15%以上时,就会出现冲突、错包,最终影响了工做性能!    4.对于两端工做模式都是自协商,最后协商成的结果是“两端都支持的工做模式中优先级最高的那一类”。    5. 若是A端自协商,B端设置为100M全双工,A协商为100M半双工后,再强制将B改成10M全双工,A端也会立刻向下协商到10M半双工;若是A端自协 商,B端设置为10M全双工,A协商为10M半双工后,再强制将B改成100M全双工,会出现协商不成功,链接不上!这个时候,若是插拔一下网线,又会重 新协商在100M半双工。
相关文章
相关标签/搜索