首页 > 代码库 > 第三章 数据链路层(三)

第三章 数据链路层(三)

    序言

        一上午搞那个路由器,在图书馆的局域网连路由器开wifi,忙活了一上午,有个疑问,那个插口直接连网线到电脑上就可以用,但是连到路由器上时路由器就不能够自己获取ip地址了,难道是因为线太长了吗?连到别的插口就可以了,等晚上人少的时候在试试,其中原理不是很清楚,希望学习完这本书能够理解一点,路由器设置就是傻瓜式的设置。赶紧写一下今天的这篇文章,结束掉数据链路层这一章节吧。

                                                                            ---WH

 

 

一、局域网

    局域网和以太网的区别和联系?

      是以太网就一定是局域网,但是局域网不一定就是以太网。 因为以太网就是一个规范,而大多数局域网都使用这个规范,所以才有这个话。

 

    什么是局域网呢?

      在第一章节的总括就已经介绍过,例如,学校里面、各个大的公司里,自己组件的一个小型网络,这种就属于局域网,

 

    局域网的常用拓扑结构?

                技术分享

    前面我们说过,局域网是用广播信道的方式去传送数据,那么就会遇到问题,如果在局域网内有两个pc机同时在其中传播数据呢?就会发生碰撞,使两个数据都失效,那么如何解决这个问题呢,使用CSMA/CD协议来解决这类问题。

 

 

CSMA/CD:半双工通信,

        1、多址接入:一种多址接入协议,许多站点以多址接入的方式链接在一根总线上,其实就是局域网中总线网这种形式。

        2、载波监听:发送前监听,就是在发送数据前监听总线中是否有数据在传播,如果有就不发送。

           就是用电子技术检测总线上有没有其他计算机发送的数据信号。

        3、碰撞检测:边发送边监听,在发送数据的中途也会监听总线中是否会有其它数据,

           当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)。

           当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。

             所谓“碰撞”就是发生了冲突。因此“碰撞检测”也称为“冲突检测”

         检测到碰撞后,

            在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来。

            每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送。

    通过例子也说明一下CSMA/CD协议会做哪些事情,借用下面这个图来说明问题

            技术分享

          1、B向D发送数据,在发送数据前,由于采用的CSMA/CD协议,那么先会进行载波监听,看总线中是否有其他的数据传输(如果检测,通过物理层的一些电磁波等)

          2、如果没有,那么B就可以开始发送数据,由于B到D之间存在一定距离,那么在总线中传输数据也要时间,虽然很快,可能只需要十几微秒,在发送的的途中,遇到C向A发送数据,由于B到D的数据还没传过来,那么C也就没监听到总线中有数据,所以也开始发,那么在途中两个数据就会相遇,这就形成了碰撞,在碰撞以后,两个电磁波叠加,在总线中传输,那么会到C或者B时,就会知道电磁波的不同,从而发生了碰撞。这就是碰撞检测。

 

    上面只是大概描述了一下这个过程,其中的细节还不知道。接下来就来了解一下这其中的细节

   一些可能会出现疑惑的名词或数据的解释

   1、传播时延 技术分享t(这个字母打不粗来,就用t表示吧)

                技术分享

  2、争用期:发生碰撞所需要的最迟时间。在根据上面的大体分析,我们知道A到B之间的任意时刻都可能会发生碰撞,那么A确认发生碰撞要多久呢,那就是2t 了,传播时延是t,可能正好到B那里就发生了碰撞,然后返回到A,又需要t的时间,那就是2t了,我们把这个2t时间就叫做争用期,

  3、在10Mb/s(传播速率)的以太网,争用期为51.2μs(微秒),那么在争用期内可发送64字节,及512bit的数据。怎么算来的呢?下面来讲解一下

      10Mb/s  = 10 000 Kb/s = 10 000 000 b/s (这里的换算是1000,指的是计算机网络中传输的多少位多少位,也就是0101这样的位数)

      51.2μs = 0.0512 ms = 0.000 0512 s  (1s = 1000ms = 1000 000 μs)

      51.2μs能传多少bit呢? 上面两个相乘就为 512bit 了,换算为字节,字节的换算是 1byte(字节) = 8bit(位) 所以 512/8=64byte(字节) 就这样算过来的。

 

  4、最短有效帧:64字节,就是上面这样算的,发送了64个字节之后,肯定就不会发生碰撞,以太网规定了最短有效帧长为 64 字节,凡长度小于 64 字节的帧都是由于冲突而异常中止的无效帧。

 

