centos8 主从复制 Java中高进阶架构 bash audio tfs datatable Backbonejs vue样式 ios视频教程 git视频教程 jq延时 hadoop特点 mysql统计数量 hash怎么下载 java不定长数组 python面向对象 python线程 python的range python日期转时间戳 python配置 python语言入门 java学习教程 java目录 java生成文件 linuxgrep linux目录系统 图吧导航怎么样 opengl编程指南 php连接mssql swing布局 黑帮之地修改器 r语言和python js延迟加载 网络文件服务器 千千静听老版本 骰子表情 微信小程序开发实例 vue定时器 金水疑云
当前位置: 首页 > 学习教程  > 编程语言

计算机网络:数据链路层常用的成帧方式

2021/1/13 19:28:52 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

一、字节计数法: 原理:利用头部的一个域来指定该帧中的字节数,该域被称为计数字段。当目的主机的数据链路层接收到这个字节计数值的时候就知道后面跟随的字节数了,从而确定帧结束的位置。 字节计数法优点:利用计数字段…

一、字节计数法:

原理:利用头部的一个域来指定该帧中的字节数,该域被称为计数字段。当目的主机的数据链路层接收到这个字节计数值的时候就知道后面跟随的字节数了,从而确定帧结束的位置

字节计数法

优点:利用计数字段来确定帧的终止边界,使得数据不会和其他的信息混淆,所以不用采取其他的措施就可实现数据的透明传输,任何数据可以不受限制的进行传输。

缺点:一旦计数字段的值出错,就会使得帧边界识别错误(如下图)。

实际应用:

  • 美国DEC公司的数字数据通信报文协议(DDCMP) 
  • 即使校验和不正确,接收方知道该帧已经被损坏,它仍然无法知道下一帧从哪里开始,失去帧同步,因此,字节技术方法本身很少被使用

 


 

二、使用字符填充的首尾界定法:

原理:考虑到了出错之后的重新同步问题,让每个帧用一些特殊的字符作为开始和结束

  • 特定的字符来定界一帧的开始与结束。
  • 帧内数据是由若干个字符组成的数据块。
使用控制字符进行帧定界

但是这种方法会出现一个问题——如果特殊字符是我们传输数据的一部分就会引起识别失误

针对这个问题,我们采取字节填充的方法解决,在数据部分出现的特殊字符前面填充一些特殊的字节,如下图中的转义字符ESC。在转义字符ESC后面的特殊字符EOT将不会看作帧的开始结束字符。

缺点:和特定的字符编码集关系过于密切,不利于兼容;字节填充软硬件实现困难,依赖于所采用的字符编码集 。

 


 

三、使用比特填充的首尾标志法:

原理:一组特定的比特模式(如:01111110)来标志数据帧的开头和结束

但是这样会出现一个问题——如果数据段传输的数据刚好有01111110这一段咋办?

所以发送方在传输的数据段中碰到 5 个连续的 1 时,就自动在其后面填充一个 0 ;在接收方接收数据时,每收到连续的 5 个 1 就删除后面跟着的 0 。

优点:

  • 不依赖于字符编码集。
  • 比特填充的方法由硬件实现较方便,可用于双向同时通信。
  • 可连续发送而不必停等确认,数据速率较高。
  • 能实现各种较完善的控制功能。

正是因为这些优点,使用比特填充的首尾标记法得到了广泛的使用!

实际应用:IBM公司在20世纪70年代初提出的面向比特的同步数据链路控制SDLC (Synchronous Data Link Control)规程。

SDLC规格帧格式

 


 

四、违规编码法:

原理:(个人理解:把用不上的编码做边界!)

  • 比特编码成信号通常包括一些冗余比特,这种冗余意味着这种冗余不会出现在常规数据中。
  • 可以利用这些保留的信号来指示帧的开始和结束。
  • 借用违规编码序列来定界帧的起始与终止,不需要任何填充技术,便能实现透明性。

缺点:但只适用于存在冗余编码的环境。

 

许多数据链路协议为了安全起见综合使用了上面介绍的这些成帧方法!

 

Ending... ...


本文链接: http://www.dtmao.cc/news_show_600081.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?