思维导图:
一、 数据链路层概述
保证数据传输的有效、可靠
- 差错检测和控制
- 流量控制
- 基于速率
- 基于反馈
帧(frame) = 帧头(head)+ 载荷 (payload field)+ 帧尾(Trailer)
- head中有物理地址,trailer中有校验
成帧
- 将原始的位流分散到离散的帧中
四种成帧的方法
1. 字符统计法
- 在每个帧中第一个字段,标识长度。缺点:一旦出错,无法恢复
2. 字节填充的标志字节法
- 考虑了重新同步问题,每一帧采用一个特殊字节做帧界
- 标志/标记字节(flag byte)
- 传输数据中有特殊字节时,可以在前面加上转义符
3. 比特填充的标志比特法
- 位填充法(零比特填充法/透明传输)
- 以01111110作为帧界,如果数据中出现该子段,在第五个1后面加上一个0即可
4. 物理层编码违例法
- 使用冗余信号,作为帧界
- 如:4B/5B编码,32个模式只用了16个,剩下的作帧界
二 、差错处理概述
错误类型
- 单个错误
- 突发错误
处理类型
- 纠错:能够恢复正确,主要用于无限网络
- 检错:仅仅检测出错误,不恢复,通常伴随重传,主要用于以太网
码字
- 包含数据位和校验位的n位单元(模式)
海明距离
- 两个码字之间不同位的数目,可用异或计算
- 全部码字海明距离,取最小值
- 海明距离为d+1的编码能检测出d位差错,如奇偶校验码,海明距离为2,可检测1位数字
- 海明距离为2d+1的编码,能纠正d位差错。如:海明距离为5,可纠正2位的数字
- 接受方与合法码字校验,取海明距离最小的那个合法码字
三、纠一位错的海明码
纠一位错需要的冗余位跟数据位的关系
,
从而得到:
其中,r:冗余位,m:传输数据数目
校验位:凡是编号为2的乘幂的位
- 校验位:1、2、4、8、16、32
- 数据位:3、5、6、7、9、10、11
校验位可以设置,依据为包括自身在内的一些位的集合的奇偶值
- 将某一位数据位的编号展开成2的乘幂的和,那么每一项所对应的位即为该数据位的校验位(收方使用),反过来,校验位的校验集合也包括这个数据位
- 如:11 = 1 + 2 +8 ,29 = 1+ 4 + 8 +16
- 校验位1的校验集合为所有奇数位;校验位为2的校验集合:2、3、6、7、10、11
具体流程
- 发送方:根据校验集合填充校验位;数据直接填入数据位
- 接受方:根据校验集合判定校验位是否出错,出错的位编号累加到计数器中。计数器为0,就没出错,否则相应的位数出错。
可以用其解决一些突发性错误
- 如,在k行,m+r列,按照列发送数据。纠正的突发性错误的个数小于等于发送矩阵的行数k
四、检错码
常见的检错码
- 奇偶校验和
- 奇偶取值等同于对数据位进行模2和运算
- 互联网校验和
- 校验和:进行模2加运算
- 追加到报文尾部
- 16位互联网校验和
- 循环冗余校验和
循环冗余检错码CRC
- 工作原理:K位的帧 = K-1 次的多项式
- 如1011001,(6阶7项多项式)
- 生成多项式:G(x),G(x)为r阶
- m位帧的多项式:m > r , M(x) > G(x)
发送方:发送的码字就是被除数减去模2除法的余数
发送方:判定余数是否为零,为零就无错误
模2运算,等同于异或运算
生成多项式国际标准,通常采用CRC32标准:
五、基本数据链路协议
协议一(无限制的单工协议)
- 数据单项传递
- 收发双方的网络层都处于就绪状态(随时待命)
- 处理的时间可以忽略不记(瞬间完成)
- 可用的缓存空间无穷大(无限空间)
- 信道不损坏、不丢帧(完美通道)
协议二(半双工)
- 取消接受方无限量允许发送
- 接受方能够接收,就向发送方发送哑帧
协议三(肯定确定重传)PAR(Positive Acknowledgement with Retransmission)
也可叫做自动重传请求,ARQ(Automatic Repeat ReQuest)
- 取消完美信道——有噪声
- 接收方采用对正确帧的确认
- 发送方启动一个定时器,过时就重传
- 每个帧具有一个独一无二的序号,可以用来重排、重组和防止重复接收
以下途径可提高效率:
- 使用全双工(双方既可以是发送方,又是接收方)
- 捎带确定——确认帧搭上外发的数据帧,启动一个捎带确认的定时器
- 批发数据,也叫管道化的数据
六、滑动窗口协议 ——协议四
发送窗口:已经发送,未被确认
接收窗口:期待被接收的帧的序列号
- 发送窗口在规定时间内,没收到确认,导致重复发送,可以工作,但是浪费信道
- 协议四,有了一个假设:忽略接收方处理到达帧的时间,RTT(Round Trip Time)来回时间,发送方,发出帧后,等待确定的这段时间,被阻塞
提高带宽的利用率——批量发送
- 信道容量:一帧从发出到目的期间,信道上能够容纳的帧数量
- 带宽延迟积:B*D
- 窗口值:W = 2*BD + 1,实际情况W比计算出来的值小
出错处理策略
- 丢弃出错帧和后续帧——协议五
- 重传出错的帧——协议六
小结
七、回退n帧——协议五
适合出错率较少的高速信道
- 有一个隐含的接收窗口
- 定义序列号seq的取值范围和滑动窗口W
- 发送方连续发送至发送窗口满
- 接收窗口为1,对出错帧不确认(引发超时)
- 发送方超时重传,从未被确认帧开始
发送方和接收方
注意:
- 采用统计确认,发送方一直保存着未被确认的帧
- 滑动窗口长度(发送窗口): W <= MAX_SEQ,防止确认帧的情况混淆
八、 选择性重传——协议六
工作原理
否定确认NAK:接收方发送帧要求重传出错帧
回退n帧和选择性重传的比较
窗口选择
- 发送窗口: W = (MAX_SEQ + 1) / 2
- 发送窗口通常小于接收窗口
三个协议窗口大小比较