当前位置: 首页 > news >正文

数据链路层概述

  

        数据传输过程如下:

 

         数据包按上述过程传输,详见(计算机网络概述三)。在分析数据链路层时可以假象成其沿着水平传播。

        这三段链路层的传播方式可能会有所不同。

基本概念:

        链路:指一个节点到相邻节点的一段物理线路,有线或者无线,而中间没有其他的交换节点。

        数据链路:当在一条链路上传送数据时,除了需要链路本身,还需要一些必要的通信协议来控制这些数据的传输,把实现这些协议的软件或者硬件加到链路上,就形成了数据链路。

        网卡就实现了这些协议。

        帧:数据链路层对等实体之间在水平方向进行逻辑通信的协议数据单元PDU。

 三个问题概述:

        下图为封装成帧的情况。

         依照帧的首部和尾部标志位识别出帧的开始和结束的过程叫做帧定界。

         接收机接收到的数据根据标志字识别出帧的首部和尾部来区分两个帧。 但是当数据载荷部分有(PDU)有和帧尾部和帧首部时,会导致识别出的帧的错误,这一问题为透明传输问题

差错检测:(如何知道帧中出现了误码)

         提出一种检错码,将帧的内容计算为一个检错码。判断接收帧和发送帧的检错码是否相同。

可靠传输服务:

封装成帧和透明传输:

       封装成帧指的是数据链路层交给上层交付的协议数据单元添加帧头和帧尾使之称为帧,帧头和帧为重含有重要的控制信息,但不是每一种数据传输协议都包含帧定界标志。如MAC帧

        在数据链路层向物理层传输时,物理层给MAC帧添加前导码来实现帧定界的作用,此外,MAC帧每一帧和每一帧中都有一定的传输间隔。

        透明传输:数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。

 

        当PDU中还有flag时会导致误判帧定界。因此PDU中不能含有flag。此时就称为不透明传输。

解决方法:

        没出现一个帧定界符时将其插入转译字符,如下:

        如果在检测到帧定界符时,如果后面有转译字符,如果有转译字符,那么就剔除转译字符,继续寻找帧定界符。

        又有面向比特的透明传输:即

         PDU中如果每出现5个连续的1,就插入0,以此来保证PDU中不会出现帧定界符。

 

        为了提升效率:帧的数据部分应该远远长于帧头和帧尾。但是应该有一个最大限制,称为MTU(Max Trans Unit)。

  差错检错:

       实际的通信链路都不是理想的,比特在传输过程中可能会产生差错:1变为0,0变为1.这称为比特差错

         如上图中的FCS码用来进行差错检测。

奇偶校验:

        在待发送的数据中添加1位奇偶校验码,使得1的个数位奇数或者偶数。

         显然其检错率较高。

循环冗余校验:

        收发双方约定好一个生成多项式G(x);

        基于待发送数据和生成多项式计算出差错检测码(冗余码),将其添加到待传输数据后一起传输。

        接收方通过生成多项式来计算收到的数据是否产生了误码;

 示例:

           

 

         

 

http://www.lryc.cn/news/115648.html

相关文章:

  • Python代码使用技巧汇总:提升你的编程技能
  • Ae 效果:CC Spotlight
  • 如何在页面中嵌入音频和视频?
  • Unity 中检测射线穿过的所有的物体
  • LeetCode 29题:两数相除
  • Axure RP9中使用Echarts示例
  • 利用Jmeter做接口测试全流程分析
  • 超级浏览器与指纹浏览器:功能与特点的比较
  • 云端同步、高效无界:5款免费的跨平台思维导图软件推荐!
  • OpenAI允许网站阻止其网络爬虫;谷歌推出类似Grammarly的语法检查功能
  • SpringBoot操作Jedis
  • 实现静态资源访问的几种方法
  • chrome 下 autocomplete=off (禁止记住密码)不起作用解决方案
  • 设计模式-简单工厂模式(静态工厂模式)java实现
  • 如何共享笔记本电脑网络
  • Android 高级进阶知识整理
  • 一文详解 DolphinDB SQL 标准化
  • ATF(TF-A)安全通告汇总
  • vuejs 设计与实现 - 简单diff算法
  • 【前端|Javascript第3篇】探秘JavaScript的作用域与作用域链:小白也能轻松搞懂!
  • 【Spring AOP】结合日志面向切面编程 两种写法
  • C#在自动化领域的应用前景与潜力
  • string模拟实现:
  • 系统与软件安全研究(八)
  • jmeter测试rpc接口-使用dubbo框架调用【杭州多测师_王sir】
  • Java8中forEach()里使用return的效果
  • MVC配置原理
  • rabbitmq安装
  • 轻松抓取网页内容!API助力开发者,快速数据采集
  • CSDN 直播:腾讯云大数据 ES 结合 AI 大模型与向量检索的新一代云端检索分析引擎 8月-8号 19:00-20:30