(四)数据链路层------(上)

一、数据链路层基本概念及基本问题
  1、基本概念

   先来看一张图,理解一下:数据链路层之间的运输、数据链路层之间的信道。说的是什么意思?看图中的注释,我们应该注意的就是这里说的数据链路层之间的信道等语句,是不考虑物理层中运输的问题。直接考虑链路层这一层。要注意这个事情。

     

            链路:一条点到点的物理线路段,中间没有任何其他的交换结点,通俗的将,就是一根线,其中不经过任何东西,这样的就是链路,一条链路只是一条通路的一个组成部分
   数据链路:除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。 通俗讲,就是经过了一些交换机呀,什么的,最终到达目的地,所有路段就是数据链路,而数据链路中就包含了多段链路。  
   适配器:也就是网卡,就是用来实现数据链路上一些协议。
   帧:数据链路层上传送的就是帧,
     

     2、三个基本问题    
     封装成帧、透明传输、差错控制
     讲解如何封装帧,封装完后帧的传输问题、传输到达目的地,如何检验该段帧是否完整, 就是这三个问题。
     ①、封装成帧
       看图就理解了。数据链路层就是在ip数据报的前面后末尾加了一个首部和尾部来代表ip数据包的开始和结束,首部和尾部都市由8位二进制数表示的,可以一样也可以不一样
     
        ②、透明传输
    就是为了解决一个问题, 在ip数据包中如果有一个跟帧尾部一样的8位二进制数,则会提前结束接受数据包,这样数据就被破坏了。出现了如下图这样的问题

     

        解决办法:
   看图:通过在特殊字符前面增加一个转义字符ESC,就可以解决上面所遇到的问题,在接收端,将数据包中所有ESC的字符删除,遇到两个ESC的,就删除第一个,这样一开始传输的时候有ESC转义字符,接受完就没了,所以说的是透明传输

     


         ③、差错检测
     问题:传输过程中可能会产生比特差错:1可能会变成0而0也可能变成1。在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER (Bit Error Rate)。为了检测传送的帧中ip数据包是否完整,是否没有被损坏,所以需要差错检测
     解决:循环冗余检测CRC,截个图,把概念性的文字截下来,看到这个人都晕了,其实很简单,

     

           按照下图中的7步走,理解一下,然后再看上面的文字,就理解了。

     

      检测:
   若得出的余数 R = 0,则判定这个帧没有差错,就接受(accept)。
   若余数 R ≠ 0,则判定这个帧有差错,就丢弃。
      生成多项式:也很简单,例如上面的除数1101  就用P(X)=X3+X2+1 (X3是x的三次方的意思)  最高位是2的三次方,就是x的三次方这样算,例如,101101 P(X)=X5+X3+X2+1     
      
   这种冗余差错校验的特点:
    ①这种检测方法并不能确定究竟是哪一个或哪几个比特出现了差错
    ②只要经过严格的挑选,并使用位数足够多的除数 P,那么出现检测不到的差错的概率就很小很小。
    ③只能是无差错接受:凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错”。也就是说:“凡是接收端数据链路层接受的帧都没有传输差错”(有差错的帧就丢弃而不接受)
    ④这是”不可靠“的,是无比特差错,而不是无传输差错的检测机制,要做到可靠的还要加上确认和重传机制。即考虑帧重复、帧丢失、帧乱序的情况。

    3、可靠传输    

        在有些情况下,我们需要数据链路层向上的网络层提供“可靠传输”的服务,就是发送端发送什么,在对应的接收端就收到什么, 前面的CRC只能检测出位数的差错,不能正确的检测出更精准的错误。
  ①、停止等待协议
    停止等待就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组,详细的可以看书上的文字性描述,很简单,        
    超时重传:解决上面如果数据分组或确认分组丢失时,发送方将会一直等待接收方的确认分组的问题,设置一个超时计时器,弱到了超时计时器所设置的重传时间,而发送方仍收不到接收方的任何确认分组,则会重传原来的分组。
    重复分组:如果只使用超时重传来解决,不用发送确认分组,那么会出现重复分组的问题,就是当接收方收到分组后,发回确认分组时,确认分组丢失,那么会触发超时重传,则接收方会收到两个重复的分组,这里需要注意的是,是确认分组丢失。第一次发送的分组已经正确接收了。
  ②、停止等待协议的算法
    因为手写实在太麻烦,所以截图过来看一下这个算法的具体步骤

     

     

         通过画图分析了一下正确的过程,其他依葫芦画瓢

     

      ③、回退N步协议
   其实跟停止等待协议差不多,只是使用的是流水线传输方式,发送方不间断的发送分组,每次发送的分组大小有限制,如果不限制,可能会使接收方或网络来不及处理这些分组,导致分组的丢失,所以每次发送的分组大小可能是5,6或者更多。这种限制就是回退N步协议。
   回退N步协议:利用发送窗口来限制发送方连续发送分组的个数。要是发送窗口为1就是我们上面所讨论的停止等待协议。
   分析如何工作的

     

         这个就是回退N步协议,根据这个原理图,也能看出,为什么叫回退N步协议了,在哪里出错了,就必须回退到哪里全部重传,为了解决这个,又有了选择重传协议
 4、选择重传协议
   也就是改进回退N布协议,  方式都是一样, 在接受方必须逐一确认, 但是出现错误,只需要重传出现错误的那一个分组,不用全部重传,这里的全部,指的是在出现错误的分组之后的所有分组,前提是在同一个发送窗口中。
 5、总结可靠传输
   不可靠的链路上,通过各种协议,就能达到可靠传输,来保证数据的准确性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值