计算机网络(四)——数据链路层Part One

数据链路层的任务:提供两个相邻节点或主机及相连的网络节点之间的可靠通信
数据链路层提供的主要服务功能:线路规程、差错控制和流量控制。
数据链路层的传输信息单元:帧(frame)

数据链路层通过将不可靠的物理链路转换为可靠的数据链路,来提供两个相邻网络节点之间的可靠通信。
不可靠:信号在传输过程中会受到影响会出错,但是物理层无法发现
可靠:在物理层的基础上加上数据链路层的协议就可以发现错误并纠正错误

链路和数据链路的区别:

  1. 链路就是一条简单的点到点的物理线路
  2. 数据链路是物理线路加上一些规程来控制数据的传输,这些规程的硬件和软件加到链路上构成数据链路
  1. 线路规程
    通信顺序,两个或多个设备之间进行通信必定存在一些协调的措施,线路规程就是实现“什么时候,谁在链路上发送信息”
  2. 差错控制
    负责发现错误,提出要求,纠正错误。采用校验——应答——重发的模式进行差错控制,但是也可能出现数据帧重复或乱序的问题,需要采取相应的措施进行纠正。(发送端发送的数据帧提供接收端矫正,返回应答帧是继续进行还是可以发送下一个,根据应答帧内容决定是否重发)
  3. 流量控制
    目的是防止因发送端发送速度超过接收端接收速度造成数据丢失或信道拥挤。通常和差错控制同时实现,负责调整某段时间内可以发送多少数据
  4. 链路管理
    两个数据结点在进行通信的需要交换一些控制信息,先建立数据链路,传输时需要维持数据链路,通信完毕时需要释放数据链路,整个建立、连接、释放的过程称为链路管理

一、线路规程

  1. 什么是线路规程?
    线路规程是监视线路的建立,以及在给定时刻分配一个具体设备进行数据传送的权利。
  2. 线路规程的实现模式
    询问/应答模式、轮询/选择模式

主从关系——轮询/选择——HDLC
无主从关系——随机争用——以太网协议/无线局域网

(一)询问/应答模式(点对点模式/ENQ/ACK)

  1. 使用场合:
    (1)当两个设备之间存在一条专用链路,唯一能进行传输的设备也是预期的设备
    (2)只要一条链路两头的设备级别相同,任意一个设备都可以启动一个会话过程。
  2. 在半双工或全双工中的应用:
    都是启动方建立会话过程。
    半双工:启动方在响应方等待时将数据传输出去,响应方在启动方结束操作或要求一个回应时接管链路控制。
    全双工:一旦会话建立,两个设备就可以同时进行传输。
  3. 工作方式:
    启动方首先发送一个询问帧(ENQ)询问接收方是否可以接收数据;
    接收方如果已经准备好接收数据,回答一个确认帧(ACK);
    接收方没有准备好接收数据,回答一个否认帧(NAK)
  4. 3种在发送方发送一个询问帧后可能出现的情况:
    (1)没有回应(给定期限内既未收到ACK也未收到NAK)——断开连接重新发送询问帧(一个副本),一般坚持3次
    (2)回应是否定的+3次尝试失败——断开连接并在下次需要的时候开始
    (3)回应是肯定的——启动方可以随时发送数据,发送完毕以一个==传输结束帧(EOT)==结束传输
    在这里插入图片描述

(二)轮询/选择模式(多点链接系统/Poll/Select模式)

轮询选择模式是一种主从模式,因为是多点连接,所以既要考虑设备是否就绪还要考虑哪一个站点有权使用信道。这个时候如果两个从设备A和B想要通信,就必须经过主设备才可以。

  1. 工作方式:
    主设备控制链路,主设备发送命令,从设备响应。所有信息交换必须通过主设备进行,主设备是会话发起者,决定谁使用信道。
    在这里插入图片描述
  2. 两个主要功能:
    轮询:主设备希望接收数据,逐个询问是否有数据发送,如果没有,必须回答否定应答帧(NAK);如果有数据,直接用数据帧回答(询问的时候是一个一个设备顺序进行,回应是数据帧时,主设备读入数据帧还要发送一个应答帧来确认)
    选择:主设备希望发送数据,用选择帧(Sel)告诉从设备准备接受数据,从设备用ACK同意接收,用NAK拒绝接收
    在这里插入图片描述
  3. 两种终止信息交互的方法:
    (1)从设备将所有数据发送完毕,并以一个传输数据帧(EOT)结束传输
    (2)主设备发出“时间到”消息,根据协议的不同和消息长度的不同采用不同的终止方法

