数据链路层简介


数据链路层的功能

  • 为网络层提供服务,良好的服务接口
  • 保证数据传输的有效、可靠
  • 处理传输错误:差错检测和控制和流量控制(有基于速率和基于反馈两种)

协议数据单元PDU为数据帧

帧由帧头帧尾和载荷构成

  • 帧头:有定位所需要的物理地址信息
  • 载荷:上一层网络层送下来的分组和包
  • 帧尾:校验核,用作校验

数据链路层使用物理层提供的服务,物理层处理的是位流,数据链路层处理的是帧(数据链路层的PDU)

将原始的位流分散到离散的帧中,叫成帧,成帧的方法有

  • 字符计数法
  • 带字节/字符填充的标志字节法
  • 比特填充的比特标志法
  • 物理层编码违例法


字符计数法

发送方:在每个帧头部的第一个字段,标志该帧的长度,总共有多少个字符数

接收方:通过第一个字段就知道这个帧有几个字符


简单,但很少人用,缺点严重如上


字节填充的标志字节法

每个帧采用一个特殊的字节(flag)作为帧界,即帧的开始和结束

但是会遇到问题:如果要传输的字节中有转义字符,那么就会冲突混淆

解决方法:和C语言一样增加转义字符(esc)


缺点:帧只按字节(8位字符)来传递,任意比特数的帧不适用,必须是8的整数倍,这样如果需要疯狂转义则会造成传输效率低下,例子下面有


比特填充的比特标志法(0比特填充法/位填充法/透明传输)

面向二进制的帧格式成帧方法

又称作0比特传输


其中的黄色部分为帧标记,作为一个帧的开始,当然也意味着另一个帧的结束

如果要传输的字段中出现01111110,那么就在连续5个1后加个0


优点:可以传输任意比特数的帧,效率也更高

例子:假设要传输100个"01111110",如果用字节填充法那么你不得不在每个"01111110"前面塞100个转义符,那么传输效率就会变为50%,如果用的比特传输法,那么你只需要在5个1后面加个0就ok了,传输效率高达80%


物理层编码违例法

统称,例如曼彻斯特编码,如果用"高电平-低电平"表示"1","低电平-高电平"表示"0",那么就可以用"高电平-高电平"和"低电平-低电平"来作为帧界,这样完全不会冲突,而且效率还很高

除此之外还有4B/5B编码等



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值