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