计算机网络(17)数据链路层:组帧

目录

1、字符计数法

2、字符填充的首尾定界符法

3、比特填充的首尾标志法

4、违规编码法

5、四种组帧方式的对比


数据链路层之所以要把比特组合成帧,然后以帧为传输单位,是为了在出错时只重发出错的帧,而不必重发全部的数据,从而提高效率。为了使接收方能正确地接收并检查所传输的帧,发送方必须依据一定的规则把网络层递交的分组封装成帧(称为组帧)。组帧主要解决帧定界、帧同步、透明传输等问题。

注:组帧时既要加首部,又要加尾部,原因是,在网络中信息是以帧为最小单位进行传输的,所以接收端要正确地接收帧,必须要清楚该帧在遗传比特流中从哪里开始到哪里结束(因为接收端收到的是遗传毕业留,没有首部和尾部是不能正确区分帧的),而分组(即IP数据报)仅是包含在帧中的数据部分,所以不需要加尾部来界定(如果不懂,请戳PDU

通常有四种方法来实现组帧。

1、字符计数法

如图17.1所示,字符计数法是指在帧头部使用一个计数字段来标明帧内字符数,目的结点的数据链路层和收到字节计数值时,就知道后面跟随的字节数,从而可以确定帧结束的位置(计数字段提供的字节数包含自身所占用的一个字节)

这种方法最大的问题在于计数字段不能出错,如果计数字段出错,即市区了帧边界划分的依据,那么接收方就无法判断所传输帧的结束位和下一帧的开始位,收发双方将失去同步,从而造成灾难性的后果。

                                                              图17.1  字符计数法

2、字符填充的首尾定界符法

字符填充法使用一些特定的字符来定界一帧的开始(DLE STX)与结束(DLE ETX)。为了使信息为重出现的特殊字符不被误判为帧的首尾定界符,可以在特殊字符前面填充一个转义字符(DLE)来区分(注意。转移字符时ASCII码中的控制字符,是一个字符,而非“D”,“L”,“E”三个字符的组合),以实现数据的透明传输。接收方收到转义字符后,就知道其后面紧跟着的是数据信息,而不是控制信息。

如图17.2所示的字符帧,帧的数据段出现DLE字符,发送方在每个DLE前再插入一个DLE字符,接收方收到这个数据后会自己删除这个插入的DLE字符,结果仍得到原来的数据,这也正是字符填充法名称的由来。

                                                  图17.2  字符填充法              

3、比特填充的首尾标志法

如图17.3所示,比特填充法允许数据帧包含任意个数的比特,也允许每个字符的编码包含任意个数的比特。它使用一个椰顶的比特模式,即01111110来表示一帧的开始和结束。为了不使信息位中出现的比特流01111110倍误判为帧的首尾标志,发送方的数据链路层在信息位中每遇到5个连续的“1”的时候,将自动在其后插入一个“0”;而接收方和做该过程的你操作,即每收到5个连续的“1”时,自动删除后面紧跟的“0”,以恢复原信息。

                                图17.3   比特填充法

比特填充法很容易用硬件实现,性能优于字符填充法。

4、违规编码法

在物理层进行比特编码时,通常采用违规编码法。例如,曼彻斯特编码方法将数据比特“1”编码为“高-低”点平对,将数据比特“0”编码为“低-高”电平对,而“高-高”电平对和“低-低”电平对在数据比特中是违规的(即没有采用的)。可以借助这些违规编码序列来定界帧的起始和终止,局域网IEEE 802标准就采用了这种方法。

违规编码法不需要任何填充技术,便能实现数据传输的透明性,但它只适用于采用冗余编码的特殊编码环境

5、四种组帧方式的对比

由于字节计数法中计数字段的脆弱性和字符填充法实现上的复杂性与不兼容性,目前较为常用的组帧方法是比特填充法和违规编码法。

 

 

人,总是要有一点精神的,不是吗

 

 

 

 

 

 

 

 

    

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值