数据链路层的三个基本问题

1、封装成帧

  • 概念

    在数据的头部和尾部加上标记,确定帧的范围

  • 图示

image-20201228200417132

​ MTU:1500个字节

  • 问题

    1、如果用户只接收到半截帧,会抛弃吗?    
    	会, 因为是根据帧首部和尾部判断帧的起始和结束,如果只有一个标记,那么就会抛弃
    

2、透明传输

  • 概念

    在传输过程中,如果数据内部包含帧头或帧尾数据,会将这些转义。而这个过程对于外部是透明的,也就是说外部不知道内部做了这些操作

  • 字符填充法

    当传输的数据内部包含SOH或EOT时,在前面添加ESC转义。 当传输到接收端时,再将这些字符去掉

image-20201228200508837

3、 差错控制

  • 概念

    传输过程中可能会产生 比特差错。 1可能变为0,0可能变为1。 为了保证数据传输的可靠性,需要采用各种差错检测措施

误码率: 在一段时间内,传输错误的比特占所传输比特总数的比率。与信噪比有关
  • CRC 循环冗余检测

    CRC循环冗余检测是否产生差错

 大致步骤: 将所要传输的数据分组,每组在数据后面携带冗余码(计算方法见下面)。当接收端收到数据后,除以商量好的编码,如果结果为0,说明没有差错(可能存在问题)
  • CRC计算冗余码的过程

    1、数据A 后面跟任意长度的比特B,如下为000。组成数据+000 (即A+B)
    2、除数比B多一位,如下为1101(这里称为C)
    3、除以除数得到冗余码 D
    4、传输时,传输FCS(帧检验序列)(就是 数据+冗余码)(A+D)==》 FCS可以通过CRC计算得出
    5、接收端收到后, 用 A+D 除以 除数C。如果结果为0,那么说明中间没有差错。否则有错误就扔掉

image-20201228200622646

  • CRC小结

    CRC是无比特差错,而不是无传输差错的检测机制

    无比特差错:凡是接收端数据链路层接受的帧都是没有差错的,有差错就被丢弃了

    无传输差错: 指在传输过程中没有差错,需要加入确认和重传机制


如果本篇博客有任何错误和建议,欢迎大佬们批评指正

我是知逆,我们下期见

Peace

原文地址:https://www.cnblogs.com/mercurytan/p/14203349.html