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


    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

  • 相关阅读:
    当扩展方法和类里定义的方法重名时,会优先调用类里自义的方法
    jquery.uploadify不支持MVC的Authorize
    .NET4中多线程并行方法Parallel.ForEach
    http://twitter.github.com/bootstrap/
    .NET 4.0中使用sqlite
    Extend Html.EditorFor MVC
    Custom Email Attribute在客户端不起作用原因
    使用webpack搭建vue环境
    新浪sae对storage的文档进行读写操作
    jquery+bootstrap插件
  • 原文地址:https://www.cnblogs.com/mercurytan/p/14203349.html
Copyright © 2020-2023  润新知