一旦完成了传输,主设备就可以对其他从设备进行轮询
4. 地址问题
在链路上的每个设备都有一个名字或地址用于自身标识。在任何一次传输过程中这个地址作为每一帧的特定一部分出现【地址域】
在这里插入图片描述

二、流量控制与差错控制

  1. 什么是流量控制?
    流量控制是一组过程,这组过程是用来告诉发送方在等待接收方的确认信号之前最多可以传送多少数据。
  2. 流量控制的两个要点:
    (1)数据流不能使接收方过载——主要有两个方面的限制:接收方的处处理速度、接收方存储器容量(缓冲区)
    (2)接收方对数据进行确认——可以每收到1帧给对方发送一个应答,也可以每收到若干个数据帧再给发送方一个应答。
  3. 什么是差错控制?
    差错控制主要指错误检测和重传方法。
  4. 什么是自动重复请求(ARQ)?
    数据帧在传输中出现错误,接收方就返回一个否定应答帧(NAK),出错的帧就会被发送方重新传送。这个过程叫ARQ。【在TCP中没有NAK,只能通过超时没有肯定应答判断!
  5. 数据被重传的3种情况?
    帧破坏(可以通过校验码发现)、帧丢失、应答帧丢失
  6. 实现技术?
    流量控制和差错控制是结合在一起实现的。两种实现流量控制和差错控制的技术:停止等待协议、滑动窗口协议

(一)停止等待协议

1. 停止等待协议的流量控制

发送方每发送一帧后就等待应答。只有收到一个应答(ACK)后,才发送下一个帧。直到发送方发送一个传输结束帧。(因为一定是发送一个等一个所以发送方的速度一定不会超过接收方的速度)
优点:协议简单
缺点:效率低,在线路上只有一帧。如果设备之间的距离很长,在每帧之间等待ACK帧所花费的时间很长

在这里插入图片描述

2. 完成一帧发送所需的最短时间

在无差错的情况下完成一帧的发送需要如下一个窗口时间tW
在这里插入图片描述
tW=tI+2tP+2tProc+tS(窗口时间是一个数据从A站点完整到达B站点所消耗的时间)
tI:发送数据帧时间=帧长Lf/数据传输率C(数据发送速率)tI=Lf/C
tS:发送确认帧时间=确认帧长Ls/数据传输率C tS=LS/C
一般tS<tI,因为数据帧的长度要大于应答帧的长度,应答帧的帧长LS中不含数据域部分
tP:信号传输延时=距离/信号传输速度(电信号在物理链路上的传输延迟)
tProc:节点处理数据时间(收到一帧的处理时间和帧形成时间)
【信号在线路上传输的时间和节点处理数据时间,不涉及到真正传输,一些处理消耗的时间】

3. 停等协议的定量分析(无差错)

  • 信道利用率:信道被占用的时间和总时间之比
  • 有效数据传输率:单位时间内传输的有效数据位数
  • 无差错情况的信道利用率P:
    P=(tI+tP)/tW
    tI:发送数据的时间
    tP:信号的传输延时
  • 无差错情况的有效数据传输率(有效数据指的是去掉控制信息之后剩下的纯数据部分)
    S=N/tW
    N:有效数据位数
    tW:发送一帧的时间
C = 传输速率(10Mbps或10bit/us)接口速率
S = 信号速度(200m/us)在线路上(介质)传播速率
D = 发送方与接收方的距离(200m)
tProc = 生成一帧的时间(1us)
Lf = 一帧的比特数(200bit)
N = 一帧的数据比特数(160bit)
LS = 一确认帧的比特数(40bit)

