3.1 数据链路层功能
3.1.1 为网络层提供服务
- 无确认的无连接服务:不需要建立链路连接,接收到数据后不需要确认。适合实时通信或误码率低的信道,例如以太网
- 有确认的无连接服务。适用误码率较高的通信信道,例如无线信道
- 有确认的面向连接服务。适合可靠性和实时性要求较高的场合
有连接就要有确认,不存在无确认的面向连接服务
3.1.2 链路管理
3.1.3 帧定界、帧同步和透明传输
- 主机传送消息需要将网络层的分组封装成帧
- 需要在数据的前后添加首部和尾部,构成帧
- 透明传输:无论数据是什么比特组合,都能在链路上传输(不和其他控制字符冲突
3.1.4 流量控制
限制发送方的数据流量,使其不超过接收方的接受能力
3.1.5 差错控制
- 位错:CRC(循环冗余校验)+ARQ(超时自动重传)
- 帧错:引入定时器和编号
3.2 组帧
3.2.1 字符计数法
在帧头部用一个计数字段标明帧内字符数。例如:54321为一帧,5表示帧内有五个字符
3.2.2 字符填充的首尾定界符法
- 用特定字符来确定一帧的开始和结束
- 信息位中出现同样的特定字符时,前面插入一个转义字符ESC来区分
- 如果ESC也出现在信息位中,同样前面插入一个ESC
3.2.3 零比特填充的首尾标志法
- 用01111110表示帧的开始和结束
- 信息位中,每出现五个连续1,在后面插入一个0
HDLC采用这种方法(大纲已删)
3.2.4 违规编码法
用违规编码序列来界定帧的起始和终止
3.3 差错控制
3.3.1 检错编码
- 奇偶校验码
- CRC循环冗余校验:给定m位帧,生成多项式G(x)(r阶),帧模二除G(x)得到r位余数。传m+r(数据+余数)位比特
CRC过程:
约定生成多项式 G(x)=1101= x 3 + x 2 + 1 x^3+x^2+1 x3+x2+1,r=3 三阶
待传送数据 M=101001 进行模二除
余数001
那么发送 101001 001
3.3.2 纠错编码
海明码
- 确定位数: n n n位有效信息, k k k位校验码,需要满足 n + k ≤ 2 k − 1 n+k≤2^k-1 n+k≤2k−1,可以纠正一位错误
- 校验位分布: P i P_i Pi分布在 2 i − 1 2^{i-1} 2i−1位置上
- 分组形成校验关系:被校验数据位的海明位号=校验该数据位的所有校验位海明位号之和
- 校验位取值: P i P_i P