二进制指数类型退避算法

    这个算法就是在发生碰撞后,pc机该如何处理,在什么时间后再次发送数据。
    有4步,其实很简单,

  1、确定基本退避时间,一般就是争用期2t

  2、定义参数k  K = Min[重传次数,10]

  3、从整数集合中技术分享[0,1,...,(2的k次方 -1)]随机取一个数,记为r,重传所需要等待的时延就是r倍的基本退避时间(2rt)

  4、当重传16次还不能成功则丢弃该帧,并向高层汇报

 

  解释:其实这四步很简单,我来分析一下就会了,首先第一次传数据,重传次数为0,那么k=0,从整数集合中只有0这个值,那么r=0,等待的时延就是2rt=0,所以第一次传数据需要等待的时延就是0,不需要等待,除非先检测到了有数据已经在传了,如果第一传数据发现碰撞,那么重传次数为1,那么k=1,,整数集合中就有0,1两个值,随机取值,取到r=1,那么等待的时延就是2t,意思就是在第一次发生碰撞后,需要等待2t的时间,才能在重新发送数据,也可能不需要等就直接发,r=0时。

 

以太网的信道利用率问题

     分析下面该图

          技术分享

      什么意思呢?一个帧从开始发送,经可能发生的碰撞后,将再重传数次,到发送成功(发送成功这段时间T0是指数据的发送时延,帧长为 L (bit),数据发送速率为 C (b/s),因而帧的发送时间为 L/C = T0 (s)),帧发出去以后,还要经过端到端的传播时延t,所有在真正占用信道的时间是 TO+t ,前面发生的碰撞损耗的时间,数据并没有占用信道,我们指真正占用信道的时间是指数据发送成功即不发生碰撞然后到达目的地的这段时间,而前面发生碰撞的时间,都市在浪费信道,每发送一帧需要的平均时间就是在信道中发生碰撞浪费的时间+上数据传输成功所用的占用期。不要理解错了。

    

   公式和参数a的理解: 技术分享  首先理解一下信道利用率,借用上面的图,就是占用期在其图中的比例变大,则信道利用率就高。但是不确定前面发生了多少次碰撞,只是一个平均的估算值,所以就定义了这个a的公式,用t/T0来代表信道利用率

          1、a→0 表示一发生碰撞就立即可以检测出来,并立即停止发送,因而信道利用率很高。

              a→0也就是t越小,而T0越大,发送时延尽可能大一点,而t传播时延尽可能小一点,现实意义就是数据在在信道中传播的时间如果很小很小,那么数据一发送,就能在很少的时间里面检测出碰撞来了,那么在前面那张图中,花费在争用期(发生碰撞)的时间就少了,就能快点成功发送数据占的时间就长了了,那信道的利用率不就很高吗,

          2、a 越大,表明争用期所占的比例增大,每发生一次碰撞就浪费许多信道资源,使得信道利用率明显降低

              也就是T0越小,而r很大,那发生一次碰撞就浪费了很多信道资源,因为在信道中传输无用的波占的时间太长了。而成功发送的占用期自然就变小了,所以信道利用率就越低了。

      根据上面的分析信道利用率,就发现,影响信道利用率的就跟T0和t有关,也就是跟以太网的连线长度有关,所以才有在以太网中,有最远距离的限制,就是不能让t太大,以至于a很大,信道利用率太低,还有发送的帧长也有最小帧长的限制,因为怕发送的数据帧太短,而发送速率就一定,那么发送时延T0就太小了,会让a的值越大,信道利用率就太低了。

 

  最大信道利用率

          技术分享

      理想的情况下就是不发生碰撞,一发送完数据,另一个数据就又发送,也就是一有空闲时间,就发送数据。这个时候,信道中一直有数据在传输,一刻也不停歇,那此时的信道利用率就是100了?错误,这个想法是错的,举个例子就知道了。每帧用的时间就是下面图中这块,这块也就可以看成一段数据帧平均花费的时间,这里面所影响的因素就是发送时延T0和t传播时延了,一段数据帧平均花费的时间为1s,这是已经固定了,但是其中的两个部分并没有确定,如果T0占的比例大,说明发送时延大,发送速率已经确定了,那么就肯定是发送的数据变多了,在信道中传输的bit更过,信道利用率不就更到了吗,通俗一点讲,就是给了你1s的时间,你尽可能的多发些bit过去,那么你的传播时延就大了,那不就信道利用率的很高了吗,理想状态下考虑的因素跟那个现实考虑的因素不一样。

      

                        技术分享

 

