Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >数据链路层的三个基本问题

数据链路层的三个基本问题

原创
作者头像
一个风轻云淡
发布于 2024-02-02 14:48:33
发布于 2024-02-02 14:48:33
5720
举报

三个基本问题

点对点信道的数据链路层协议要解决三个基本问题:

  • 帧定界
  • 透明传输
  • 差错检测

帧定界

帧定界(framing)就是从传送的比特流中正确地区分出帧的边界

帧定界采用的几种方法:

字节填充法 采用一些特定的控制字符来定界一帧的开始和结束。

当PPP使用异步传输时,我们使用0x7D(01111101)作为转义符,转义的规则如下:

  • 把信息字段中出现的每一个0x7E字节转变为2字节序列(0x7D,0x5E)。
  • 若信息字段中出现一个0x7D的字节(即出现了和转义字符一样的比特组合),则把转义字符0x7D转变为2字节序列(0x7D,0x5D)。
  • 若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。例如,出现0x03(在控制字符中是“传输结束”ETX)就要把它转变为2字节序列的(0x7D,0x31)。

在字节填充法中,采用字节填充技术。被填入的字节是转义字节(ESC)。

比特填充法 采用一特定的比特组合01111110来定界一帧的开始和结束,是目前最常用的方法。

采用“零比特插入、删除”技术来解决传送的数据信息中出现特定比特组合的问题。

零比特填充相较字节填充要简单得多,0x7E的二进制表示是01111110,因此只要在每出现5个1时插入一个0就可以避免在数据中出现0x7E.

字节计数法 采用一特定字符来表示一帧的开始,随后使用一个字节计数字段指明该帧所要求传输的字节数。

此法仅应用于DDCMP规程中,存在的问题在于字节计数值在传输过程中出现错误,就无法确定帧的结束边界。

非法比特编码法 采用非法编码作为帧的边界。

此法仅适用于物理媒体上采用特定比特编码的场合。例如,在局域网中采用双相码传输时,每个码元的中点都存在电平跳变。显然,对于码元中点不发生电平跳变的比特编码就属于非法比特编码,这种非法比特编码就可用作帧的定界

透明传输

透明传输是指不管链路上传输的是何种形式的比特组合,都不会影响数据传输的正常进行。

  • 在字节填充法中,采用字节填充技术。被填入的字节是转义字节(ESC)。
  • 在比特填充法中,采用“零比特插入、删除”技术。如插入特定的比特组合“01111110”。
  • 在字节计数法中,采用字节计数字段指明所要传输的字节数。

采用字节填充技术的透明传输举例

若传送的数据中出现控制字符,则采用插入一个转义字符“ESC”(1BH)来解决。如果转义字符也出现数据当中,应在转义字符前面再插入一个转义字符。在接收端应删除其插入的转义字符

差错控制

数据信号在传输过程中可能会产生差错:1 可能会变成 0 ,而 0 也可能变成 1。

误码率 BER (Bit Error Rate)是衡量传输差错的度量指标。该指标表示:在一段时间内,传输错误的比特占所传输比特总数的比率。

误码率与信噪比有着很大的关系。为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。循环冗余检验CRC是数据链路层被广泛采用的一种差错检测技术。

注意

  • 帧校验序列FCS与CRC有着不同的含义。CRC指的是一种检错方法,而FCS则是添加在数据域后面起着检错作用的冗余码。
  • 循环冗余检验CRC差错检测技术只能做到无差错接受。“无差错接受”是指:“凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于1的概率认为这些帧在传输过程中没有产生差错”。换句话说,凡是接收端数据链路层接受的帧都没有传输差错(有差错的帧就丢弃而不接受)。
  • 要做到“可靠传输”(即发送什么就收到什么)就必须再加上确认和重传机制。

习题讲解

数据链路层协议使用了下面的字符编码:A:01000111 B:11100011 FLAG:01111110 ESC:11100000。为了传输一个包含4个字符的帧:A B ESC FLAG,试问使用下面哪种成帧方法时所发送的比特序列是什么(二进制表示)?(1)字节计数(2)字节填充的标志字节(3)比特填充的标志字节

  • (1)字节计数法需要帧的长度信息,所以一共需要发送5个字节。发送序列为:00000100(表示4)01000111 (A)11100011 (B)11100000(ESC)01111110 (FLAG);

