4.1 概述
为什么要设计数据链路层
- 在原始的物理传输线路上传输数据信号是有差错的,存在一定的误码率。
- 在设计数据链路层的目的就是如何在有差错的线路上,进行无差错传输。向网络层提供高质量的服务。
- 从网络参考来看,物理层之上各层都有改善数据传输质量的要求,数据链路层是重要的一层。
定义和功能
- 要解决的问题:如何在有差错的线路上,进行无差错传输。
- ISO关于数据链路层的定义:数据链路层视为了提供功能上和规程上的方法,以便建立、维护和释放网络实体间的数据链路。
- 数据链路:从数据发送点到数据接收点(点到点)所经过的传输途径。
- 虚拟数据链路:
- 实际数据通路
- 分组和帧的关系
- 虚拟数据链路:
- 功能
-
数据链路控制规程
- 为使数据能迅速、正确、有效地从发送点到接收点所采用的控制方式
- 数据链路层协议应提供的最基本功能
- 数据在数据链路层上的正常传输(建立、维护和释放)
- 帧定界(帧同步)
- 差错控制
- 流量控制
- 区分数据和控制信息
- 透明传输
- 寻址
-
数据链路控制规程
- 数据链路层协议的位置
- 数据链路连接
- 数据链路层为网络层提供三种基本服务
-
无确认无连接服务
- 由上层完成差错控制,适合于误码率低,实时性要求高的场所,如大部分有线局域网。
-
有确认无连接服务
- 进行简单的差错控制。适合于不可靠的信道,如无线网。
-
面向连接确认服务
- 在发送前需要建立连接,保证了帧的正确按序传输,适合于可靠性要求较高的场合,适合于大多数广域网。
-
无确认无连接服务
- 数据链路层为网络层提供三种基本服务
- 应答方式:
-
正向应答:只对正确的信息应答
- 工作方式:
- 工作方式:
- 负向应答:只对错误的信息应答
-
双向应答:既对正确的信息应答,也对错误的信息应答
-
正向应答:只对正确的信息应答
4.2 帧边界划分方法
-
成帧
- 将比特流分成离散的帧,并计算每个帧的校验和。
- 成帧方法:
-
字符计数法
- 在帧头用一个域来表示整个帧的字符个数
- 缺点:若计算出错,对本帧及后面帧有影响,因此很少采用。
-
带字符填充的首尾字符定界法
- 用DLE**·**STX表示帧的开始
- 用DLE**·**ETX表示帧的结束
- 用DLE**·**DLE表示传送信息中的DLE
- 缺点:局限于8位字符和ASCII字符传送,也不被普遍采用
-
带位填充的首位标记定界法
- 帧的起始和结束都用一个特殊的位串“01111110”,称为标记。
- 0比特插入删除技术,在传送数据信息中每遇到5个连续的1后加0
-
物理层编码违例法
- 只适用于物理层编码有冗余的网络,如曼彻斯特编码。
- 在很多数据链路协议中,使用字符计数法和一种其他方法的组合。
-
字符计数法
4.3 差错控制
4.3.1 差错原因及特点
- 差错出现的特点:随机、连续突发
- 差错产生的原因
- 信道的电气特性引起的信号幅度、频率、相位的畸变
- 信号反射
- 串扰
- 闪电、大功率电机的启停等
- 出错情况
- 帧(包括发送帧和响应帧)出错
- 帧(包括发送帧和响应帧)丢失
4.3.2 差错控制方法
-
差错控制的方法
- 差错控制的目的
- 保证帧正确、按序送交上层。在接收方能够判断接收的数据是否正确,若错误还可能要恢复错误。
- 差错控制的方法
- 自动纠错机制=向前纠错FEC
- 检错反馈重发机制ARQ(常用)
- 混合方式(纠错检错混合)
- 码字
- 一个帧包括m个数据位,r个校验位,称为n位码字(n = m+r )
-
纠错码
- 加入了足够多的冗余位,使接收方不仅知道有差错发生,并知道哪些位发生差错。
-
检错码
- 加入了冗余位,使接收方知道差错发生,但不知道什么差错,然后请求重发。
- 加入了冗余位,使接收方知道差错发生,但不知道什么差错,然后请求重发。
- 差错控制的目的
4.3.3 海明码
- 海明定理
- 海明距离
- 两个编码的海明距离:两个编码不相同位的个数。
- 编码方案的海明距离:编码方案中任两个编码海明距离的最小值。
- 海明定理
- 为检测d位错,编码方案的海明距离至少为d+1
- 当发生d位错时,不会由一种合法编码变成另一种合法编码
- 为纠正d位错,编码方案的海明距离应至少为2d+1
- 当发生d位错时,出错编码仍然最接近于原始的正确编码。
- 海明距离
4.3.4 垂直水平奇偶校验码
-
奇偶校验码
- 在数据后添加一个奇偶位
- 若接收方接收到的字节奇偶结果不正确,就可以知道传输中发生了错误。
- 增加奇偶校验位后海明距离由1变成2,因此可以检查出一位二进制位的差错。
4.3.5 循环冗余检验码
-
循环冗余码(CRC)
- 生成多项式
- 发方、收方事前约定
- 生成多项式的高位和低位必须为1
- 生成多项式必须比传输信息对应的多项式短
-
CRC校验基本思想
- CRC码(即校验和)加在帧尾,使带CRC码的帧的多项式能被G(x)除尽,若有余数,则传输出错
- 注:R阶为r+1位
-
- 生成多项式
4.3.6 校验和
- 检验字段初始置0
- 数据拆分成检验字段等长的分片,不足部分补0
- 将所有分片按位取反,并连续累加,丢弃最高进位
- 计算结果置入检验字段
- 接收段执行相同进程,并将结果和传输过来的检验和进行比较,以决定数据是否出现差错。
- 适用于高层协议,如IP、TCP、UDP等。
- 举例:
-
4.4 停等协议
4.4.1 简单停等协议
- 单工传输
- 发送方无休止工作(要发送的信息无限多)
- 接收方无休止工作(缓冲区无限大)
- 发送数据的速率低于接收数据的速率
- 通信线路(信道)不损坏或丢失信息帧(无错)
- 工作过程
- 发送数据 取数据、构成帧、发送帧
-
接收数据 等待、接收帧、送数据给高层
4.4.2 带流量控制的停等协议
- 单工停等协议(无错情况)
- 增加约束条件:接收方不能无休止接收
- 例如:缓冲区数量有限,接收速率比发送速率低等。
- 解决办法:
- 接收方每收到一个帧,给发送方回送应答。发送方收到应答前不发送后续帧。
- 工作过程
- 发送数据 取数据,成帧,等待应答帧
-
接收数据 接收帧,数据送高层,发送应答帧
- 增加约束条件:接收方不能无休止接收
4.4.3 带差错控制的停等协议
- 增加约束条件:信道有差错,信息帧可能损坏或丢失
- 解决办法:
- 常使用正向应答+重发机制来解决差错控制。
- 数据序号采用循环序号机制。
- 应答帧的两种方式:
- 单帧应答:应答序号为某一个正确帧的序号
- 成批应答:应答序号为下一个期望接收的序号
- 通常采用附载应答方式:将数据帧携带应答信息的通信方式称为附载应答。可以把应答帧的序号加在信息帧中一并发送,以提高效率。
-
4.4.4 停等协议效率分析
4.5 连续ARQ协议
4.5.1 连续ARQ协议的工作原理
- 工作原理
- 连续停等协议是指不需要收到应答帧就可以连续不断的发送下面的帧
- 出错后处理
-
全部重发流水线协议
- 当一个帧出错,需要重发出错帧后所有帧
- 接收方的缓冲区数量只需要一个
-
选择重发流水线协议
- 当一个帧出错,只重发出错帧
- 接收方的缓冲区数量足够多
-
-
全部重发流水线协议
4.5.2 连续ARQ协议的定量分析
4.5.3 滑动窗口
- 滑动窗口协议是对连续停等协议的改进,它能够控制已发送但未确认的数据帧的个数(滑动窗口的大小)
-
发送窗口
- 窗口尺寸:允许连续发送未应答帧的个数
- 数据允许发送条件:上界-下界<窗口尺寸
- 窗口滑动的条件:
- 窗口上界滑动:发送数据帧
- 窗口下界滑动:收到应答帧
-
接收窗口
- 窗口尺寸:允许连续接收未处理帧个数
- 数据允许接收的条件:数据序号落在接收窗口中
- 滑动窗口发送的条件
- 发送应答帧后上下界同时移动
-
4.6 选择重传协议
- 窗口大小与序号关系
- n为编号位数,Wr为接收窗口个数
4.7 点对点数据链路接入控制
-
Internet中的数据链路层
- 点到点通信的主要情形
- 路由器到路由器
- 通过modem拨号上网,连接路由器到服务器
-
- 点到点通信的主要情形
4.7.1 串行线路网际协议(SLIP)
- 1984年,Rick Adams提出,RFC1055,发送原始IP包,用一个标记字节(0xC0)定界,采用字符填充技术
- 新版本提供TCP和IP头压缩技术,RFC 1144
- 存在的问题
- 不提供差错检验
- 只支持IP
- IP地址不能动态分配
- 不提供身份认证
- 多种版本共存,互联困难
4.7.2 点到点协议(PPP协议)
- RFC 1661,RFC 1662,RFC 1663
- 提供差错校验、支持多种协议、允许动态分配IP地址、支持认证等
- 以帧为单位发送,而不是原始IP包
- 包括
-
链路控制协议LCP
- 建立、配置和测试多种物理层服务:modem,HDLC串线,SDH/SONET,以太网等
-
网络控制协议NCP
- 建立、配置不同网络层协议
-
链路控制协议LCP
-
PPP的帧格式
- 标记域:01111110,字符填充;
- 地址域:11111111
- 控制域:缺省值为00000011,表示无序号帧,缺省情况下,PPP不提供使用序号和确认的可靠传输;但是在不可靠线路上,也可使用有序号的可靠传输。
- 协议域:指示净负荷中是何种包,比如IP,IPX等。缺省大小为2个字节。
- 净负荷域:变长,缺省为1500字节;
- 校验和域:2或4个字节
-
PPP工作过程
-
简答题
有人认为:每一帧的结束处是一个标志字节,而下一个帧的开始处又是另外 一个标志字节,这种方法非常浪费空间。用一个标志字节就可以完成同样的 任务,这样就可以节省一个字节。你同意这种观点吗?
- 不同意
- 如果一直处于正确地发送或接收数据帧,则一个标志字节可以
- 如果一个数据帧结束后在长时间没有新的帧,则接收方无法得知上一个数据帧是否结束,且接收方无法知道下一个字节是新帧起始位还是路线上的噪声。
奇偶检验的一个改进是按 n 行、每行 k 位来传输数据,并且在每行和每列上加上奇偶位。其中右下角是一个检查它所在行和列的奇偶位。这种方案能够检测出所有的单个、2 位和三位错吗?
- 可以
利用 CRC 方法来传输位流 10011101,假设生成多项式是 CRC-8,请给出实际被传输的位串。如果在传输过程中左边第三位发生错误。试证明:该错误可以在接收方被检测出来。
生成多项式的二进制表示为:100000111,将 10011101 按 CRC 方法除以 100000111 可得余数 11011010,故实际被传输的位串为:1001110111011010。
若左边第三位发生错误,即接收到的数据位串为 10111101,
则接收端对接收的位串重新计算其 CRC 检验值,肯定不等于 11011010。
数据链路层协议几乎总是将检错码放在尾部,而不是头部,请问这是什么原因?
数据帧每经过一跳都会修改其源mac、目的mac以及其他的一些选项,检错码放在尾部可以经过一次扫描前述变化内容进行计算。
试描述滑动窗口是如何实施流量控制的?
- 滑动窗口使用了发送窗口和接收窗口来实施流量控制
- 发送窗口是允许发送的数据帧集合,其大小表明了发送端当前允许的发送能力,每发送一个数据帧,发送窗口上沿向前滚动一个位置,若上沿减去下沿的差值达到窗口的最大值,则发送端停止发送(即使存在待发送数据)
- 发送端一旦接收到某个数据帧的应答,则将下沿向前滚动一个位置,是的发送端重新具备发送能力。
- 在接收端,接收窗口是指接收端允许接收的数据帧集合,接收到数据帧后,接收窗口上沿向前滚动一个位置,一旦数据帧被上层取走后,则窗口下沿向前滚动一个位置,并发送对应数据帧的应答。
一条 3000 公里长的 T1 干线被用来传输 64 字节的帧,通信的两端使用了连续 ARQ 协议。如果信号传播速度为 6μs/公里,则序列号应该设置为多少位?
利用地球同步卫星在一个 1Mbps 的信道上发送 1000b 的帧,该信道离开地球的传播延迟为 270ms。确认信息总是被捎带在数据帧上。头部非常短,使用3b 序列号。在下面的协议中,最大可获得的信道利用率是多少?(a)停等协议;(b)连续 ARQ 协议;(c)选择重传 ARQ 协议。
对应三种协议的发送窗口大小分别为 1、7 和 4。
- 1000b 长的帧需要的发送时间为 1ms。若在 t=0 表示传输开始,则 t=1ms 时第一 帧发送完毕,t=271ms 时第一帧完全抵达接收方。
- t=272ms 时对第一帧的确认帧发送完毕,t=542ms 时带有确认的帧完全抵达发送方
- 因此,发送周期为 542ms。
- 如果在 542ms 内能够发送 k 个帧(发送一个帧耗时 1ms),则信道利用率为 k/542,
- 停等协议,k=1,最大信道利用率=1/542=0.18%;
- 连续 ARQ 协议,k=7,最大信道利用率=7/542=1.29%;
- 选择重传 ARQ 协议,k=4,最大信道利用率=4/542=0.74%;s
上一章:《计算机网络原理》第三章 数据通信技术
下一章:《计算机网络原理》第五章 局域网技术文章来源:https://www.toymoban.com/news/detail-429156.html
❤️这里是 三千步, 让我们一起学习进步~❤️文章来源地址https://www.toymoban.com/news/detail-429156.html
到了这里,关于《计算机网络》第四章 数据链路控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!