一、数据链路层的功能
1、成帧方式(最关键是帧定界)
接收方必须能从物理层接收的比特流中明确区分出一帧的开始和结束,这个问题被称为帧同步或帧定界
(1)字节计数法
(2)带字节填充的定界符法
定界符FLAG:是一个特殊的字节。
- 收到ESC,则后一字节无条件成为有效载荷,不予检查
- 收到FLAG,则为帧的边界
问题:有效载荷部分与定界符一样,那么需要转义字节,如果在和内容与转移字节、定界符都有相同等等会造成资源的浪费。
(3)带比特填充的定界符法
定界符为01111110,两个0中6个1.
- 发送时,有效载荷部分每出现5个1,无条件插入一个0.
- 接收时,没接收到五个1,无条件将后一个0去掉。如果是1,那么与再后一个组成定界符,一帧结束。
(4)物理层编码违例
- 核心思想:选择的定界符不会在数据部分出现
2、差错控制和纠正 【掌握差错检测和纠正的基本原理和典型的编码方法(核心内容)】
(1)概念
链路层存在的一个问题:信道的噪声导致数据传输问题
差错( incorrect ):数据发生错误
丢失( lost ):接收方未收到
乱序(out of order):先发后到,后发先到
重复(repeatedly delivery):一次发送,多次接收
解决方案:差错检测与纠正、确认重传
确认:接收方校验数据(差错校验),并给发送方应答,防止差错
定时器:发送方启动定时器,防止丢失
顺序号:接收方检查序号,防止乱序递交、重复递交
(2)概述
- 通常使用增加冗余信息(或称校验信息)的策略。
- 于是目标就是:保证一定差错检测和纠错能力的前提下,减少冗余信息量
两种策略
①纠错码:接收方能判断数据是否有错,并能纠正错误。
- 通常使用在错误发生比较频繁的信道上,如无线链路
- 也经常用于物理层,以及更高层(例如,实时流媒体应用和内容分发)
②检错码:接收方可以检测到错误,让发送方重传。
- 主要用在高可靠、误码率较低的信道上,例如光纤链路
其余小概念
(3)检错码
①奇偶校验
在发送数据最后增加一位校验位。
②校验和
Internet校验和(4位字)
使用Internet校验和(4位字)来发送一个消息1001110010100011.试问校验和的值是什么?每四位相加后取反。
③循环冗余校验CRC
设原始数据D为k位二进制位模式,如果要产生n位CRC校验码,事先选定一个n+1位二进制位模式G (称为生成多项式,收发双方提前商定),G的最高位为1
将原始数据D乘以2n (相当于在D后面添加 n 个0),产生k+n位二进制位模式,用G对该位模式
做模2除,得到余数R(n位,不足n位前面用0补齐)即为CRC校验码
(4)纠错码
①海明码:1、2、4、8
②RS码(之后补充)
3、流量控制
2.提供的服务:
二、基本的数据链路层协议
数据传输的可靠的四个条件:(1)数据是按序的。(2)数据是无差错的。(3)数据是无丢失的。(4)数据是无重复的.
1.无错信道和有错信道上的停等协议 【掌握无错信道和有错信道上停等协议的设计和实现方法(核心内容)】
(1)无错信道上的停-等式协议(stop-and-wait)
- 发送方发送一帧后暂停,等待确认(Acknowldgement)到达后发送下一帧
- 接收方完成接收后,回复确认接收. • 确认帧的内容是不重要的:哑帧(dummy frame)
(2)有错信道上的停等式协议:比无错多了一个timer
2.滑动窗口协议掌握回退N和选择重传两种典型滑动窗口协议的工作机制(核心内容)
(1)回退N协议(GBN):Wr=1 ; 1<Wt<2n-1
-
连续发送n个帧,Wr收到一个返回一个此时位置的确认,往右滑一个。Wt收到一个ack,往右滑动一个。
-
例子:1、2、3、4、5个帧传,3没传到,那么4和5即使传到了,返回的ack也是接收到帧2,系统默认从3开始都没有接收到,仍然从帧3开始重传。