1 基本概念和功能概述
1.1 基本概念
1.2 功能概述
因为物理层可能会把数据弄丢,所以数据链路层需要进行一些设置来使得物理层可以可靠的传输数据。
2 基本问题
2.1 封装成帧与透明传输
将网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束。
透明表示一个实际存在的事物看起来好像不存在一样。
2.2 组帧的四种方法
2.1.1 字符计数法
缺点:记数字段丢失后,容易造成数据错乱。
2.1.2 字符填充法
加头字段与尾字段分别标记开始与结束,并且头字段与尾字段不同。
如何解决帧中出现的与标记字段相同的问题呢?解决方法:添加转义字符。
2.1.3 零比特填充法
2.1.4 违规编码法
例如曼彻斯特编码中不会使用高-高、低-低来表示,所以如果使用高-高、低-低来表示帧起始和终止就不会与数据冲突。
3 差错控制
3.1 差错
检验和纠正差错的编码方法主要有检错编码与纠错编码:
3.2 检错编码
3.2.1 奇偶校验码
缺点:只能校验奇数个错误,不能检验偶数个错误。
3.2.2 循环冗余码CRC
用传输数据除以生成多项式得到冗余码,最终发送的数据=要发送的数据+帧检验序列FCS。
举一个例子:要发送的数据是1101 0110 11,采用CRC校验,生成多项式是10011,那么最终发送的数据是?
FCS的生成以及接收端CRC检验都是由硬件实现,处理很迅速,因此不会厌恶数据的传输。
3.3 纠错编码(海明码)
海明码可以发现双比特错误,纠正单比特错误。
海明码纠错详解可参考最通俗易懂的海明码校验纠错讲解一文。
4 流量控制和可靠传输
4.1 概述
- 流量控制的基本方法是由接收方控制发送方发送数据的速率
- 常见的流量控制方式有两种:
停止-等待协议与滑动窗口协议
。
停止-等待协议:发送窗口大小=1,接受窗口大小=1;
后退N帧协议(GBN):发送窗口大小>1,接受窗口大小=1;
选择重传协议(SR):发送窗口大小>1,接受窗口大小>1。