OSI之数据链路层中的各个协议

版权声明:欢迎转载评论~哈哈哈哈请标明出处呀 https://blog.csdn.net/legendaryhaha/article/details/83476973


1.数据链路层功能

(1)链路管理:主要指面向连接的协议,如建立和释放连接。
帧同步:简单是说就是指收方应当从收到的比特流中准确的区分帧的起始与终止。将数据和控制信息区分开。
(2)流量控制(Flow Control):是一种利用软件或硬件方式来实现对电脑网络流量的控制,解决网络拥塞的问题。
(3)透明传输:透明传输是指不管所传数据是什么样的比特组合,都应当能够在链路上传送。当所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使接收方不会将这样的数据误认为是某种控制信息。这样才能保证数据链路层的传输是透明的。
(4)寻址:指MAC寻址,在数据链路层中,通过MAC地址主要主机的物理地址,因为交换机中有一张mac表。

2.区分几个名词

链路也指物理链路,没有协议和软件的含义。
数据链路:多了实现通信规程的硬件和软件。
规程和协议:一个意思,ISO叫协议,ITU(国际电信联盟电信标准分局)叫规程。


3.为什么采用数据链路控制规程?

   在物理层提供的、可能存在差错的比特流传输基础上,增加适当的控制功能,就可以使通信变得比较可靠。
   

4.停止等待协议

4.1 特征

发方每发送一帧就暂停,等待应答(ACK)到来。收方收到数据帧后发ACK帧给发方,发方再发送下—个数据帧。

4.2 要解决的问题及对策

(1)DATA帧出错。
对策:收方用NAK应答。
(2)DATA帧丢失。
对策:使用定时器及重发。
(3)收方收到重复的DATA帧。
对策:帧编号:0,1,0,1…
如图
在这里插入图片描述

4.3 缺点

数据每次发送都要等待应答帧的到来,效率较低。尤其是利用卫星进行通信的时候,卫星的传播延迟是270毫秒,每发一帧要用540毫秒。

5.连续ARQ协议

5.1 概念

ARQ(Automatic Repeat reQuest)--自动请求重发,又称GO-BACK-N
一次可发多帧
流水线发送和接收

5.2 例子

如下:
(1)发送端一次性发送8帧,但二号帧出错了,而接收端只按序接收数据帧。虽然在有差错的2号帧之后接着又收到了正确的3个数据帧,但都必须将它们丢弃,因为这些帧的发送序号都不是所需的2号。结点A重传2号帧时, 以后的各帧也要全部进行重传。
(2)发送端在每发送完一个数据帧时都要设置超时定时器。在定时器超时(Timeout)后仍未收到确认帧,就要重发。
(3)在等待2号数据帧时,收到非2号帧,或出错的2号帧,可以接收方发送应答帧“REJ 2#”表示拒收2号帧,要求发方重发2#数据帧或者不发送应答帧。

在这里插入图片描述


6. 滑动窗口

6.1 概念

滑动窗口(Sliding window )是一种流量控制技术。早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况,一起发送数据,导致中间结点阻塞掉包,谁也发不了数据。所以就有了滑动窗口机制来解决此问题。

6.2 图例

在这里插入图片描述
如图:
帧序号:0~7号
NS–发送序号:通常取0至“2的n(整数)次幂减1”(为什么?)

(1)当我们假设是发送到2的n次方时n取3,也就是说编号是从0~8一个轮回。
(2)于是,当发送端发送0~8号帧后,如果接收端出了问题或者其他原因,它发送的应答帧,
         接收端都没收到,那么,此时接受端不会再继续发了,因为发了这么多的数据帧,一个应答帧都没收到。
(3)过一段时间帧0 的计时器会到达预定时间进行重发(按顺序开始,因为0号帧最先)。
(4)那么问题来了,因为取得是2的n次方,也就是8,那么此时重发的0号帧是重发的呢,还是新一轮的开始呢?这就难办了!
(5)如果是2的n次方减一,就不会了,取0~7,,也就是窗口大小为8(加上0),但发送7号帧后,如果一个应答帧
     都没收到,此时,过一段时间帧0 的计时器会到达预定时间进行重发,于是,机器就知道,这个重发的了,因为
     如果不是重发,接下来发送的帧应该是从8号开始的。

备注:至于n为什么一般取3,按老师的意思,这是先人总结出来的规律,取这个值的时候,整个网络的传输处于一个良好的状态,恩,对!!!。。。


NR–接收序号:期望收到的对方发出的帧的发送序号
发送窗口用来对发送端进行流量控制,而发送窗口的大小WT就代表在还没有收到对方确认信息的情况下发送端最多可以发送多少个数据帧。严格地说,发送窗口和发送窗口的大小WT是两个不同的概念,(有时也有不加区分的情况),在上述图中:

(a)的发送窗口为[0,1,2,3,4]
(c)的发送窗口为[4,5,6,7,0]
它们的发送窗口大小WT都=5

7. 接受端对发送端的应答

如图:像停止等待协议中的应答情况就是这种方式

NS:发送的帧的编号
NR:我想要的帧的编号

