数据链路层
数据链路层的功能
数据链路层使用的物理层的功能-> 提供媒介过来的比特流
可能由出错的比特流改造成逻辑上的无差错的数据链路,使得其对网络层表现为一条无差错的链路
-
网络层服务
1) 无确认无连接服务,丢失帧给上层处理,适用于实时误码低的以太网 2) 有确认无连接服务,可以重传丢失帧,适用于误码率高的通信信道,无线通信等 3) 有确认面向链接服务, 数据链路,传输帧,释放数据链路。每一帧都确认后发送下一帧,服务使用通信要求高的场合
-
链路管理
数据链路的建立,维持,释放的过程 确认双方就绪态,帧序号初始化。
-
流量控制
鉴于速率和缓存的差异,可能造成发送接受双方的能力不相同的情况。发送速率不可以超过接受的能力 否则会出现帧丢失,通过反馈机制里列岛对方能否跟上自己,决定是否继续发送或者暂停发送。 高层中也有流量控制的功能,但是对象不一样,链路层控制的像相邻两个节点之间的流量。
-
差错控制
由于噪音等原因,帧在传送过程中可能会出现错误,需要发送方确定接送放时候收到正确的数据为差错控制。 通常使用循环冗余校验(CRC)方式发现位错, 通过自动重传请求 ARQ来重传出错的帧。 发现错误就丢弃帧,发送发感受到超时则重新发送帧
-
帧定界,同步与透明传输
将网络层来的分组封装成帧,将一段数据的前后分别添加首部和尾部。这些控制信息重要作用确定帧的界限。区分出帧的起始和中止 例如在HDLC通信规程中,用标识符F(01111110)标识帧的开始和结束。
|标志|地址|控制|信息|帧校验序列|标志|
|:-😐:-😐:-😐:-😐:-😐:-😐:-😐
|01111110|8位|8位|N位|FCS 16位|01111110|
组帧的4中方法
-
字符计数法:
在帧头部使用一个计数字段来表示帧内的字符数,接收到帧就知道后面跟随的字节数。确定帧结束的位置,计数字段本身包含占用的一个字节。
缺点: 如果技术字段出错,失去了帧的边界。双方同时失去同步,造成灾难后果 -
字符填充首位界定方法
特定的字符串表示帧的开始与结束 DLE STX 与 DLE ETX; 为了使得信息为中特殊字符不被五诊断位帧的首位界定符,
填充一个转义字符DEL来区分 来实现字符的透明传送 -
零比特填充首尾标记法
允许数据帧包含任意个比特,允许每个字符编码任意个比特,使用特定的比特模式 01111110表示一帧的开始与结束
为了不使信息位中出现的比特流01111110被误判位首位标志,会在发送方的数据链路中遇到5个连续1的时候插入一个0,接收方逆操作
很容易由硬件来实现,所以性能由于字符填充法 -
违规编码法
在物理层进行比特编码时,经常使用违规编码发,例如将比特数据1编码成 高-低电平, 高高电频和低低电平是违规的
使用违规电平界定帧的起始与中止, IEEE802 就是采用这种编码方式。
不需要采用任何填充技术,就可以实现传输透明性,只适用于冗余编码的特殊环境。
差错控制
在传输过程中,收到影响0变成1,1变成0 称之为比特差错。仅仅讲比特差错;
-
检错编码
检错编码都采用了冗余编码技术,核心思想就是在有效数据被发送前按一定的关系附加冗余位,构成符合某一个规则的码字后再发送;
常见的由奇偶校验码和循环冗余码 CRC 。 -
纠错编码 海明码:
D4 D3 D2 P3 D1 P2 P1
1) 确定位数 n 位有效位,k校验位 n+k<= 2^k -1 如果需要检测两位错误,增加一个校验位k+1
2) 位置分布,都在数据的Pi在2^(i-1) 位置上。
3) 分组形成校验关系;根据数据放在的位置上,决定由那个P相关
4) 校验位取值: Pi对于位置与Pi相关的数据位全部求XOR
5) 校验原理: S1=Pi XOR 所有相关数据位。 000 表示无错,有位数就说明了位置错了
海明距离
为了检测d位的错误,需要d+1距离的海明编码
为了纠错d位的错误,需要2d+1距离的海明编码
流量控制和可靠性的机制
流量控制主要是控制发射端的流量速率,让接收端有足够的缓存接收数据。
常见的两种控制方法 :
停止-等待流量 控制基本原理; 发送方每发一帧,都要等待接收方的应答信号。 之后才可以发送下一帧;
每次只发送一帧,陷入等待接受方的确认小心过程中,传输效率很低。
滑动窗口流量控制原理; 任意时刻发送方都维持一组连续的允许发送的帧的序号,发送窗口;
接受方也维持一组连续的允许接受帧的序号,叫做接受窗口
发送窗口的size可能是多个,未收到确认的情况下可以发送的帧序号
接受窗口size,Wr ,收到一个消息,移动一位,返回一个确认信号。
特点:
1. 只有接收窗口向前滑动,发送窗口才有可能滑动
2.1 停止-等待协议: 发送窗口=1,接受窗口=1
2.2 后退N帧协议: 发送窗口>1,接受窗口=1
2.3 选择重传协议: 发送窗口>1,接受窗口>1
3. 接收窗口=1.保证帧的又须接受
4. 窗口在滑动中,大小是固定的
- 单帧滑动窗口
可能的错误种类:
- 传输的帧丢失
- 传输的帧破坏
- 确认帧破坏
-
多帧滑动窗口 、 后退N帧协议 GBN
发送方可以连续的发送窗口内的帧。发送最后一个正确接受的信息帧之后所有违背i确认的帧。
判定前一个帧超时后没有返回消息,重传出错帧和随后的N个帧。
接收端不一定每次都发送一个确认信号,可以接受了好几个正确的数据帧后发送一个最后收到的正确的帧的确认信号,可以减小开销
ACKn表示对n帧的确认。 如果对n比特对帧编号,发送窗口的尺寸 大于等与1 小于等与2的N次方-1
提高了信道的利用率。 但是重传又必须把已经正确的数据帧重传。 当误码率比较大的时候不一定优于停止 - 等待协议 -
多帧滑动窗口与选择重传协议 SR
进一步提供信道的利用率,只重传出现差错的数据帧或者计数器超时的帧。 但是必须增加接受窗口的,以便于接受序号不连续但是仍然处于接受窗口中的那些帧。
发送否定帧NAK,让发送帧重传。 接受窗口 + 发送窗口 <= 2^N; Wr不应该超过Wt; 因此Wtmax = Wrmax=2^(n-1)
一般情况下 协议中的窗口大小是相同的 ; 缓冲区的大小等与窗口的大小而不是编号的大小;信道效率=信道利用率 = (L/C)/T; 一个发送周期T,T内发送的L比特的数据,传输率位C;
一些习题练习
-
已经知道主机甲乙使用GBN协议传输协议,甲发送窗口尺寸1000,数据帧长1000字节,信道带宽 100Mb/s,
乙收到一个帧便返回一个短帧确认忽略时间,单项传播时延50ms,求最大平均数据传输率?解答: 首先计算发送时延: Ttrans= 1000Byte * 8 bit/Byte / 100 Mb/s = 80 us;
发送一个帧的时间得到确认总时间 0.1s + 80 us =0.1 s
最大传输率= 1000B *1000 /0.1 S = 10 MB/s = 80 Mb/s -
主机甲通过128kb/s 卫星链路通过滑动窗口协议向乙发送数据,单项传播时延250ms,帧长1000B,不考虑确认帧开销
为师的链路利用率大于80% 帧需要的比特数在至少是 ?解答: 确定帧序号的大小,首先确认窗口的大小;假设窗口大小位S , 传播时延 1000B8b/B / 128 kb/s = 0.0625 S
T 传播周期 = 0.0625 + 2 0.25 = 0.5625 ; 传输率 L/T >= 128 kb/s * 0.8 ;
L>=7200 B, 至少7.2帧,2^n-1 >=7.2 至少需要 4 位