在这里插入图片描述

4. 停等协议的定量分析(有差错)

  • 有差错时正确传送一帧的平均时间
    无差错情况下,发送一帧的最小时间间隔为tW
    当出错率为p时,正确发送一帧的平均时间间隔tV为(根据概率统计学):
    tV=tW/(1-p)
    p:出错率
    tV:发送一帧的平均时间
  • 系统最大吞吐量λmax(每秒成功发送的帧数)
    λmax =1/tV= (1-p)/tW
  • 极限吞吐量M = 1/tI (tI:发送数据的时间)
    系统一直保持发送的状态,一直发送数据,看的是每秒发送的数据所以用1➗ti可作为1s中处理了多少个噩耗数据的衡量
  • 系统传输效率:最大吞吐量/极限吞吐量
    ρ= λmax /M
    =[(1-p)/tW]/(1/tI)
    =(1-p)/(tW/tI)
    令a 恒等于 tW/tI ,则:
    ρ = (1-p)/a
  • ρ与a成反比,a越小效率越高。

5. 停止等待协议中的差错控制(停止等待自动重复请求ARQ)

  • 为了实现差错控制,停止等待协议采用ARQ(Auto Repeat reQuest)技术, ARQ处理错误的三种情况:帧破坏、帧丢失、应答帧丢失
    在这里插入图片描述
    (a)帧破坏:通过CRC校验容易发现错误,然后返回一个否定应答帧告诉对方要重传,如果线路质量不好,发送8次或16次就不再发送了。
    (b)帧丢失:设置超时时间tout,大于重传,但是tout>tw也不能太大,略大于即可
    (c)应答帧丢失:收到了2个数据帧1,涉及到如何判断哪个数据帧是正确的。
  • 为了实现差错控制,停止等待协议需要具备的要求:
    (1)发送设备在收到最近帧的应答消息前要保留该帧的备份(保留备份可以使在数据丢失时重发直到正确接收)
    (2)为识别各帧,数据帧和应答帧都必须交替标识为0和1,如果接收方收到了两个相邻的数据帧且标号相同,说明接收方收到了一个重复帧。应当丢弃一个重复帧。(一个标号为1的数据帧被一个标号为0的应答帧确认,说明当前接收方已收到数据帧,期望接收的数据帧为0)
    (3)否定应答帧(NAK),通知发送方重新发送最近的一帧。【否定应答帧不编号】
    (4)定时器,判断数据帧在传输中丢失。(超时重传,每次传输开始都打开定时器)

问题:

  1. 为什么数据编号是0和1?
    因为A一次只发送一个数据帧,因此只需要一个比特作为数据帧编号
  2. 如何判断数据帧重复?
    每发送一个新的数据帧,编号信息和上次的都不一样,这样可以使接收方区分新的和重复的数据帧。
  3. 解决重复帧问题?
    (1)使每个数据帧带上一个编号,若连续收到同一个编号的数据帧则证明有重复帧,必须舍弃重复帧
    (2)B应该向A发送确认帧,这时B知道上次发送的确认帧A没收到

(二)滑动窗口协议(TCP采用滑动窗口协议)

1. 滑动窗口协议中的流量控制

  • 发送方在收到应答消息前可以发送若干帧。接收方使用一个ACK帧来对多个数据帧的接收进行确认。具体可以接受多少帧视窗口大小而定

  • 帧编号:
    在滑动窗口协议中,数据帧以模n方式编号,也就是说,编号从0到n-1。(数据帧中必有一段携带编号信息)

  • 窗口是发送方和接收方存放数据帧的缓冲区

  • 窗口的大小是n-1

  • 接收方发送的应答帧(ACK)编号是接收方希望收到的下一帧的编号

  • 发送方窗口用于存放已经发送但未收到应答的数据帧和在收到应答帧之前可以发送的数据帧。

  • 接收方窗口用于存放已经被接收但未给应答的数据帧。
    在接收方,只要窗口未填满就可以在未发送应答帧的情况下继续接收数据帧。
    在这里插入图片描述
    发送窗口分为两部分,左边部分是已发送但未收到应答的部分,右半部分是未发送的部分,每发送一帧,中间的边界右移一帧,每收到一个ACK应答,左边界右移1帧(实际上的移动距离就是当前收到应答帧的编号和上一次收到的应答帧编号的差值,滑动窗口协议不是停止等待那样每次收到1个进行应答,而是一次多帧应答,上面的1帧只是举个例子)