到这里,就已经结束了对CSMA/CD协议的讨论,大概就是这些内容了,刚才讨论的前提是已经知道谁发送给谁了,然后说的数据在传播过程中遇到的问题。接下来说一下在他们是怎么从一台pc机找到另一台PC机的。

    用的就是MAC地址,在以太网中是如果封装数据帧来达到能够准确传输数据到目的地的呢?

      MAC地址:每个pc机上都有一个固定的mac地址,并且每台计算机的mac地址都不一样,独一无二,一般是在网卡(适配器)上,生产厂家在生产出来的时候就已经为每块网卡配置了一个mac地址

      MAC地址的格式:

            48bit,6个字节,前3个字节是由管理机构给各个厂家分配的。也就是说如果有厂家想生产网卡这类需要mac地址的东西,必须先像管理机构申请前三位字节,所以网卡上的前三个字节就代表着某个厂家,后三个字节就是由厂家自己来设定的。

      每个网卡都拥有识别数据帧中mac地址的功能

      数据帧格式:

                技术分享

 

      先不管前8个插入字节的意思,在以太网中,发送的数据帧最小要是64个字节,那这64个字节由哪些组成的呢,就是图中所示,6个目的MAC地址,6个源MAC地址,2个字节代表数据包的类型,还有4个字节是FCS,用来进行CRC算法检测的,剩下的46个字节就是数据包最少要发送的字节数了,如果数据包实际发的少于46,那么会给这个数据包自动补充0,来达到需要的字节数。

      然后说说插入的8个字节是什么意思?前7个字节用来使发送的数据帧的的比特同步,也叫作前同步码,最后一个字节,帧的开始定界符,也就是告诉接收方,从这个字节开始,后面是是MAC帧了。 有人这个时候会问,既然有了帧开始定界符,为什么还要同步码?原因是,在接受MAC帧后,并不能马上识别出帧开始定界符,没有那么快的反应分辨出来,所以需要在前面加同步码,使接收方有反应的时间,所以同步码都是1010101010101这样的bit。前7个字节的同步码跟最后一个字节中的前6个bit位相同。上面图中这里画的有点错误,圈错了,正确的是下面这样

                  技术分享

 

 

二、扩展以太网

 

  集线器和网桥(多个接口的交换机)

    什么是集线器呢?

      就是只能够转发数据,来了就往接了集线器的PC机上发数据,其他什么差错校验呀,什么东西全都不做,

        集线器的用法首先是下面这样

      技术分享

      然后想办法,改进成这样了

      技术分享

    改完是有好处也有坏处

      用集线器扩展局域网优点

         使原来属于不同碰撞域的局域网上的计算机能够进行跨碰撞域的通信。

         扩大了局域网覆盖的地理范围。
      用集线器扩展局域网缺点
         碰撞域增大了,但总的吞吐量并未提高。
         如果不同的碰撞域使用不同的数据率,那么就不能用集线器将它们互连起来。
        

由于集线器总有这样的缺点,所以网桥这个设备就出来了

 

  网桥

    有两个优点,能识别mac地址,遇到陌生的mac地址,会在内部mac表中记录下该mac地址,下次再使用,就认识了

      1、根据 MAC 帧的目的地址对收到的帧进行转发

      2、过滤帧的功能。当网桥收到一个帧时,并不是向所有的接口转发此帧,而是先检查此帧的目的 MAC 地址,然后再确定将该帧转发到哪一个接口

    网桥原理图

          技术分享

 

    透明网桥

        1、局域网上的站点并不知道所发送的帧将经过哪几个网桥,因为网桥对各站来说是看不见的  

        2、是一种即插即用设备,其标准是 IEEE 802.1D

    网桥的好与坏

        好处:

           过滤通信量。

           扩大了物理范围。
           提高了可靠性。
           可互连不同物理层、不同 MAC 子层和不同速率(如10 Mb/s 和 100 Mb/s 以太网)的局域网。

 

        坏处:

           存储转发增加了时延。

           在MAC 子层并没有流量控制功能。
           具有不同 MAC 子层的网段桥接在一起时时延更大。
           网桥只适合于用户数不太多(不超过几百个)和通信量不太大的局域网,否则有时还会因传播过多的广播信息而产生网络拥塞。这就是所谓的广播风暴。

 

三、高速以太网

      从最早的使用集线器连接的以太网(CSMA/CD,半双工,10Mb/s)到使用网桥阶段的扩展以太网(CSMA/CD,半双工,10Mb/s或100Mb/s)到现在的高速以太网(半双工/全双工通信)。

    高速以太网:速率达到或超过100Mb/s的以太网

      这个也没什么好讲的,就是在之前的基础上加强了很多东西,

        1、速率提高了很多

        2、从半双工通信到能使用全双工通信了(这个并不是说就抛弃了半双工,在星形拓扑结构中的局域网,也就使用CSMA/CD协议的半双工通信的方式,全双工就不使用该协议了)

        3、传输距离可以增长,因为有了光纤(传输过程的稳定性),速率增强很大,不止局限于局域网,扩展到了有城域网,广域网,

    10Gb/s以太网

           1、与 10 Mb/s,100 Mb/s 和 1 Gb/s 以太网的帧格式完全相同。

           2、保留了 802.3 标准规定的以太网最小和最大帧长,便于升级。也就是最小64字节,最大是多少不知道。

           3、不再使用铜线而只使用光纤作为传输媒体。

           4、只工作在全双工方式,因此没有争用问题,也不使用 CSMA/CD 协议。    

       好处

          成熟的技术

          互操作性很好
          在广域网中使用以太网时价格便宜。

          统一的帧格式简化了操作和管理   

  

 

结束语

      写这篇文章话费了我3-4个小时,真是累翻了,希望对看到这篇文章的同学能一丢丢帮助,顺手点个推荐吧,哈哈,到此,第三章数据链路层已经学完了,接下来就是到网络层了,传说中的tcp/ip协议就在这一层,马上就能揭开你神秘的面纱了。加油!!!!!

第三章 数据链路层(三)