我是靠谱客的博主 生动龙猫,最近开发中收集的这篇文章主要介绍计算机网络整理——数据链路层,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

物理层对于通信专业的人来说几乎都是很容易理解的学过的内容,所以没有再做整理。

1、数据链路层使用物理层提供的服务,在通信信道上发送和接收比特,它要完成的功能有三个:

1)向网络层提供一个定义良好的服务接口 

2)处理传输错误

3)调节数据流,确保慢速接受的接收方不会被快速的发送方淹没

2、数据链路层从网络层获得数据包,然后封装成帧,每个帧包括一个针头,一个有效载荷,用于存放数据包以及一个帧尾。帧的管理构成了数据链路层工作的核心,数据链路层的功能是为网络层提供服务,最主要的服务是将数据从原机器的网络层传输到目标机器的网络层。

3、数据链路层通常提供以下三种可能的服务

一、无确认的无连接服务,如以太网,LAN

二、有确认的无连接服务,如无线系统

三、有确认的有连接服务,如WAN

当使用面向连接的服务时,数据传输必须经过三个不同的阶段,建立连接、传输数据、连接释放

4、将比特流拆分成帧的方法主要有四种,一字节计数法,二字节填充的标志字节法,三比特填充的标志比特法,四物理层编码违禁法

1)字节计数法  用一个帧的第一字节来说明帧的总长度(总长度包含这个帧头)

https://file2.kaopuke.com:8081/files_image/20230507/202305070626242318487.png

如图,白色为帧头,指明了长度,比如第一帧长度为5,后面就跟了4个字节,第二帧的长度为5,后面也跟了4字节,之后是两个8字节长度的,所以各自跟了7字节的正文部分。但是如果一个字节出了问题,影响的就不仅仅是这一帧了,后面的都会出问题。

2)字节填充的标志字节法  在帧的头之前和尾之后加一个特殊的字符,只要读到这个字符帧就开始了,再次读到就认为这个帧结束了,如下图所示:

https://file2.kaopuke.com:8081/files_image/20230507/202305070626241102558.png

3)比特填充的标志比特法  当正文读取的时候一旦出现了5个连续的1,那么在后面填充一个0,避免出现6个1造成帧提前结束。译码时每读到5个连续的1之后,就把后面的0去掉一个,这样就得到了原文的数据了。

4)物理层编码违禁法

 前三种方式的优缺点如下:

字节计数

在每一个帧前面设置一个计数器,记录该帧里面一共有多少字节

不可靠,其问题在于:计数值可能因为一个传输错误而弄混

字节填充

用特殊的标志字符(字节)来界定帧,如,这个字符可以是01111110这个字节(同时,为了防止与原始数据中的内容冲突,可能需要对原数据进行转义。转义时,在原数据对应字节前加上一个ESC)

使用转义符的方法的确解决了原数据种含有冲突内容的情况,但是因为ESC同样也是一个字节,在原数据中出现时也有可能出现混淆的情况,比较麻烦。

位填充

帧标志由6个连续的1组成;在传输是,每有5个连续的1,就在后面添加一个0;在接受的时候,每有5个连续的1,就把后面的0删除

保证了透明传输:数据中的任意组合不引起帧边界判断失误

5、流量控制的方法有两种,一是基于反馈的流量控制,二是基于速率的流量控制

【数据链路层的基本协议】

6、乌托邦式的单工协议

数据只能单向传输,发送双方的网络层始终处于准备就绪状态,数据处理的时间忽略不计,可用缓存无限大,数据链路层间的通信信道永不出现丢帧、错帧。

7、无错信道上的单工停等式协议

接受方提供反馈,收到信息后给发送方一个许可,允许发送下一帧发送方发送一帧等待对方确认到达后继续发送。两个数据链路层之间的通信信道,必须具备双向传输信息的能力。

8、有错信道上的单工停等式协议

增加了一个计时器,发送方送出一帧之后,启动计时器,并等待着相关事件的发生。到达了一个有效的确认帧,发送方从他的网络层获取下一个数据包,并放入缓冲区,覆盖原来的数据包,递增帧的序号,如果到达了一个受损的确认帧或者计时器超时,则缓冲区和序号都不做任何改变,重传原来的帧。

9、滑动窗口协议包括三个双向的协议:1位滑动窗口协议、回退N协议、选择重传协议。滑动窗口本质是,在任何时刻,发送方总是维持着一组序号,分别对应于允许它发送的帧。这些帧落在发送窗口内。类似的,接收方也维持着一个类似的接收窗口对应着一组允许它接受的帧。

1)1位滑动窗口协议

一位滑动窗口协议是滑动窗口协议中最基础的一个协议。在这个情况下,接收方和发送方的窗口大小均为1。协议可能出现的问题在于,当A和B同时发起通信,每一帧都会被多次重复发送,严重浪费了带宽。

2)回退N协议(Go Back 'N')