在这里插入图片描述
接收窗口也分为两部分:左边部分是已经接收但是还未发送应答的数据帧,右边部分是可被接收的数据帧,只有编号处于窗口内的帧才是可以被接收的帧。每次接收一帧中间的分界线就向右移动一帧,而整体窗口移动的距离是上次应答帧和本次发送的应答帧的编号之间的差值。

2. 滑动窗口协议中的差错控制

  • 滑动窗口协议中,有两种实现自动重传请求(ARQ)技术:
    回退N自动重传请求(Go-back-N)
    选择拒绝自动重传请求(Select-Rej)
  • 要求:(为了解决帧丢失和损坏帧的重复问题)
    (1)发送站要保留数据帧的备份;(确认前要保留备份,前面窗口中未被确认的仍然在窗口内,就是备份)
    (2)除确认帧外,接收方可以发送否认帧,告诉发送方重新发送一个损坏的帧;(否认帧也有编号,应答帧带有期望收到的帧的编号,否认帧带有被损坏帧的编号,本质上都是接收方希望收到的帧)
    (3)确认帧、否认帧必须有编号;
    (4)定时器,判断数据帧在传输中丢失。

3. 回退n自动重复请求

  • 在滑动窗口的回退 n 自动重传请求中,如果一帧丢失或损坏了,从最近一次得到应答的数据帧开始,未被应答的所有帧都进行重传。
  • 差错情况有三种:
    帧破坏
    数据帧丢失
    确认帧丢失
帧破坏

在这里插入图片描述

数据帧丢失

在这里插入图片描述
滑动窗口协议中,数据帧按照顺序发送和接收。如果某一帧在传输过程丢失,接收方不能按照顺序收到数据帧就会出现问题,也可以说数据帧丢失是通过接收顺序确定的。

确认帧丢失

在这里插入图片描述
当发送窗口🈵️,或没有数据要发送了,启动定时器。发送窗口未接收到应答帧,但仍然将窗口内的未发送数据帧发送给接收端,直到中间界线移动到最右端,这时发送窗口满定时器开始计时直到超过规定时间,将发送方收到的最近一次应答帧之后的所有帧重新发送。没有数据发送的情况就准备断连。

窗口大小与编号范围的关系

在回退N协议中,如果帧的编号范围是0~n-1,则窗口的尺寸为n-1。

  • 4种可能的情况:
    (1)如果窗口的尺寸>n:因为编号范围是0~n-1,如果窗口尺寸大于n,在窗口中就会出现两个不同的未确认帧的编号相同,就无法知道是对这两对数据帧的哪一个进行确认。
    (2)如果窗口的尺寸=n:
    在这里插入图片描述
    之前的ACK0丢失,当前接收方仍然期望收到0~7,但是之前已经传过去0~7了,又重新传递一遍,虽重复,但是却不认为是重复帧。
    如果窗口的尺寸=n-1:
    在这里插入图片描述
    【窗口大小=n和=n-1时最主要的区别在于解决了重复帧的问题】
    如果窗口的尺寸<n-1:
    窗口尺寸小于n-1也是可以的,不过为了提高吞吐率,还是选择小于n的最大窗口尺寸。

4.选择拒绝自动重复请求

  • 主要思想:只有特定的丢失或损坏帧被重发。接收方收到的数据帧可以是不按顺序到达的。
  • 选择拒绝自动重传请求与回退n自动重传请求有4个不同点:
    (1)接收设备必须具有排序功能。在发送了NAK帧之后,必须存储所收到的所有帧,直到损坏的帧被重新收到为止。
    (2)发送设备须具有查找机制,以便发现和选择需要重传的帧。
    (3)所有的重传帧被排序和所有重复帧被辨别出来并删除之前,所收到的所有帧都必须保存。
    (4)ACK帧的编号指的是被正确接收的帧编号,不是指期望接收的帧编号,而NAK帧的编号指的是错误或丢失的帧
  • 差错情况有三种:
    帧破坏
    数据帧丢失
    确认帧丢失