字节计数法需要帧的长度信息,也就是需要用同样的长度和二进制来表达对应的总共的字节的数量,所以是4,所以一共需要发送5个字节。

  • (2)FLAG是起始、结束标志。所以发送序列为:01111110(FLAG) 01000111(A) 11100011(B) 11100000(ESC) 11100000(ESC) 11100000(ESC)01111110(FLAG)01111110(FLAG)

FLAG是起始、结束标志。也就是必须在开头和结尾之中加上对应的转义符号,然后对于其中本身已经是转义符号的东西还要在前面加上另外的转义符号,所以一共是加上了2个esc和两个flag

  • (3)数据中若遇到连续5个1则在其后添加0。所以发送序列为:01111110(FLAG)01000111(A)110100011(B)111000000(ESC)011111010 (FLAG)01111110 (FLAG)

比特填充方法就是数据中若遇到连续5个1则在其后添加0,然后本身还要有flag的结束和开头。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
3.2 组帧
我们说数据链路层在网络层的下方,它为网络层提供服务,网络层会把 IP 数据报,也就是分组,交给数据链路层,请求数据链路层,然后传送给下一个相邻的节点,下一个相邻节点的数据链路层,需要从收到的帧当中恢复 IP 数据报的原始数据,然后把IP 数据包交给第三层的实体进行下一步处理。数据链路层把网络层交给他的这些数据打包成帧的过程就是所谓的组帧,也就是封装成帧。考研大纲里边使用的是组帧这个说法。
用户11290648
2025/06/11
700
【计算机网络】学习笔记,第三篇:数据链路层(谢希仁版)
当我们专心研究数据链路层找那个的问题的时候,在许多情况下我们可以只关心在协议栈中水平方向的各数据链路层,于是当主机 H1 向主机 H2 发送数据的时候,我们可以想象数据就是在数据链路层中从左向右沿着水平方法传送的
BWH_Steven
2020/11/10
1.6K0
【计算机网络】学习笔记,第三篇:数据链路层(谢希仁版)
数据链路层之信道:数字通信的桥梁与守护者
广播信道。这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。
Srlua
2024/04/02
1910
数据链路层之信道:数字通信的桥梁与守护者
数据链路层的三个基本问题
帧检验序列FCS 刚才最后得到的余数,就是在数据后面添加上的冗余码,称为帧检验序列FCS(Frame Check Sequence)
孙晨c
2020/07/21
6840
数据链路层的三个基本问题
计算机网络(谢希仁第八版)第三章:数据链路层
本章最重要的内容: (1)数据链路层的==点对点信道==和==广播信道==的特点,以及这两种信道所使用的协议(==PPP协议==以及==CSMA/CD协议==)的特点。 (2)数据链路层的三个基本问题:==封装成帧、透明传输和差错检测==。 (3)以太网==MAC层的硬件地址==。 (4)适配器、转发器、集线器、网桥、以太网交换机的作用以及使用场合。 (5)数据链路的两层:
roydonGuo
2022/11/02
1.9K0
计算机网络(谢希仁第八版)第三章:数据链路层
数据链路层基本介绍
帧是数据链路层的协议数据单元。帧由首部、数据部分和尾部组成。首部含有帧的控制信息(如地址、控制等),尾部包含帧校验序列,数据部分作为存放IP数据报的数据域。
一个风轻云淡
2024/02/01
2780
TCP/IP(三)数据链路层~1
前言   其实前面一堆讲的物理层的概念,会感觉特别的难理解,因为这是一个非常强大的计算机网络体系的底层知识,没有关系!我们大致了解一下就行了。 一、数据链路层概述   这是百度的简介  看图:理解一下
用户1195962
2018/01/18
1.9K0
TCP/IP(三)数据链路层~1
计算机网络之数据链路层与局域网 - 数据链路层服务
数据链路层: 负责通过一条链路, 从一个结点向另一个物理链路直接相连的相邻结点, 传送网络层数据报, 中间不经过任何其他交换结点。
越陌度阡
2020/12/01
5660
计算机网络之数据链路层与局域网 - 数据链路层服务
计算机网络之数据链路层1 链路层概述4 交换局域网5 交换机(switch)
功能:保证数据正确的顺序,无措和完整 1 链路层概述 数据链路层使用的信道主要有以下两种类型 点对点信道 使用一对一的点对点通信方式 广播信道 使用一对多的广播通信方式,因此过程比较复杂。广播信
JavaEdge
2018/05/16
2K0
【数据链路层】封装成帧和透明传输和差错控制
注:最后有面试挑战,看看自己掌握了吗 文章目录 前言 链路层功能 功能 封装成帧和透明传输 组帧的四种方法 透明传输 差错控制 检错编码 差错 链路层的差错控制 检错编码 纠错编码 链路层代码实现 🍃博主昵称:一拳必胜客 特别鸣谢:木芯工作室 、Ivan from Russia ---- 前言 功能+应用 链路层功能 封装成帧—链路层 传比特-----物理层 加头加尾封装----------链路层 节点—主机、路由器, 链路–物理通道 数据链路----逻辑通道 帧----封装网络数据包—链路层
20岁爱吃必胜客
2022/11/21
9340
【数据链路层】封装成帧和透明传输和差错控制
计算机网络:组帧
数据链路层之所以要把比特组合成帧为单位传输,是为了在出错时只重发出错的帧,而不必重发全部数据,从而提高效率。为了使接收方能正确地接收并检查所传输的帧,发送方必须依据一定的规则把网络层递交的分组封装成帧(称为组帧)。组帧主要解决帧定界、帧同步、透明传输等问题。
timerring
2022/11/13
1.1K0
计算机网络:组帧
计算机网络学习8:封装成帧、差错检测
如果在上层交付的协议数据单元中,恰好也包含了这个flag帧头帧尾的特定数值,那么接收方还能正确接受吗?答案是否定的。
程序员洲洲
2024/06/07
1380
计算机网络学习8:封装成帧、差错检测
7-数据链路层-逻辑链路控制子层
解决方案:当数据中存在标记字节时,在标记前添加转义字符(这种方式解决了一部分问题,但同时也带来了一些特殊情况,当数据中包含转义字符时,又必须在转义字符前添加转义字符避免混淆)
Ywrby
2022/10/27
2.3K0
【计网不挂科】计算机网络第三章< 数据链路层 >习题库(含答案)
A、数据链路层 物理层 B、物理层 物理层 C、数据链路层 数据链路层 D、物理层 数据链路层 答案: B
YY的秘密代码小屋
2024/11/14
2690
【计算机网络】数据链路层 : 封装数据帧 ( 附加信息 | 帧长度 | 透明传输 | 字符计数法 | 字符填充法 | 零比特填充法 | 违规编码法 )
① 发送端封装数据帧 : 在 网络层 下发的 IP 数据报 信息基础上 , IP 数据报 的 前面 加上 帧首部 , IP 数据报 的后面 加上 帧尾部 ;
韩曙亮
2023/03/28
2.5K0
【计算机网络】数据链路层 : 封装数据帧 ( 附加信息 | 帧长度 | 透明传输 | 字符计数法 | 字符填充法 | 零比特填充法 | 违规编码法 )
计算机网络学习--数据链路层
第一章 概述 第二章 物理层 第三章 数据链路层 第四章 网络层 第五章 传输层 第六章 应用层
shimeath
2020/08/01
7620
计算机网络之数据链路层
数据链路层协议有许多种,但是有三个基本问题则是共同的:封装成帧、透明传输和差错检测。
用户1771180
2019/01/08
5681
第三层 数据链路层
在 OSI 网络模型中,数据链路层是第二层,它负责将网络层(第三层)传递过来的数据包(也称为分组)封装成帧,以便在物理层(第一层)进行传输。
心安事随
2024/07/29
1720
第三层 数据链路层
TCP/IP第二层--数据链路层
不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。
黄规速
2022/04/14
2K0
TCP/IP第二层--数据链路层
你想要的数据链路层,都在这里了!
小伙伴儿们,大家好!这篇计算机网络数据链路层总结了很久,图文并茂,绝对是干货类型!喜欢的话多多支持哦~
程序员的时光001
2020/11/02
1.6K0
你想要的数据链路层,都在这里了!
推荐阅读
相关推荐
3.2 组帧
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档