帧在链路上的传输时间也会被纳入考虑范围。既然每一个帧都会花费相当多时间在链路上传输,那么接收方应当更加合理的利用这段时间,达到更高的传输效率。一种解决技术被称为管道化,即保持多个帧同时在传送的技术。接收窗口大小是1,当出现了传输错误或者丢包的情况后,接收方便会简单的丢弃所有后续到达的帧,并向发送方发送一个NAK否定确认。发送方会重新发送出错的帧及其后所有的帧。假如网络状况很差,回退N协议会因为数据帧在链路中传播的延迟问题导致大量的数据重新发送,其效率可能反而不如停-等式。

3)选择重传协议(Selective Repeat )

在选择重传协议中,接收窗口大于1。但区别于回退N协议中直接丢弃所有帧,在SR中接收方只丢弃掉坏的帧,仍会接受之后好的帧

10、捎带确认:接收方接到一个正确的帧时并不马上发送确认帧,等待本机网络层传下来一个数据包时,将确认帧附着在数据帧中传给对方。前提是不能超过对方的重传计时器。
累积确认:接受方一般采用累积确认的方式,即不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认。

【基本协议的应用】

11、点到点(Point-to-Point,PPP)协议

1)作用:PPP协议运行在IP路由器上,将数据包从连续比特流中区分出来,构成PPP帧。

特点:现在全世界使用最多的数据链路层协议。用户使用拨号电话线接入因特网时,使用的就是PPP协议。

PPP协议应满足的要求:简单,封装成帧,透明性,多种网络层协议,多种类型链路,差错检测,检测连接状态,最大传输单元,网络层地址协商,数据压缩协商。

PPP协议不需要满足的要求:纠错,因为PPP帧包含于AAL5帧内,AAL5已有纠错;     流量控制,序号,多点线路,半双工或单工链路。

2)PPP三个组成部分

  •  一种成帧方法
  • 网络控制协议(NCP,Network Control Protocol)
  • 链路控制协议(LCP,Link Control Protocol),用于配置链路最大帧长,测试线路、参数协商等。

3)PPP协议的帧格式

Flag

Address

Control

Protocol

Payload(可变)

Checksum(校验和)

Flag

4)透明传输问题

  • PPP协议用在SONET/SDH链路时,是使用同步传输的。这是采用零比特填充方法实现透明传输。
  • 在异步传输时,使用字符填充法。

5)PPPoE(PPP over Ethernet)协议

在以太网上建立的PPP连接(如校园网)。以太网技术成熟且使用广泛,PPP协议有良好的可扩展性和优质的管理控制机制,两者结合而成的PPPoE协议成为一种常见的宽带接入方式。

作用:解决在广播式网络中以点对点的方式进行宽带上网通信的问题。

实现方式:把PPP协议报文通过以太网帧进行封装。

12、高级数据链路控制协议(High Level Data Link Control,HDLC)

在同步网上传输数据,面向bit的数据链路层协议。使用比特填充技术,链路不是点对点而是支持多跳,主机为主站终端为从站。只有一种帧类型但是有三种帧结构,分别是信息帧(I-帧)、监控帧(S-帧)和无编号帧(U-帧)。若控制字段的第一个比特为0,则该帧为信息帧;若前两个比特为10,则表示监控帧;若为11,则为无编号帧。其中信息帧和监控帧提供差错控制和流量控制,用于完成数据链路控制的主要功能。

1) 信息帧

信息帧用于传送有效数据,通常简称I-帧。在信息帧的控制字段中的N(S)用于用于存放发送帧序号,以使发送方不必等待确认而连续发送多帧。N(R)用于存放接收方下一个预期要接收的帧的序号 ,N(S)和N(R)均为3位二进制编码,可取值0~7。

2) 监控帧

监控帧用于差错控制和流量控制,通常简称S帧。S帧不带信息字段,只有6个字节。S帧的控制字段的第三、四位为S帧类型编码,共有四种不同编码,分别表示:

00-接收就绪(RR),由主站或从站发送。主站可以使用RR型S帧来轮询从站,即希望从站传输编号为N(R)的I帧,若存在这样的帧,便进行传输;从站也可用RR型S帧来作响应,表示从站希望从主站那里接收的下一个I帧的编号是N(R)。

 01-拒绝(REJ),由主站或从站发送,用以要求发送方对从编号为N(R)开始的帧及其以后所有的帧进行重发,这也暗示N(R)以前的I帧已被正确接收。

10-接收未就绪(RNR),表示编号小于N(R)的I帧已被收到,但目前正处于忙状态,尚未准备好接收编号为N(R)的I帧,这可用来对链路流量进行控制。

11-选择拒绝(SREJ),它要求发送方发送编号为N(R)单个I帧,并暗示它编号的I帧已全部确认。

3) 无编号帧

无编号帧其控制字段中不包含N(S)和N(R),简称U帧。U帧用于提供对链路的建立、拆除以及多种控制功能,但是当要求提供不可靠的无连接服务时,它有时也可以承载数据。

最后

以上就是生动龙猫为你收集整理的计算机网络整理——数据链路层的全部内容,希望文章能够帮你解决计算机网络整理——数据链路层所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部