在这里插入图片描述


连续等待协议的应答有如下情况
在这里插入图片描述
捎带应答:发送端在应答时,顺便发送数据
在这里插入图片描述
例子:

A:VS为0,VR为5标识我将要发送0信号帧,我想要5号帧
B:一开始,B有5号帧,它想要0号帧

在这里插入图片描述


8. 面向比特的链路控制规程HDLC

备注:该协议被广泛用于广域网中,是一个面向连接的链路层协议。
了解各个站
在这里插入图片描述

8.1 帧结构

从左到右,标识(8位)——地址(8位)——控制字段(8位)——数据字段(可变)——检验序列(16位)——标识(8位)

标识字段:固定位01111110
地址字段A: 非平衡方式传送数据时,地址字段总是写入次站的地址。平衡方式时,地址字段总是填入确认站的地址。
全1地址---广播方式,全0地址---无效地址。
帧检验序列FCS字段共16bit,采用的生成多项式是CRC-CCITT
控制字段:用于区分信息帧I、监控帧S、无编号帧U。

在这里插入图片描述

其中,控制字段的第1位为“0”表示是信息帧,第1、2位为“10”是监控帧,“11”是无编号帧。

信息帧:用于传送有效信息或数据,2,3,4位为存放发送帧序号,5位为轮询位,当为1时,要求被轮询的从站给出响应,6,7,8
位为下个预期要接收的帧的序号。

监督帧:用于差错控制和流量控制,3,4位为S帧类型编码。第5位为轮询/终止位,当为1时,表示接收方确认结束。
【注】S帧类型编码如下:00、01、10、11分别表示接收准备就绪、接收未就绪、拒绝、选择拒绝等

无编号帧:用于提供对链路的建立、拆除以及多种控制功能,但是当要求提供不可靠的无连接服务时,它有时也可以承载数据。
用3,4,6,7,8,这五个M位来定义,可以定义32种附加的命令或应答功能。

在这里插入图片描述

8.2 零比特填充法

零比特填充法的目的:若在两个标志字段之间的比特串中,碰巧出现了和标志字段F(01111110)一样的比特组合,那么就会误认为是帧的边界。为了避免出现这种情况,HDLC采用零比特填充法使一帧中两个F字段之间不会出现6个连续1。
过程如下:
发送端: 发现有5个连续1,则立即填入一个0。
接收端: 每当发现5个连续1时,删除其后的一个0。
例如:0100 1111 1100 0101 0
发送: 0100 1111 10100 0101 0
接收: 0100 1111 1100 0101 0


8.3 HDLC特点

a.协议不依赖于任何一种字符编码集;

b.数据报文可透明传输,用于实现透明传输的“0比特插入法”易于硬件实现;

c.全双工通信,不必等待确认便可连续发送数据,有较高的数据链路传输效率;

d.所有帧均采用CRC校验,对信息帧进行顺序编号,可防止漏收或重复,传输可靠性高;

9. 因特网的点对点协议PPP(面向无连接)

9.1 特点

广域网上用得第二多的链路层协议
点对点协议PPP(Point-to-Point Protocol),PPP协议支持身份鉴别,HDLC协议不支持。
在这里插入图片描述

9.2 PPP的帧格式

PPP协议的帧格式和HDLC相比,可以省略一些字段
在这里插入图片描述

9.3 透明传输

PPP用在同步传输链路时,采用比特填充法(和HDLC的做法一样)。
PPP用在异步传输时,使用字符填充法发送(接收时进行相反处理),具体如下:
(1)如果信息中含0x7E,则将其转变成2字节序列(0x7D,0x5E)。如果信息中含0x7D,则将其转变成2字节序列(0x7D,0x5D)。

01111110(8bit,7E)——>01111101(7D),01011110(5E)

(2)如果信息中含0x7D,则将其转变成2字节序列(0x7D,0x5D)。

(3)若信息字段中出现ASCII码的控制字符(即小于0x20的字符)b7b6b5b4b3b2b1b0,则将其左数第3位取反 (1变0,0变1), 例如:0x13 ——> 0x7D,0x33其它字符不变

00010011(13)——>01111101(7D),00110011(33)

在这里插入图片描述


9.4 ppp协议总结

在非平衡配置的正常响应方式NRM中(上图已展示非平衡的结构),次站不能主动向主站发送信息。

次站只有收到主站发出的P比特为1的命令帧(S帧或I帧)以后才能发送响应帧。此时,次站若有数据发送,则在最后一个数据帧中将F比特置1。若无数据发送,则应在回答的S帧中将F比特置1,表示结束。

在平衡配置的异步响应方式ABM中,当两个复合站全双工通信时,任何一方都可随时使P=1。这时对方就要立即回答RR帧,并置F=1。这样做可以更早地收到对方的确认。

如果不使用P/F比特,则收方不一定马上发出确认帧。收方可以在发送自己的信息帧时,在某一个信息帧中捎带把确认信息发出(利用N(R))

猜你喜欢

转载自blog.csdn.net/legendaryhaha/article/details/83476973