一、基本概述:
1、相关名词解释:
链路::网络中两个结点之间的物理通道
数据链路:网络中两个结点之间的逻辑通道,把控制实现数据传输协议的硬件和软件加到链路上就够构成了数据链路
帧:链路层的协议数据单元,封装网络层数据报
2、基本概念:
数据链路层负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传输数据报
二、功能:
1、功能总括:
封装成帧和透明传输 | ||
差错控制 | 位错 | 检错编码 重传帧 |
纠错编码 | ||
帧错 | 定时器、编号机制 | |
流量传输 | 滑动窗口 | |
可靠传输 |
2、概述:
- 为网络层提供服务。无确认无连接服务、有确认无连接服务、有确认面向连接服务(有连接一定有确认!!)
- 链路管理,即连接的建立、维持、释放(用于面向连接的服务)
- 组帧
- 流量控制(限制发送方)
- 差错控制(帧错/位错)
3、功能详情:
封装成帧:
概念:给一段数据添加首部和尾部来组成一个帧。首尾部包含很多控制信息,他们的重要作用:帧定界(确定帧的界限)
注:帧的数据部分<=最大传送单元MTU
帧同步:
接收方应当能从接收到的二进制比特流中区分帧的起始和终止
透明传输:
概念:指不管所传数据是什么样的比特组合,都能够在链路上进行传送,因此,链路层看不到有任何妨碍数据传输的东西
组帧的四种方法:
- 字符计数法(易出错,不常用):帧首部的第一个计数字段(第一个字节,8位)来标明帧内的字符数
- 字符(节)填充法:以一个特定的标志符开始,以及一个特定标志符结尾,中途的所有标志符会被转译成一般的帧
- 零比特填充法:首部尾部的标志符是一样的,中间的数据部分:在发送端,扫描整个信息字段,只要连续5个1,就立即填入1个0(不管五个1后面跟的是不是0);在接收端,收到一个帧时,先找到标志符确定边界,再用硬比特流进行扫描,发现连续5个1时,就把后面的0删掉(发送端的逆过程)
- 违规编码法:用编码中不会用到的编码方法来定界帧的起始和终止,例如:曼彻斯特编码中用”高-低“或者”低--高“表示0或1,那就不会用到”高-高“或者”低-低“,那么就可以用”高-高“或者”低-低“来界定帧的起始和终止
注:比特填充法和违规编码法更为常用
差错控制
差错来源:噪声引起的 | ||
全局性 | 原因:线路本身电气特性所产生的随机噪声(热噪声),是信道固有的随即存在的 | 解决办法:提高信噪比来减少或避免干扰(对传感器下手) |
局部性 | 原因:外界特定的短暂原因所造成的冲击噪声 | 解决办法:利用编码技术 |
差错类别 | |
位错 | 比特位出错,1变0,0变1 |
帧错 | 丢失:收到[#1]-[#3] |
重复:收到[#1]-[#2]-[#2]-[#3] | |
失序:收到[#1]-[#3]-[#2] |
1、检错编码
检错方法 | 原理 | 特点 |
奇偶校验码 | 发送数据时,发送方根据所选的校验方式(奇或偶),计算数据中1的个数; 根据这个数量,发送方在数据后附加一个校验位:
| 只能检查出奇数个比特错误,检错能力50% |
CRC循环冗余码 |
| 能实现无比特差错的传输,但这不是可靠传输(可靠传输:数据链路层发送什么,接收端就手到什么) |
2、纠错编码
海明码:
流量控制
使用背景:较高的发送速度和较低的接受能力的不匹配,会造成传输出错,故需要进行流量控制
方法:
停止-等待协议 | 每发送完一个帧就停止发送,等待对方的确认,在收到确认后再发送下一个帧 | 发送窗口大小=1,接收窗口大小=1 |
滑动窗口协议 | 后退N帧协议 | 发送窗口大小>1,接收窗口大小=1 |
选择重传协议 | 发送窗口大小>1,接收窗口大小>1 |
可靠传输机制
发送端发啥,接收端收啥