我是靠谱客的博主 细腻白猫,最近开发中收集的这篇文章主要介绍深入理解计算机网络—6数据链路层1一、数据链路层概述二、LLC的主要功能三、差错控制的几种方法四、流量控制方案,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

一、数据链路层概述

二、LLC的主要功能

(一)数据链路管理

1.数据链路的类型

2.LLC的基础服务原语

(二)数据帧封装

1.数据帧大小

2.帧同步方法

(三)透明传输

(四)差错控制

(五)差错纠正

(六)流量控制

三、差错控制的几种方法

(一)奇偶校验码

(二)循环冗余校验码

1.计算机过程

2.【模2除法】

3.自动重发请求法

(三)海明码(Hamming Code)

四、流量控制方案

(一)XON/XOFF(Ttransmitter on /Transmitter off,继续传输/停止传输)

(二)滑动窗口机制


一、数据链路层概述

IEEE802系列标准中将数据链路层分为:

介质访问控制 medium access control,MAC

逻辑链路控制logical link control LLC

数据链路层中与各种传输介质访问有关的问题都放在MAC中解决。

主要功能包括:数据帧的封装/卸载、帧的寻址与识别、帧的接收与发送、帧的差错控制、介质访问冲突控制等。

二、LLC的主要功能

LLC子层最基本功能就是负责数据链路层中逻辑链路的控制,其中包括:逻辑链路的建立和释放、控制信号交换、数据流量控制、解释上层通信协议传来的命令且产生响应以及克服数据在传送的过程中所可能发生的种种问题,如数据发生错误、重复收到相同的数据、接收数据的顺序与传送的顺序不一致等。

LLC中至制定了一种标准——IEEE802.2

由于网络上可能有多种通信协议同时存在,而且每一种通信协议又可能同时与多个对象沟通,因此当LLC从MAC收到一个数据包时必须能够判断要送给网络层的哪一个通信协议。

为了达到这种功能,在LLC子层中提供了“数据链路层”的SAP作为与网络层通信交互的结构。(每路通信需要一个SAP接口)

数据链路层的主要功能包括4个方面:

1.数据链路管理(主要针对:有确认的面向连接服务,主要应用于广域网种),包括3个主要阶段:链路建立、链路保持、链路释放。

2.封装成帧

3.透明传输

4.差错控制

(一)数据链路管理

1.数据链路的类型

数据链路层协议的不同,所建立的数据链路类型也会有不同。分4类:

TYPE 1:无确认的无连接服务,如以太网服务。不需要在进行数据传输前先建立专门的数据链路,不需要接收端对所接收到的每一个数据帧进行确认。这种服务看似不可靠,但它是建立在可靠的通信线路基础上,所以数据传输仍然是非常可靠的。如以太网,以太网中的数据链路始终是存在的,不用另外建立,数据传输时也不用对接收到的每一帧进行确认。

TYPE 2:有确认的面向连接服务,如 PPP、HDLC 等服务。两层含义:一是在提供服务时必须先建立好双方的通信连接;二是在提供服务是必须要求对方确认后才进行。

TYPE 3:有确认的无连接服务,如令牌网服务。不需要建立专门的数据链路,但收到每一个数据帧时要向发送端确认。

 TYPE 4:可同时提供 TYPE 1~3 类服务。

2.LLC的基础服务原语

LLC子层提供给网络层的服务是利用以下4种基础服务原语:

(二)数据帧封装

1.数据帧大小

数据帧最大值受对应链路层协议的MTU限制,如以太网最大1500个字节,最小46字节,否则需要一些特殊字符填充。

2.帧同步方法

“帧组装”过程中涉及“帧同步”功能:即在接收端如何区分来自发送端的比特流属于原来在发送端中的哪个帧。

常见的帧同步方法:

1.字节计数法:接收端可以通过所接收的比特流中的特殊字符识别区分出每个帧的起始,并从专门字段中获知每个帧后面跟随的“数据”字段的字节数,从而确定每个帧的结束位置。

2.字符填充的首尾定界符法:用一些特定控制字符定界一个帧的起始与结束。

为了不使数据信息中与以上特定字符相同的字符被误判断位帧的首位定界符,可以在这种数据帧头填充一个转义控制字符,这就属于“透明传输”原理。

3.比特填充的首尾定界符法:通过在帧头和帧尾各插入一个特定的比特串(如01111110)来标志一个数据帧的起始和结束。

(三)透明传输

