我是靠谱客的博主 陶醉云朵,最近开发中收集的这篇文章主要介绍计算机网络:数据链路层常用的成帧方式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、字节计数法:

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

字节计数法

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

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

实际应用:

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

 


 

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

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

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

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

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

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

 


 

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

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

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

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

优点:

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

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

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

SDLC规格帧格式

 


 

四、违规编码法:

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

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

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

 

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

 

Ending... ...

最后

以上就是陶醉云朵为你收集整理的计算机网络:数据链路层常用的成帧方式的全部内容,希望文章能够帮你解决计算机网络:数据链路层常用的成帧方式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部