帧破坏

在这里插入图片描述

数据帧丢失

在这里插入图片描述
如果丢失的是最后一帧?
接收方不做任何反应, 发送方按丢失确认帧进行处理。

确认帧丢失

当发送窗口满时,或传输完毕时,启动定时时钟。
如果在预定时间段内没有应答到来,发送方将尚未应答的所有帧都重传一遍。

窗口的大小与编号范围的关系

如果帧的编号范围是0到n-1(即模n编号),则发送窗口尺寸和接收窗口尺寸之和应小于或等于n。如果要求发送窗口和接收窗口大小相等,则窗口尺寸应该小于或等于n/2。
在这里插入图片描述

在这里插入图片描述
都是失败在重复帧被判断成了新帧。窗口移动里面有和之前的旧帧编号相同的帧就会把重复帧判断成新帧。

5. 滑动窗口协议的效率(以回退N为例)

在这里插入图片描述

停止等待协议和滑动窗口回退N协议对比

【就是计算两种情况下的系统传输效率】
在这里插入图片描述
在这里插入图片描述

6. 窗口大小的选择

  • 窗口选得太大,会要求有足够大的缓存空间
  • 如果选得太小,由于传播和发送延迟,第一个应答帧返回到发送方之前,发送方发送窗口中的帧已经全部发送出去,但是没有得到应答,发送方必须等待,从而影响了传输速度和传输效率。
  • 假设一个帧的发送时间为tI,传播时间为tP,则窗口的大小n应该满足如下条件
    ntI>2(tI+tP)
    n>2+2xtP/tI
    在这里插入图片描述

7. 信道利用率与最佳帧长

传输的帧中既含有数据信息也含有控制信息,如果过长,帧在传输过程中出错的概率增大,如果过短,帧中的控制信息所占比例增大,信道利用率降低。

8.成帧的方法

帧的组成必须保证能识别一个完整的帧,并保证一旦出现传输错误导致前一个帧丢失,也必须能识别下一个帧(帧同步)
在这里插入图片描述

  • 4种方法
    (1)字符计数法:
    帧的长度用一个字节表示,作为帧的头部的一个域。问题:一旦帧长度计数有误,将无法再同步。(包括本位的计数,只要一个出错后面全都出错)
    在这里插入图片描述
    (2)含字节填充的分界符法:(pass)
    用特殊的字符作为帧头和帧尾。这是一种面向字符的帧格式,所传输的数据都是字符,但在帧中不允许出现帧界符标志。常用于面向字符的串行通信中。所用的特定字符依赖于所采用的字符编码集,兼容性比较差。不适合传输数据中包含二进制数的帧,对于在数据中偶尔出现的帧界符标志,可以在前面插入一个转义字节。在这里插入图片描述
    在这里插入图片描述
    (3)含位填充的分界标志法(位插入法)
    面向二进制位的通信中常使用带位填充的首尾标志格式,如HDLC。以特殊的位模式01111110作为帧标志,即一个帧的开始和结束。当帧中出现一个与帧标志相同的位串01111110时,在5个1后插入1个0,变成011111010。接收方将自动删除第5个1后的0。
    在这里插入图片描述
    (4)物理层编码违例法
    在这里插入图片描述
    以太网物理层使用曼彻斯特编码。如果检测到连续高电平或连续低电平检测到的不是曼彻斯特编码证明是错误的。
封装成帧
  • 封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。
  • 首部和尾部的一个重要作用就是进行帧定界
    在这里插入图片描述
    如果超过MTU长度自动分片。

3种协议方法总结

  • 停止等待协议:
    发送窗口=1,接收窗口=1
  • 滑动窗口中的回退N:
    发送窗口>1,接收窗口=1
  • 滑动窗口中的选择拒绝:
    发送窗口>1,接收窗口>1
  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值