为了“透明传输也就是为了避免在信息位中出现与帧起始和结束标识符相似的比特串时被误判位帧的首、尾标志,采用了比特填充的方法。如采用了01111110,则对信息位中任何连续出现5个“1”,发送端自动在其后插入一个“0”。而接收端在收到数据后,首先去掉两端的特定模式字符,然后再每收到连续5个“1”的比特位后自动删除其后所跟的“0”,以此恢复原始信息。

4.违法编码法:在物理层采用特定的比特编码方法时使用。不需要任何填充技术便能实现数据的透明性,只适用于采用冗余编码的特殊环境。

如曼彻斯特编码中规定10(高-低电平)表示1,01(低-高电平)表示0,而00和11时违法的,因此可直接借用这些违法编码序列来定界帧的起始与终止。

(四)差错控制

差错检测的常见方法:

奇偶校验码PCC、循环冗余码cyclic redundancy check,CRC

(五)差错纠正

不同的传送类型次采用不同的纠错方法

对于面向字符的异步传输(如键盘与主机,ATM传输协议等)一般采用“反馈检测”:接收端接收帧后,反馈完整帧给发送端;发送端比对后,若不一致则重发。但是若接收端未收到,且未反馈,则通过引入计时器来解决一直未收到反馈的问题,在限定时间内,未收到反馈,则认为已出错或丢失,重发。

自动重发请求(ARQAutomatic Repeat reQuest):反馈检测法需要往返传输两次,效率低。因而采用ARQ方法:在传输帧中附加一个冗余检错码,接收端根据检错码进行错误检测,若发现错误就返回重发的响应(不用返回全部的帧),发送端收到响应后重发。

另外,还有一些编码本身具有自动纠错的能力,如海明码(Hamming Code).

(六)流量控制

两方面含义:

1.发送端的数据发送速度与接收端的数据接收速度要匹配,否则接收端来不及接收就会造成数据在传输过程中的丢失;

2.发送端的数据发送速度要与线路上的承载速率(与线路信道带宽有关)相匹配,否则也会造成数据在传输过程中的丢失。

【注意】“流量控制”并不是数据链路层所特有的功能,许多高层协议中也提供流量控制功能,只不过流量控制的对象不同而已。比如,对于数据链路层来说控制的是相邻两节点之间数据链路上的流量,使链路两端的传输速率尽可能匹配;对于网络层来说是控制不同网络间的流量,尽量保持匹配:而对于传输层来说控制的则是从源到目的端之间的流量,使发送端和最终的接收端之间的传输速率尽可能匹配。

数据链路层上的“流量控制”实际上时对发送端数据速率的控制,使其数据发送速率不超过链路对端接收端口所能承受的数据接收能力。考虑道接收端还需要对来自物理层的比特流进行一系列的处理,如帧封装、向发送端发送返回确认帧等,所以通常时使发送端的发送速率略小于接收端的数据处理能力。两种方案:

方案一:基于反馈的流量控制方案,即发送后等反馈+计时器(超时重发)+编码(帧超时了(不是丢失了,只是迟到,导致又重发,接收端收到多个同样的帧)防止收到多个一样的帧:发送端编号,接收端接收到同一编号多个数据帧,则只保留一个)。

方案二:基于速率的流量控制方案。基于窗口滑动机制,规定发送端一次可以发送多少个数据帧,限制了发送速率,而无需接收确认帧。

三、差错控制的几种方法

(一)奇偶校验码

加上校验码后,帧中1的个数为奇数——奇校验,偶数——偶校验

ASCII字符是8为编码,低7位是信息代码,最高位是奇偶校验位。

(二)循环冗余校验码

1.计算机过程

(1)发送帧后附加一个冗余码;

(2)接收端再把接收到的帧除以(采用“模2除法”)冗余码。如果有余数,则数据帧在传输中出现了差错。

2.【模2除法】

模2除法与算术除法类似,当它既不向高位借位,也不比较除数和被除数的相同位数值的大小,只要以相同位数进行相除即可。

模2除的过程要采用“模2减法”运算,法则:1-1=0,0-1=1,1-0=1,0-0=0,也无进位,无借位,相当于二进制中的逻辑异或运算。如:

3.自动重发请求法

自动重发请求法ARQ的几种方案:

