一、数据链路层的功能
二、差错的产生原因和控制方法
三、数据链路层使用的最重要的协议——HDLC协议
四、数据链路的工作过程
五、滑动窗口协议
六、点-点协议PPP
通信开始前,要建立数据链路连接;数据传输过程中,维护数据链路连接;通信结束后,释放数据链路连接。
数据链路层的传输数据单位是帧,物理层的比特流封装在帧中进行传输,帧同步指的是:接收端能从收到的比特流中正确的判断一帧的开始为和结束位
发送端发送数据超过物理线路的传输能力或者超出接收端的帧接受能力时,就会发生链路阻塞。流量控制就是为了防止出现链路阻塞
将有差错的物理线路改进为无差错的数据链路,向网络层提供高质量的数据传输服务
不管传输数据的比特是什么样的组合,都应当能在链路上传送
多点连接时,为了保证每一帧都能传送到正确的接收端,因此数据链路层必须有寻址的能力
差错是不可避免的,而且不同的传输介质的差错程度也不相同,数据链路的任务就是分析差错产生的原因与类型,研究检查是否出现差错,如何纠正差错。
当数据信号从发送端出发到物理线路时,由于物理线路存在噪声,因此数据信号经过物理线路到达接收端时,接收信号必然是数据信号和噪声信号的叠加,这就是差错的产生原因。
误码率(Pe):指二进制比特在数据传输系统中被传错的概率
N为传输的二进制比特总数,Ne为传错的比特数
差错控制:检测和纠正 比特流传输错误的方法,目的是为了减少物理线路的传输错误
差错控制的两种策略:
纠错码:每个传输的分组带上足够的冗余信息,接收端能发现并自动纠正传输差错
检测码:分组仅包含足以使接收端发现差错的冗余信息,接收端能发现出错,但不能确定哪一比特是错的,并且自己不能纠正传输差错
纠错码实现困难,而检错码方法虽然可以通过重传机制达到纠错目的,但是实现简单,所以广泛采用检错码策略。
检错码又分为两种,奇偶校检码和循环冗余编码,而循环冗余编码是广泛使用的检错码方法,它检错能力强,实现容易。
循环冗余编码(CRC)的工作原理:
举例:发送数据110011
1. 约定G(x)=x4+x3+1,则对应G(x)的二进制代码为: 11001(N = 5,k = 4)
2. 发送数据比特序列为110011,其对应的多项式为f(x)=x5+x4+x1+1
3. G(x)的最高次幂为4,f(x) * x4 = 1100110000
4. f(x) * xk/G(x),余数为:R(x) = 1001
5. 将f(x) * xk+R(x)作为整体,发送到接收端:1100111001
6. 接收端解码:1100111001 / 11001 = 0,说明传输成功
数据链路层协议中,面向比特型协议有两种比较重要的:
1. HDLC协议
2. 点-点协议PPP
其中HDLC协议是最重要的!
数据链路有两种配置方式:非平衡配置和平衡配置
非平衡配置的特点:主从站结构(这是和平衡配置的区别),主站发出命令,从站接受命令,发出响应
非平衡配置的结构:点-点连接和点-多点连接
非平衡配置有两种数据传输方式:
1. 正常响应模式:主站可以随时向从站传输数据帧,从站只有在主站向它发送命令帧进行探询(poll),从站响应后才可以向主站发送数据帧。
2. 异步响应模式:主站和从站可以随时相互传输数据帧;从站可以不需要等待主站发出探询就可以发送数据;主站仍负责数据链路的初始化、链路的建立、释放与差错恢复等功能
网络层传输的数据就封装在信息字段I中。
前面我们说到帧同步,指的是接收端能从收到的比特流中正确的判断一帧的开始为和结束位,而标志字段就是用来标记帧的开始和结束。
透明传输问题:
这里会出现一个问题,假如我们定“01111110”为标志字段,那么可能信息字段会出现与该标志字段相同的比特码,结果就会导致误认为这个是帧结束的标记。
0比特插入/删除法解决透明传输问题:
发送端在两个标志字段之间的比特码中,检查出5个连续的1,不管后面的比特位是0还是1,都插入一个0比特,保证不会出现连续的6个1(对应标志字段01111110)。
接收端接受帧后,对两个标志字段之间的比特码,检查出5个连续的1,就把后面的0比特删除,这就还原成原来的比特序列
当使用非平衡方式传送数据时,地址字段填从站地址
当使用平衡方式传送数据时,地址字段填应答站地址
如果地址字段全为1,表示广播地址,网中所有站都要接受该帧
HDLC帧中很多重要的功能都是靠控制字段来提供,根据最前面两个比特的取值,HDLC帧可以分为下面三类:
传送的数据(比特码)
HDLC采用CRC校检方式
(1)N(S)和N(R)的意义
N(S) — 当前发送的信息帧的序号
N(R) — 该站已正确接收序号为N(R)-1的帧及以前各帧,表示下一次希望收到序号为N(R)的帧
(2)P/F的意义
P/F指探询/终止位,如果P/F = 0,表示没有什么意义;如果P/F = 1,则有比较多注意的地方:
- 正常响应模式中,只有主站向从站发送“探询”后,从站才能向主站发送信息,此时主站的帧探询位=1
- 从站接收到帧,发现探询位为1,如果从站要发送信息给主站,则从站的帧发送的最后一帧置终止位为1,表示发送结束
- P = 1 和 F = 1在帧交换中要成对出现
(3)信息帧的表示:
监控帧的前面两位为10,决定监控帧不同类型的是第3,4位比特
(1)RR,RNR,REJ用于拉回重传方式,SERJ用于选择重传方式(拉回重传和选择重传接下来会讲到)
(2)所有的监控帧都不包含传输的数据
数据链路的工作过程分为三个阶段:建立数据链路,帧传输,释放数据链路
结合数据链路和物理层的流程:
(1)数据链路建立
主站发送 置正常响应模式SNRM帧 向从站请求建立数据链路,如果从站同一,发送无编号确认UA帧回主站,于是建立成功
(2)数据帧传输
这里就结合上面信息帧介绍的来理解,从图中可以看出,P和F是成对出现的,主站发出探询位P=1,从站才能发送信息帧,并且以终止位F=1结束。
(3)释放数据链路
主站发送无编号拆链帧,从站同一拆链,发送无标号确认帧回给主站,释放成功
前面提到了用检错码来检测帧传输中是否发生了错误,如果发生了错误,就需要通过滑动窗口协议来解决。
数据链路层的差错控制与流量控制采用了滑动窗口协议。
发送端每次发送1帧之后,需要等待接收端返回确认帧,如果接受到ACK,表示传输成功,发送下一帧;如果接收到NAK,表示传输错误,重新发送此帧
多帧连续发送有两种类型,后退N帧(GBN)拉回重发方式和选择重发(SR)方式
只要有一个帧发送失败,则当前发送的全部帧都重新发送,这样导致的问题就是会发送许多重复帧,流量控制不好
选择重发和拉回重发的区别在于,当前发送的帧中出现某个帧传输错误后,在下一次发送时只是重新发送该错误的帧
在GBN和SR中,发送端可以连续发送多个数据帧,从流量控制的角度出发,发送端连续发送数据帧的数量必然会收到限制:
1. 接收端的缓冲区可以用于接受新的帧的容量
2. 接收端处理数据帧的速度
3. 接收端需要等待重传的帧的数量
引入滑动窗口的目的:对可以连续发出的最多帧数(已发出但未确认的帧)作限制
发送窗口(Ws):表示在收到对方确认的信息之前,以连续发出的最多数据帧数
接受窗口(Wr):可以连续接收的最多数据帧数(只有序号在窗口内的帧才可以接收,否则丢弃)
点-点协议PPP:特点是简单,适用范围广,广泛应用于广域网环境中路由器-路由器连接,以及家庭用户接入Internet之中,成点-点线路中应用最多的数据链路层协议
PPP链路的建立过程:
1. 每一个端主机首先发送LCP帧,以建立、配置和测试PPP链路
2. 链路建立后,每一个主机发送NCP帧,以选择和配置网络层协议
3. 当网络层协议配置好后,网络层的数据通过PPP信息帧传输
在建立PPP数据链路时,需要进行认证,认证主要有两种协议:
口令认证协议(PAP):明文传输账号密码,容易被窃听,是一种不安全的认证协议
查询握手认证协议(CHAP):使用MD5加密账号密码,并且通过三次握手来启动CHAP的认证过程,是一种安全的认证协议