第三章 数据链路层(6学时)
本章概述:
数据链路层主要内容为: 两台相邻机器之间实现可靠、有效的通信而涉及到的一些算法。所谓相邻,意思是指两台机器通过一条通信信道连接起来,这里的通信信道在概念上就像一条线(比如同轴电缆、电话线或者点到点的无线信道)。一条信道像一条线, 这也暗示了它的一个本质特性, 即在一条信道上递交的数据位的顺序与发送的顺序完全相同。
相邻机器的通信并不简单, 影响因素有: 通信线路的偶尔错误, 通信线路的数据传输率有限, 传输延迟等. 所以协议必须考虑这些因素的影响.
数据链路层的任务是将物理层提供的原始位流转换成可供网络层使用的帧流。数据链路层用到了各种成帧的方法,包括字符计数法、字节填充法和位填充法。数据链路协议可以提供错误控制能力,以便重传损环的或者丢失的帧。为了避免快速的发送方淹没一个慢速的接收方, 数据链路协议还要提供流控制功能。滑动窗口机制是—种被广泛使用的技术,它可以方便地将错误控制和流控制结合在一起来考虑。
滑动窗口协议可以按照发送方的窗口大小和接收方的窗口大小来进行分类。当两个窗口的大小都是l的时候,滑动窗口协议变成了停—等协议。当发送方的窗口大于1(例如,为了避免发送方由于长的传输延迟而阻塞线路)的时候,接收方可以有两种实现办法:除了下一个顺序帧以外其他的帧都丢弃;或者将所有乱序的帧都缓存起来,一直到需要这些帧的时候。 3.1 数据链路层设计要点
数链层基本功能: 向网络层提供一个定义良好的服务接口; 处理传输错误; 调节数据流, 防止淹死接收方.
图3.1 分组和帧之间的关系
? 3.1.1为网络层提供服务
图3.2 (a)虚拟通信过程; (b)实际通信过程
1
图3.3 数据链路层协议的位置
? 3.1.2成帧 1.字符计数法
在帧头中用一个域来表示整个帧的字符个数 缺点:若计数出错,对本帧和后面的帧有影响
图3.4 一个字符流 (a) 无差错 (b) 有一个差错
2.带字符填充的首尾字符定界法
缺点:局限于8位字符和ASCII字符传送。
图3.5 (a) 有标志字节作为分界的帧; (b) 字节填充前后的4个字节序列例子
2
3.带位填充的首尾标记定界法
- 帧的起始和结束都用一个特殊的位串“01111110”,称为标记(flag) - “0”比特插入删除技术
图3.6 位填充 (a) 原始数据; (b) 线路上的数据; (c) 删除填充之后存储在接收方存储器中的数据
4.物理层编码违例法
802 LAN:曼彻斯特编码或差分曼彻斯特编码用high-low pair/low-high pair表示1/0,high-high/low-low不表示数据,可以用来做定界符。
注意:在很多数据链路协议中,使用字符计数法和一种其它方法的组合。
? 3.1.3 错误控制
帧完全丢失
一般方法:接收方给发送方一个反馈(响应)。
接收方反馈接收情况信息?确认: 肯定性确认 否定性确认 出错情况
- 帧(包括发送帧和响应帧)出错;
- 帧(包括发送帧和响应帧)丢失 ?计数器(计时用) - 收到重复帧?帧编号
通过计时器和序号保证每帧最终交给目的网络层仅一次是数据链路层的一个主要功能。
? 3.1.4流控制
淹没问题, 两种流控制策略: 基于反馈的流控制 和 基于速率的流控制(第5章讲) 3.2 错误检测和纠正
? 差错出现的特点(错误分为两种):随机的, 单个位, 孤立的错误,
连续突发(burst) 一次连续许多位错误 更难以纠正
? 处理差错的两种基本策略
- 使用纠错码:发送方在每个数据块中加入足够的冗余信息,使得接收方能够判断接收
到的数据是否有错,并能纠正错误。
- 使用检错码:发送方在每个数据块中加入足够的冗余信息,使得接收方能够判断接收
到的数据是否有错,但不能判断哪里有错。
? 纠错码(error-correcting code), 技术上又称为前向纠错(forward error correction)(适用于低可靠性
信道—无线链路, 在数据块中加入足够冗余信息, 减少重传, 因重传也可能是错误的)
- 码字(codeword):一个帧包括m个数据位,r个校验位,n = m + r,则此n比特单元
3