空闲重发请求(Idle RQ:也称“停-等”法,该法规定发送端每发一帧后就要停下来,等待接收端发来确认信息,当发送端发来确认信息(ACK)后才能发送下一数据帧,如果收到否认消息(NAK),表示接收端接收的数据有错,重发该帧。另外,在计时器超时时,发送端也会重发对那个的帧。

该法缺点:每传送一个数据帧都要有一个等待时间,信道的利用率低。为此又提出了连续重发请求方案。

连续重发请求(Continuous RQ):发送端可以连续发送一系列数据帧(缓存空间大小【即:窗口大小】决定连续发送多少个帧),即不用等前一帧被确认便可继续发送下一帧。

该方案需要在发送端设置一个较大的缓存空间(重发表),用以存放若干待确认的数据帧。当发送端收到对某数据帧的确认帧后,便可从重发表中将该数据帧删除。

有2种处理策略:

1.回退N帧:某帧错,该帧后续的帧都要重发;在链路质量差、误码率大时,该策略效率就低了。

2.选择重发:解决回退N帧策略效率低的问题。错哪一帧就发哪一帧,然后再与原来已存放于缓冲区种的其余帧一起按正确顺序提交给“网络层”

(三)海明码(Hamming Code)

是一个可以有多个校验位,具有检测并纠正一位错误代码的纠错码,所以它也仅用于信道特性比较好的环境中,如以太局域网中,因为信道特性不好的情况下,出现的错误通常不是一位。

海明码的检错、纠错基本思想如下:

(1)将有效信息按某种规律分成若干组,每组安排一个校验位通过异或运算(结果为 0)得出具体的校验码。

(2)在接收端同样通过异或运算看各组校验结果是否正确(结果为0时正确)。出错时观察出错的校验组的校验位或者多个出错的校验组的共同校验位,得出具体的出错比特位。

(3)对错误位取反来将其纠正,亦即原来是1就变成 0,原来是0就变成 1。

要采用海明码纠错,需要按以下步骤来进行:计算校验位数→确定校验码位置→确定校验码→实现校验和纠错。

【1】计算机校验位数:K+r<=2^r-1,为了确保r位校验位能校验全部的数据位,因为r位校验码所能表示的最大十进制数位2^r-1,同时也确保各位校验码本身不被其他校验码校验。

【2】确定校验码位置:校验码必须在2^n次方位置(n从0开始)。

【3】确定校验码:第i位校验码从当前位开始,每次连续校验i位(这里是数值i,不是第i位)后再跳过i位,然后再连续校验i位,再跳过i位。依此类推。最周根据所采用的是奇校验还是偶校验即可得出第i位校验码的值。

【4】实现校验和纠错。海明码是一个多重校验码,每个信息码位会同时被多个校验码进行校验;另外,每个校验码能被自己校验。

四、流量控制方案

(一)XON/XOFF(Ttransmitter on /Transmitter off,继续传输/停止传输)

一种流量控制协议,常用于速率大于等于1.2kb/s,而接收端处理速率远小于这个值。主要适用于异步通信中。

基本思想:当接收端认为不能继续接收数据时(也就是接收端的缓存空间满了时或者接近满了时),接收端会向发送端发送一个XOFF控制字符,当发送端收到对应的XOFF控制字符时就停止数据的继续发送;当接收端认为可以继续接收数据时,接收端会再向发送端发送一个XON控制字符,发送端收到这个控制字符后就指导可以恢复数据发送了,继续发送数据。

多数异步通信软件均支持XON/XOFF协议。也可用于PC向打印机或其他终端设备(如modem的串行通信)发送字符。

该方案信道利用率低,主要用于一些低数据处理能力的接收端通信

(二)滑动窗口机制

“窗口”是指发送端和接收端的缓存空间大小;

“滑动”是指这个窗口大小不是固定的,是变化的,因为缓存空间中存放的未处理帧数是变化的,发送端再收到确认帧后会删除原来保存在缓存中的待重发帧,这样可用于数据发送的缓存“窗口”就是变化的;同时接收端向“网络层”提交了一个帧后也会删除原来保存在缓存中的帧,这样可用于接收数据的缓存“窗口”也是变化的。

一次最多可以连续发多少帧比较合适呢?考虑2方面因素:

一是要能实现有效的差错控制;

二是要与接收端的数据处理能力相匹配。

另外缓存空间大小又与帧编号所用位数有关,因为在数据传输时每个帧都是有序号的(解决受到多个同样的帧)。

缓存空间越大,表示帧编号的位数就越多,但帧的无用开销就越大。

表示帧标号的位数太少,传输过程中很容易出现混乱,因为到时保存在缓存中的帧可能存在多个相同但实际内容不同的帧。所以要适中。

如SDLC和HDLC,帧编号一般3位。以太网、PPP等协议帧不带编号,不采用这种流量控制方式。

最后

以上就是细腻白猫为你收集整理的深入理解计算机网络—6数据链路层1一、数据链路层概述二、LLC的主要功能三、差错控制的几种方法四、流量控制方案的全部内容,希望文章能够帮你解决深入理解计算机网络—6数据链路层1一、数据链路层概述二、LLC的主要功能三、差错控制的几种方法四、流量控制方案所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部