数据链路层理解和掌握的知识点
数据链路层基本概念和功能概述
基本概念:
功能概述:
封装成帧
封装成帧
透明传输
简单来说:就是通过网络层传下来的数据(IP数据报)进行再一次封装成帧数据,添加首部和尾部信息,然后传给发送方的物理层,物理层通过比特流的方式在信道上传输,然后到达接收方的物理层,物理层再发送给上面的数据链路层,通过帧定界的方式来识别一个帧的开始和结尾。
帧定界(成帧的几种方法)
- 字符计数法
字符计数法:通过第一个字节来表示一个帧的长度。
缺点:当一个帧的第一个字节发生错误,那么后面的所有帧数据识别错误,引发灾难后果。
- 字符填充法(也叫字符填充的首位定界符法)
字符填充法:通过一个特定的字符来规定一个帧的开始和结束,当帧中间的数据出现和首尾一样的数据的时候,填充一个ESC转义字符来告诉接收方的数据链路层,表示这是一个数据部分,而不是开始和结尾。
- 零比特填充法
零比特填充法:5110;先找到帧的开始和结束,然后在数据部分,只要是5个1,那么就添加一个0,即使5个1后面是一个0,我们依然添加一个0。到接收方的数据链路层通过零比特填充法然后把数据还原。
4.编码违规法
差错控制(检错编码和差错编码)
首先, 我们要明白为什么会出现差错?
注意:数据链路层的差错检测的是比特的错误(也就是位错)
差错控制方法(CRC循环冗余校验)(重点掌握)
差错控制的方法有哪些?
我们之前说过,链路层属于点对点连接,主机A和主机B进行通信,如果中间有3个路由器,主机A发送一个帧数据给B,如果说这个帧数据发送差错,我们不使用差错控制的话,这个数据就会一直传到主机B的数据链路层才发现错误,那么就得不偿失了。所以我们需要在链路层使用差错控制,如果帧错误,那么在中间的路由器的数据链路层就能及早发现错误,提高传输效率。
检错编码(奇偶校验码):
特点:检错能力只有百分之50。比如奇数校验码,发生一个比特错误,可以检测。但是发生二个(偶数)比特错误,就无法检测出来.
检错编码(CRC循环冗余校验)(重点):
例子:
简单分析:通过模2除法,通过要发送的数据除以多项式,这里在除之前需要看多项式的位数,如果多项式的位数是5位,那么发送数据的后面需要加上(5-1)位,全部用0补齐。然后除以多项式得出来的余数重新补到发送数据的后面,如果这个新补齐的数据除以多项式除的尽,说明最终发送的数据就是这个新补齐的数据。
需要注意:这仅仅是一种检错方式,这不能使数据链路层达到一种可靠传输的方式。
数据链路层的流量控制和差错控制
什么是流量控制?
链路层的流量控制手段是什么?
注意的是:链路层的流量控制是点对点的,而传输层的流量控制是端对端的。
数据链路层的流量控制手是接收方收不下就不回复确认。
而传输层的流量控制手段是发送一个窗口公告。
停止等待协议(ARQ协议)(重点掌握)
OSI七层体系结构中,流量控制和差错控制是在数据链路层实现的。
并且在互联网时代前期,通信质量不是很好,所以在链路层就需要承担起可靠传输和流量控制的职责。
1.为什么要有停止-等待协议?
就是保证数据链路层的可靠传输。
2.什么是停止-等待协议?
简单来说:每发完一个数据帧就停下来,等待接收方接收这个数据帧并返回一个确认信息再发送下一个数据帧。
3.停止-等待协议有几个应用情况?
无差错情况和有差错情况。
无差错情况
有差错情况①:发送数据帧丢失或者检测到帧出错
有差错情况②:收到数据帧的回复确认丢失
有差错情况③:收到数据帧,确认回复迟到
停止-等待协议的特点:
1.能保证数据传输的可靠性
2.简单
3.信道利用率低
题目分析:通过上面公式可以知道:信道利用率=发送时延/(发送时延+往返次数 * 传播时延 *信道带宽(信道的数据传输率 b/s)),而发送时延=数据长度/信道的传输率(b/s),从而进行计算。
滑动窗口协议
允许发送方在收到接收方肯定应答之前连续发送多个帧的策略,就是滑动窗口协议。
发送方未得到确认而允许连续发送帧的最大数目,称为发送窗口尺寸;发送方最早发送但还未收到确认的帧的序号,称为滑动窗口的后沿;发送方在收到确认信号之前允许发送的最后帧的序号,称为发送窗口的前沿。
后退N帧协议(连续ARQ协议)
连续协议中接收窗口固定设置为1,最大发送窗口为2^n-1。n是表示帧的序号所占用的比特数。
1.发送方连续发送数据帧1,2号。
2.当发送窗口发送连续发送序号为1,2的两个数据帧,而接受窗口首先接受来自发送窗口的数据帧1号并回复收到1号数据帧的确认。
3.这时候发送方收到接收方发送的确认回复,并将滑动窗口往后移动一位。而接收方准备好接受来自发送方发出的2号数据帧。
发送方需要注意的三件事:
累计确认:当我们发送方发送了12345个序号的数据帧,而接收方返回一个5号序号的确认回复,表示前5号包括5号帧都已经成功接收,这就是累计确认。
回退N帧/Go-Bank-N:当发送方发送了12345个序号的数据帧,而发送方通过累计确认返回一个2号序号的确认回复,那么发送方的滑动窗口就只能重新回退到3号窗口那里,重新发送数据(34567)
接收方需要注意的问题:
简单来说:接收方需要2号数据帧,发送方发送4 5号序号数据帧,接收方都不要,直接丢弃。
下图实例:
发送方发送0号帧,接收方接收,并返回0号帧的确认。
发送方发1号帧,接收方接收,并返回1号帧的确认。
发送方发送2号帧,丢失。
发送方发送3号帧,接收方发现是3号帧,丢弃,并发送1号帧的确认。
发送方发送4号帧,接收方发现是4号帧,丢弃,并发送1号帧的确认。
发送方发送3号帧,接收方发现是5号帧,丢弃,并发送1号帧的确认。
2号帧过了超时时间,发送方回退2号帧位置,从2号帧重新开始发送数据。
。。。。
滑动窗口的窗口可以是无限的吗??
后退N帧协议总结(连续ARQ协议)
选择重传协议(选择ARQ协议)
选择协议发送窗口和接收窗口都大于1。最大接收窗口<=2^(n-1)。
选择重传协议是在后退N帧协议的基础上进行改进,相对于后退N帧协议发生错误会批量重传造成资源浪费,选择重传协议只会重传出错的数据帧或者是超时的数据帧。
特点:
发送方需要注意的三件事:
接收方需要做的事:
1.收到了6,7号数据帧,当收到5号数据帧,接收方窗口就往后滑动3位。
实例:
1.发送方发送0帧,接收方接收0帧,并且返回0帧的确认回复。
2.发送方发送1帧,接收方接收1帧,并且返回1帧的确认回复,并往后滑动一位。
3.发送方发送2帧,丢失,接收方无法收到。
4.发送方发送3帧,接收方接收3帧,并且返回3帧的确认回复。
5.发送方发送4帧,接收方接收4帧,并且返回4帧的确认回复。
6.发送方发送5帧,接收方接收5帧,并且返回5帧的确认回复。
7. 2号帧超时,发送方只重传2号帧。
8.接收方接收2号帧,并将2-5号帧交付给上层。发送2号帧的确认回复。
9.发送方还没收到2号帧到5号帧的回复,等待,无帧可发。
选择重传协议总结:
PPP协议和HDLC协议(重点掌握)
首先,我们需要了解广域网。在广域网中,强调的是数据传输,而广域网中的链路层的常用两种协议是PPP协议和HDLC协议。
PPP协议(点对点协议)
PPP协议的特点:
PPP协议应满足的要求:
PPP不需要满足的要求:
因为在TCP/IP体系中,数据的可靠传输并不是靠数据链路层来实现的,所以PPP协议也不需要满足流量控制和差错控制,而且PPP是点对点协议,所以也不需要多点线路。
PPP协议的组成部分:
LCP:建议并维护数据链路(为链路层服务)
NCP:为网络层协议建立和配置连接(为网络层服务)
PPP协议的帧格式(掌握):
帧标志:为7E,当同步链路传输(一连串比特传输)时,使用零比特填充法,当异步链路传输(一个个字节传输)时,采用字符填充法。
如果在信息部分出现7E,则这数据字段会变成7D和5E,如果信息部分出现7D,那么这数据字段会变成7D和5D。
课后习题:
一个帧的数据部分(用16进制写出)是7D 5E FE 27 7D 5D 7D 5D 65 7D 5E。试问真正的数据是什么?
分析:出现7E变7D 5E 出现 7D变 7D 5D,反之,出现7D 5E也就是7E
答:7E FE 27 7D 7D 65 7E
HDLC协议
HDLC的链路传输采用的是同步链路传输,并且HDLC保证可靠传输。属于ISO体系结构中的链路层协议。
HDLC的基本操作模式:
HDLC的帧格式:
HDLC的控制字段用于表示HDLC帧的类型:有3种
PPP协议和HDLC协议的区别和相同点:
相同点:
区别:
区别补充:他们两个的帧格式也不一样
课外说一下为什么PPP协议是现在链路层最常用的:因为现在网络速度要求必要高,而在链路层保证可靠传输就降低了网络传输的效率,因此,现在网络大多数都不在链路层保证可靠传输,而是交给了传输层。