第 3 章 数据链路层

1、思维导图

2、数据链路层功能概述

2.1、数据链路层的研究思想

水平方向对等通信

虽然每个设备之间的通信存在对数据的封装与解封装步骤,但如果单单研究数据链路层的通信,可以将其看作是水平方向上的直接通信

2.2、数据链路层基本概念

数据链路层相关术语

  1. 结点:主机、路由器
  2. 链路:网络中两个结点之间的物理通道,链路的传输介质主要有双绞线、光纤和微波。分为有线链路、无线链路。
  3. 数据链路:网络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路。
  4. 帧:链路层的协议数据单元,封装网络层数据报。


数据链路层负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报。

2.3、数据链路层的功能

为网络层提供一条传输数据的链路

数据链路层在物理层提供服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。

数据链路层的功能

  1. 功能一:为网络层提供服务。无确认无连接服务,有确认无连接服务,有确认面向连接服务。(有连接一定有确认)
  2. 功能二:链路管理,即连接的建立、维持、释放(用于面向连接的服务)。
  3. 功能三:组帧。
  4. 功能四:流量控制。限制发送方哦~
  5. 功能五:差错控制(帧错/位错)。

3、封装成帧 & 透明传输

3.1、封装成帧

封装成帧:帧头 + 数据 + 帧尾

封装成帧就是在一段数据的前后部分添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流 后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。

帧定界 & 帧同步

首部和尾部包含许多的控制信息,他们的一个重要作用:帧定界(确定帧的界限)。

帧同步:接收方应当能从接收到的二进制比特流中区分出帧的起始和终止。

组帧的四种方法

  1. 字符计数法
  2. 字符(节)填充法
  3. 零比特填充法
  4. 违规编码法。

3.2、透明传输

对透明传输的理解

透明传输是指不管所传数据是什么样的比特组合,都应当能够在链路上传送。因此,链路层就“看不见”有什么妨碍数据传输的东西。

当所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使收方不会将这样的数据误认为是某种控制信息。这样才能保证数据链路层的传输是透明的。

3.3、组帧的四种方法

3.3.1、字符计数法

字符计数法的做法

帧首部使用一个计数字段(第一个字节,八位)来标明帧内字符数。

痛点:鸡蛋装在一个篮子里了。如果有一个比特丢失了,后面的数据就直接凉凉

3.3.2、字符填充法

字符填充法的做法

首先规定帧的起始与结束标志(非 ASCII 码),当传送的帧是由文本文件组成时(文本文件的字符都是从键盘上输入的,都是 ASCII 码)。不管从键盘上输入什么字符都可以放在帧里传过去,即透明传输。

当传送的帧是由非ASCll码的文本文件组成时(二进制代码的程序或图像等)。就要采用字符填充方法实现透明传输。

举个栗子:字符填充法对帧的封装与解封装

发送方的原始数据:

发送方填充字节

接收方去除填充的字节

接收方接收到的数据

3.3.3、零比特填充法

零比特填充法的做法

发送单位不是字节,而是一连串的比特


零比特填充法的规则:5110


零比特填充法保证了透明传输:在传送的比特流中可以传送任意比特组合,而不会引起对帧边界的判断错误。

3.3.4、违规编码法

违规编码法的做法

曼彻斯特编码中只有“高-低”和“低-高”两种状态,可以用“高-高”和“低-低”来定界帧的起始和终止。

3.3.5、如何选择

当前普遍使用:比特填充和违规编码法

由于字节计数法中Count字段的脆弱性(其值若有差错将导致灾难性后果)及字符填充实现
上的复杂性和不兼容性,目前较普遍使用的帧同步法是比特填充和违规编码法。

4、差错控制(检错编码)

4.1、差错从何而来?

为何数据传输会出现差错

概括来说,传输中的差错都是由于噪声引起的。

  1. 全局性

    1. 由于线路本身电气特性所产生的随机噪声(热噪声),是信道固有的,随机存在的。
    2. 解决办法:提高信噪比来减少或避免干扰。(对传感器下手)
  2. 局部性
    1. 外界特定的短暂原因所造成的冲击噪声,是产生差错的主要原因。
    2. 解决办法:通常利用编码技术来解决。

链路层为网络层提供服务

三种服务:无确认无连接服务,有确认无连接服务,有确认面向连接服务。

  1. 如果是通信质量好、有线传输的链路,可以选择无确认无连接服务,以加快数据传输速率
  2. 如果是通信质量差、无线传输的链路,可以选择有确认面向连接服务,确保收发数据的一致性

4.2、数据链路层的差错控制

差错控制的方法(比特错的控制方法)

  1. 检错编码

    1. 奇偶校验码
    2. 循环冗余码
  2. 纠错编码
    1. 海明码

冗余编码

在数据发送之前,先按某种关系附加上一定的冗 余位,构成一个符合某一规则的码字后再发送。 当要发送的有效数据变化时,相应的冗余位也随 之变化,使码字遵从不变的规则。接收端根据收 到码字是否仍符合原规则,从而判断是否出错。

数据链路层编码 vs 物理层编码

数据链路层编码和物理层的数据编码与调制不同。物理层编码针对的是单个比特,解决传输过程中比特的同步等问题,如曼彻斯特编码。而数据链路层的编码针对的是一组比特,它通过冗余码的技术实现一组二进制比特串在传输过程是否出现了差错。

4.3、检错编码之奇偶校验码

奇偶校验码的做法

添加一个校验元(比特位),使得最后得到的比特流中 1 的各位为奇数(或偶数)

举个例题

如果一个字符S的ASCII编码从低到高依次为1100101,采用奇校验,在下述收到的传输后字符中,哪种错误不能检测?

选项:A. 11000011 B. 11001010 C. 11001100 D.11010011

答案:D,因为 D 中 1 的个数本来为奇数

奇偶校验码特点

只能检查出奇数个比特错误,检错能力为50%。

4.4、检错编码之CRC循环冗余码

CRC循环冗余码的做法

发送端使用生成多项式计算冗余码,将其附加到发送数据中

接收方使用多项生成式计算余数,根据余数来判断发送数据是否出错

计算 CRC 循环冗余码的步骤

  1. 将待发送的比特流分隔成相等位数的组,这就每个组包含 d 位比特
  2. 如果生成多项式的位数为 r+1,那么就需要在每个组后面加上 r 位的 FCS
  3. FCS 的计算方法为模 2 除法,即异或运算
  4. 接收方使用生成多项式计算余数,判断数据是否出错

举个栗子

:要发送的数据是11 0101 1011,采用CRC校验,生成多项式是10011,那么最终发送的数据应该是?

答:最终发送的数据。要发送的数据+帧检验序列FCS

发送端发送的数据

  1. 计算冗余码:

    1. 加 0:假设生成多项式 G(x) 的阶为 r,则加 r 个 0(TIPS:多项式N位,阶为N-1。)

    2. 模 2 除法:数据加 0 后除以多项式,余数为冗余码/FCS/CRC检验码的比特序列(异或:同 0 异 1)


接收端检错过程

  1. 把收到的每一个帧都除以同样的除数,然后检查得到的余数 R。

    1. 余数为 0,判定这个帧没有差错,接受。
    2. 余数为不为 0,判定这个帧有差错(无法确定到位),丢弃。
  2. FCS 的生成以及接收端 CRC 检验都是由硬件实现,处理很迅速, 因此不会延误数据的传输。

5、差错控制(纠错编码)

5.1、纠错编码之海明码

海明码的工作流程

海明距离

两个合法编码(码字)的对应比特取值不同的比特数称为这两个码字的海明距离(码距),一个有效编码集中,任 意两个合法编码(码字)的海明距离的最小值称为该编码集的海明距离(码距)。

列举不同码距的情况

1、码距为 1 的情况

例:000、001、010、011、100、101、110、111

码距为 1:传输过程中如果某一比特位出错,比如 000 变为 001,接收方无法发现该错误

因此码距为 1 时无法被检测出来


2、码距为 2 的情况

例:0000、1001、1010、0011、1100、0101、0110、1111

码距为 2:传输过程中如果某一比特位出错,比如 0000 变为 0001,接收方可以发现该错误,但是无法知道到底是哪个比特位发生了错误(因为 1001 也有可能变为 0001)

码距为 2 可检测出 1 位错但不可被纠正


3、码距为 3 的情况

类比如上例子,码距为 3 可检测处出 1 位错和 2 位错,可纠正 1 位错

5.2、海明码计算步骤

5.2.1、确定校验码位数r

校验码位数计算公式

举个栗子

:要发送的数据:D=1100,计算校验码位数

  1. 数据的位数m=4
  2. 满足不等式的最小r为3
  3. 也就是D=1100的海明码应该有4+3=7位
  4. 其中原数据4位,校验码3位

5.2.2、确定校验码和数据的位置

填充校验码和数据

校验码放在序号为2n的位置,从低位到高位按序填上

5.2.3、求出校验码的值

计算校验码

按照通配符,采用偶校验计算校验码

4 号通配符为 1**,与其通配符相同的位数有 4,5,6,7

2 号通配符为 *1*,与其通配符相同的位数有 2,3,6,7

1 号通配符为 **1,与其通配符相同的位数有 1,3,5,7

5.2.4、检错并纠错

检错 & 纠错

接收方收到的数据在第 5 比特出现了位错

两种纠错方法

纠错方法一: 找到不满足奇/偶校验的分组取交集,并与符合校验的分组取差集。

1,3,5,7 并且 4,5,6,7 中有比特出错,所以一定是 5 或 7 出错,2,3,6,7 中没有位错,所以一定是第 5 位出错


纠错方法二:异或

5.3、本节课总结

6、流量控制与可靠传输机制概述

6.1、数据链路层的流量控制

为何需要流量控制?

较高的发送速度和较低的接收能力的不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工作。

数据链路层的流量控制是点对点的,数据链路层流量控制手段:接收方收不下就不回复确认。

传输层的流量控制是端到端的, 传输层流量控制手段:接收端给发送端一个窗口公告。

6.2、流量控制的方法

流量控制的方法

  1. 停止-等待协议

  2. 滑动窗口协议

    1. 后退N帧协议(GBN)
    2. 选择重传协议(SR)

注意事项

其实停止-等待协议可以看作是窗口大小为 1 的滑动窗口协议

在数据链路层中,滑动窗口在发送过程中窗口大小是固定不变的

发送窗口 & 接收窗口

停止-等待协议:发送窗口大小=1,接收窗口大小=1;

后退 N 帧协议(GBN):发送窗口大小 >1,接收窗口大小=1;

选择重传协议(SR):发送窗口大小>1,接收窗口大小>1;

6.3、流量控制、滑动窗口

可靠传输 & 流量控制

  1. 可靠传输:发送端发啥,接收端收啥。
  2. 流量控制:控制发送速率,使接收方有足够的缓冲空间来接收每一个帧。

滑动窗口可以解决的问题

滑动窗口解决:

  1. 流量控制(收不下就不给确认,想发也发不了)

  2. 可靠传输(发送方自动重传)

6.4、本节课小结

7、停止-等待协议

7.1、停止等待协议到底属于哪一层?

早些时候,链路的质量还没有那么可靠的时候,就需要数据链路层负责起可靠传输的功能,就会用到停止等待协议、滑动窗口协议;随着链路质量的不断发展,链路的通信已经非常的可靠,这个时候就不需要数据链路层担负可靠传输的任务了,也就用不着停止等待协议、滑动窗口协议

不管停止等待协议、滑动窗口协议是在数据链路层还是传输层,其功能都是进行可靠传输,只不过数据链路层的传输对象是帧,网络层的传输对象是IP数组报(分组),传输层的传输对象是报文段

7.2、停止-等待协议概述

1、为什么要有停止-等待协议?

除了比特出差错,底层信道还会出现丢包问题。 另外还为了实现流量控制。

丢包:物理线路故障、设备故障、病毒攻击、路由信息 错误等原因,会导致数据包的丢失。

2、研究停等协议的前提?

虽然现在常用全双工通信方式,但为了讨论问题方便,仅考虑一方发送数据(发送方),一方接收数据 (接收方)。

因为是在讨论可靠传输的原理,所以并不考虑数据是在哪一个层次上传送的。

“停止-等待”就是每发送完一个分组就停止发送,等待对方确认,在收到确认后再发送下一个分组。

3、停等协议有几种应用情况?

无差错情况&有差错情况

7.3、停等协议的几种应用情况

7.3.1、无差错情况

通信过程中没有出现差错

图中每发送1个数据帧就停止并等待,因此用1bit来编号就够。

7.3.2、有差错情况

1、数据帧丢失或检测到帧出错

数据丢失或出错,接收方不会返回确认 ACK,发送方定时器超时后重传数据


  1. 超时计时器:每次发送一个帧就启动一个计时器。
  2. 超时计时器设置的重传时间应当比帧传输的平均RTT更长一些。(因为还有发送时延和处理时延等)
  3. 发完一个帧后,必须保留它的副本。并且数据帧和确认帧必须编号。

2、ACK丢失

ACK 丢失,发送方定时器超时后重传数据

3、ACK迟到

ACK 虽迟但到:接收到迟到的 ACK 后直接丢弃

7.4、停等协议性能分析

停等协议简单,但是信道利用率太低

  1. TD:发送方的发送时延
  2. RTT:传输往返时延
  3. TA:确认帧的发送时延

信道利用率 U 的计算公式
U=TDTD+RTT+TAU = \frac{T_D}{T_D+RTT+T_A} U=TD​+RTT+TA​TD​​


信道利用率:发送方在一个发送周期内,有效地发送数据所需要的时间占整个发送周期的比率。计算公式为:
信道利用率=L/CT信道利用率 = \frac{L/C}{T} 信道利用率=TL/C​
式中:T 为发送周期(从开始发送数据,到收到第一个确认帧为止),C 为发送方数据,LT 内发送 L 比特数据

举个栗子

:一个信道的数据传输率为4kb/s ,单向传播时延为 30ms ,如果使停止-等待协议的信道最大利用率达到80%,要求的数据帧长度至少为多少?


80%=L/4L/4+2×30ms=LL+2×30ms×4kb/s80\% = \frac{L/4}{L/4+2\times30ms} = \frac{L}{L+2\times30ms\times4kb/s} 80%=L/4+2×30msL/4​=L+2×30ms×4kb/sL​
可得出:L = 930 bit

7.5、本节课小结

8、后退N帧协议(GBN)

8.1、等停协议的弊端

闲的蛋疼的等停协议

弊端就是太闲了。。。

解决办法

必须增加序号范围(流水线技术)

发送方需要缓存多个分组

由此产生的协议

后退N帧协议(GBN)

选择重传协议(SR)

8.2、后退N帧协议中的滑动窗口

发送窗口 & 接收窗口

发送窗口:发送方维持一组连续的允许发送的帧的序号。

接收窗口:接收方维持一组连续的允许接收帧的序号,在 GBN 协议中接收窗口大小为 1

滑动窗口工作流程

  1. 发送方将 0 号帧和 1 号帧发送出去,并且接收到 0 号帧的响应信号 ACK0

  2. 发送窗口向后移动一位,接收窗口向后移动一位

8.3、GBN发送方必须响应的三件事

1、上层的调用

上层要发送数据时,发送方先检查发送窗口是否己满

  1. 如果未满,则产生一个帧并将其发送;
  2. 如果窗口已满, 发送方只需将数据返回给上层,暗示上层窗口己满,上层会等一会再发送。(实际实现中,发送方可以缓存这些数据,窗口不满时再发送帧)。

2、收到了一个ACK

GBN协议中,对n号帧的确认采用累积确认的方式,标明接收方己经收到n号帧和它之前的全部帧。

3、超时事件

协议的名字为后退N帧/回退N帧,来源于出现丢失和时延过长帧时发送方的行为。就像在停等协议中一样, 定时器将再次用于恢复数据帧或确认帧的丢失。如果出现超时,发送方重传所有己发送但未被确认的帧。

8.4、GBN接收方要做的事

GBN接收方:正确接收 & 其他情况

  1. 如果正确收到n号帧,并且按序接收,那么接收方为n帧发送一个ACK,并将该帧中的数据部分交付给上层。
  2. 其余情况都丢弃帧,并为最近按序接收的帧重新发送ACK。接收方无需缓存任何失序帧,只需要维护一个信息:expectedseqnum (下一个按序接收的帧序号)。

举个栗子

加入接收方收到 0,1,2,4,5 号帧,那么会向接收方回复 ACK2,并且将窗口滑动至 expectedseqnum = 3 的位置

8.5、GBN 发送和接收过程

GBN 发送和接收的流程分析

  1. 发送方成功发送 0,1 号帧,并且接收方应答了 ACK0,ACK1,此时滑动窗口指针expectedseqnum = 1

  2. 发送方在发送 2 号帧时出现丢失的情况,接收方在没有接收到 2 号帧的情况下接收到 3,4,5 号帧都会丢弃它们,并且都向发送方发送 ACK1 催更 1 号帧

  3. 当发送方检测到 2 号帧超时后,重新发送 2 号帧,3,4,5 号帧也是同样的道理

8.6、滑动窗口长度

滑动窗口设置为多大合适呢?

若采用n个比特对帧编号,那么发送窗口的尺寸WT应满足:1<=WT<=2n-1。因为发送窗口尺寸过大,就会使得接收方无法区别新帧和旧帧。

举个栗子

假如说帧使用 2 个比特进行编号,即帧编号为 0 1 2 3/0 1 2 3/…

如果滑动窗口大小设置为 5,假设 0 1 2 3 0号帧全部发送出去,你硕接收方分得清哪个 0 号帧是前面的,哪个是后面的吗???

8.7、GBN协议重点总结

总结

  1. 累积确认(偶尔捎带确认,ACK被放到接收方需要发送的数据中去,搭个顺风车回去)
  2. 接收方只按顺序接收帧,不按序无情丢弃
  3. 确认序列号最大的、按序到达的帧
  4. 发送窗口最大为2n-1,接收窗口大小为1(一旦确定好滑动窗口的大小,发送过程中就不能再改变)

8.8、习题

习题一

数据链路层采用了后退N帧(GBN )协议,发送方已经发送了编号为0~7的帧。当计时器超时时,若发送方只收到0、2、3号帧的确认,则发送方需要重发的帧数是( )。

选项:A.2 B.3 C.4 D.5

答:发送方收到了 3 号帧的确认,则证明 3 号帧之前的帧接收方已经全部收到,所以还需要重新发送 4~7 号帧

习题二

主机甲与主机乙之间使用后退N帧协议(GBN )传输数据,甲的发送窗口尺寸为1000 ,数据帧长为1000字节, 信道带宽为100Mb/s ,乙每收到一个数据帧立即利用一个短帧(忽略其传输延迟)进行确认,若甲、乙之间的单向传播时延是50ms ,则甲可以达到的最大平均数据传输率约为()。

A.10Mb/s B.20Mb/s C.80Mb/s D.100Mb/s

答:分两种情况


第一种情况:甲无需等待乙的应答消息,可以一直发送,一直发送,最终速率可以达到 100Mb/s


第二种情况:甲滑动窗口中的数据完成之后,还需要等待乙的应答消息,甲在收到乙的确认帧后,滑动窗口才能前移

甲将发送窗口中的数据全部发送出去所需的时间:
1000×1000×8b100×106b/s=80ms\frac{1000\times1000\times8\ b}{100\times10^6\ b/s}=80ms 100×106 b/s1000×1000×8 b​=80ms
甲等待乙的确认帧所需的时间 = 往返传输时延 + 甲将第一帧数据发送出去的时间
2×50×1000×8b10×106b/s=100.08ms2\times50\times\frac{1000\times8\ b}{10\times10^6\ b/s}=100.08ms 2×50×10×106 b/s1000×8 b​=100.08ms
则甲可以达到的最大平均数据传输率约为:
1000×1000×8b100.08ms≈80Mb/s\frac{1000\times1000\times8\ b}{100.08\ ms} \approx 80Mb/s 100.08 ms1000×1000×8 b​≈80Mb/s

8.9、GBN协议性能分析

连续发送带来的好处 & 丢弃数据帧带来的弊端

因连续发送数据帧而提高了信道利用率

在重传时必须把原来己经正确传送的数据帧重传,使得传送效率降低 --> 因此引出选择重传协议

8.10、本节课小结

9、选择重传协议(Selective Repeat)

9.1、GBN协议的弊端

弊端:某些已经到达的帧被丢弃

有些帧其实已经发送到接收方了,但是由于前面由某个帧丢失,导致该帧后面的帧全部都被丢失


:可不可以只重传出错的帧?

解决办法:设置单个确认,同时加大接收窗口,设置接收缓存,缓存乱序到达的帧

9.2、选择重传协议中的滑动窗口

滑动窗口的图解

发送方

接收方

9.3、SR发送方必须响应的三件事

1、上层的调用

从上层收到数据后,SR发送方检查下一个可用于该帧的序号,如果序号位于发送窗口内,则发送数据帧;否则就像GBN—样,要么将数据缓存,要么返回给上层之后再传输。

2、收到了一个ACK

如果收到ACK,加入该帧序号在窗口内,则SR发送方将那个被确认的帧标记为己接收。如果该帧序号是窗口的下界(最左边第一个窗口对应的序号),则窗口向前移动到具有最小序号的未确认帧处。如果窗口移动了 并且有序号在窗口内的未发送帧,则发送这些帧。


  1. 发送方已经接收到 3 号帧的 ACK3,此时又接受到了 2 号帧的 ACK2,滑动窗口前移 2 位

  2. 如下,滑动窗口前移 2 位

3、超时时间

每个帧都有自己的定时器,一个超时事件发生后只重传一个帧。

9.4、SR接收方要做的事

对窗口内的帧统统不拒绝

来者不拒(窗口内的帧):SR接收方将确认一个正确接收的帧而不管其是否按序。失序的帧将被缓存,并返回给发送方一个该帧的确认帧【收谁确认谁】,直到所有帧(即序号更小的帧)皆被收到为止,这时才可以将一批帧按序交付给上层,然后向前移动滑动窗口。

  1. 5 号帧还未收到,6 号帧已经收到且被缓存起来,7 号帧此时也已经收到且被缓存起来

  2. 此时 5 号帧也来了,此时 5,6,7 号帧均已接收完毕

  3. 将 5,6,7 号帧交付给上层,滑动窗口前移

注意事项

如果收到了窗口序号外(小于窗口下界)的帧,就返回一个ACK。 其他情况,就忽略该帧。

为什么要这样做?有可能接收方已经发送了 ACK ,但由于网络延迟等原因,该 ACK 信号并未及时到达发送方(或者在网络链路上丢失),此时发送方触发重传机制,又会重新发送该帧。接收方为了给发送方打一针定心剂,返回 ACK 信号,意义是说:我已经接收到你传送的数据啦,只是那个 ACK 你还没有接到啦(或者已经丢失啦)~~~

9.5、SR发送和接收过程

图解SR发送和接收过程

  1. 发送方发送 0 号帧,接收方接收到 0 号帧后,返回 ACK1 应答信号,并将滑动窗口前移

  2. 发送方发送 2 号帧时出现丢失情况

  3. 发送方继续发送 3 号帧,接收方接收到 3 号帧将其放入缓冲区,并返回 ACK3 应答信号

  4. 当发送方检测到 2 号帧超时后,重新发送2 号帧,接收方接收到 2~5 号帧,将其交付至上层处理,并将滑动窗口前移

9.6、滑动窗口长度

窗口长度可以无限吗?

发送窗口最好等于接收窗口。(大了会溢出,小了没意义)
WTmax=WRmax=2n−1W_{Tmax} = W_{Rmax} = 2^{n-1} WTmax​=WRmax​=2n−1

举个栗子

举例说明:帧编号为 0~3,滑动窗口大小为 3

  1. 当 0~2 号帧均丢失后,发送方超时后会重发 0~2 号帧,此时 0 号帧为重传的(旧的)数据帧

  2. 当发送方接受到 1 号帧的 ACK 应答信号之后,发送窗口前移,此时会发送新的 0 号帧,但对于接收方来说,无法判断 0 号帧是属于前面的滑动窗口还是属于后面的滑动窗口,即无法判断这个 0 号帧是和前面的 1~3 号帧进行重组还是和后面的 1~3 号帧进行重组

  3. 接收方不知道发送过来的 0 号帧是新帧还是旧帧,这是因为滑动窗口的长度过大(相比于帧编号)

9.7、SR协议重点总结

总结

  1. 对数据帧逐一确认,收一个确认一个
  2. 只重传出错帧
  3. 接收方有缓存
  4. 滑动窗口长度最大为 2n-1

9.8、习题

举个例题

数据链路层采用了选择重传(SR )协议,发送方已经发送了编号为0〜3的帧。现已收到1号帧的确认,而0、2号帧依次超时,则发送方需要重传的帧数是( )。

A.2 B.3 C.4 D.5

答:0 和 2 号帧超时,需要重传,3 号帧状态无法确定

9.9、本节课小结

10、信道划分介质访问控制

10.1、传输数据使用的两种链路

1、点对点链路:两个相邻节点通过一个链路相连,没有第三者。

应用:PPP协议,常用于广域网。

2、广播式链路:所有主机共享通信介质。

应用:早期的总线以太网、无线局域网,常用于局域网。

典型拓扑结构:总线型、星型(逻辑总线型)


总线型:假如说 Server 到 PC 之间的 的总线出故障,那么 Server 与 WORKSTATION 和 PRINTER 之间也无法进行通信啦~

星型:一般在局域网中,交换设备为集线器,任一工作站到 HUB 的总线出故障,不会影响其他工作站的工作

10.2、介质访问控制

介质访问控制的分类

介质访问控制的内容就是,采取一定的措施,使得两对节点之间的通信不会发生互相干扰的情况

10.3、信道划分介质访问控制

信道划分介质访问控制到底是个啥玩意儿?

信道划分介质访问控制:将使用介质的每个设备与来自同一信道上的其他设备的通信隔离开,把时域和频域资源合理地分配给网络上的设备。

多路复用技术:把多个信号组合在一条物理信道上进行传输,使得多个计算机或终端设备共享信道资源,提高信道利用率。

把一条广播信道,逻辑上分成 几条用于两个节点之间通信的 互不干扰的子信道,实际就是把广播信道转变为点对点信道。

举个栗子

A1、B1、C1 发送的数据通过复用器后拧成一捆,到达接收端复用器后被分解开,被接收方A2、B2、C2 所识别并接受

静态划分信道

用户通信之前,事先按照时间或空间划分信道,使得每个用户之间的通信不会互相干扰

10.4、频分多路复用FDM

每个用户独占一个频段

用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带。频分复用的所有用户在同样的时间占用不同的带宽(频率带宽)资源。

频分多路复用FDM的特点

用户共享信道的时间,没有共享信道的空间

充分利用传输介质带宽,系统效率较高;由于技术比较成熟,实现也比较容易。

10.5、时分多路复用TDM

用户分时共享信道

将时间划分为一段段等长的时分复用帧(TDM帧)。每一个时分复用的用户在每一个TDM帧中占用固定序号的时隙,所有用户轮流、周期性地占用信道。

时分多路复用TDM的特点

TDM帧是在物理层传送的比特流所划分的帧,标志一个周期,并不是数据链路层的帧

用户共享信道的时间,没有共享信道的空间

时分多路复用TDM的弊端

假如 A、B、C 都处于空闲状态,只有 D在通信,那么信道的利用率较低,假如信道的传输速率为 8000b/s,那么 D 的最高传输速率为 2000b/s

10.6、改进的时分复用之统计时分复用STDM

统计时分复用STDM的原理

每一个STDM帧中的时隙数小于连接在集中器上的用户数。各用户有了数据就随时发往集中器的输入缓存,然后集中器按顺序依次扫描输入缓存,把缓存中的输入数据放入STDM帧中,一个STDM帧满了就发出。STDM帧不是固定分配时隙,而是按需动态分配时隙。

注意事项

说白了就是集中器负责收集发送方的数据,收集满了就发送出去,但我就搞不懂了,接收方咋接受呢???

假如 A、B、C 都处于空闲状态,只有 D在通信,假如信道的传输速率为 8000b/s,由于是不固定时序,那么 D 的最高传输速率为 8000b/s

10.7、波分多路复用WDM

光的频分多路复用

波分多路复用就是光的频分多路复用,在一根光纤中传输多种不同波长(频率)的光信号,由于波长(频率)不同,所以各路光信号互不干扰,最后再用波长分解复用器将各路波长分解出来。

10.8、码分多路复用CDM

码分多路复用CDM的原理

  1. 码分多址(CDMA)是码分复用的一种方式。
  2. 1个比特分为多个码片/芯片(chip),每一 个站点被指定一个唯一的m位的芯片序列
  3. 发送1时发送芯片序列(通常把0写成-1)。
  4. 发送1时站点发送芯片序列,发送0时发送芯片序列反码。

举个栗子

A 站点发比特 1,B 站点发比特 0


PS:我没有看懂。。。

11、ALOHA协议

11.1、介质访问控制

动态分配信道

动态分配信道:信道并非在用户通信时固定分配给用户,所有用户可随机发送信息,所以就存在冲突问题,动态分配信道的主要任务就是解决冲突

11.2、ALOHA协议的来源

Aloha ≈ 你好

Aloha,是夏威夷人表示致意的问候语,这项研究计划的目的是要解决夏威夷群岛之间的通信问题。Aloha网络可以使分散在各岛的多个用户通过无线电信道来使用中心计算机,从而实现一点到多点的数据通信。由此可见,ALOHA采用的是一种随机接入的信道访问方式。

11.3、纯ALOHA协议

纯ALOHA协议思想:不监听信道, 不按时间槽发送,随机重发。想发就发

  1. T0 = 发送时间 + 传播时间,即发送方发送数据帧并成功接收到确认帧的时间间隔
  2. 站 N-1 不会监听信道,所以它并不知道自己发送的帧与站 2 的帧冲突,如果发生冲突,接收方在就会检测出差错,然后不予确认(或者 NACK 否定确认帧)
  3. 发送方在一段时间内没有接收到确认帧,便超时重传,直至发送成功为止

冲突的检测与解决

1、冲突如何检测?

如果发生冲突,接收方在就会检测出差错,然后不予确认(或者 NACK 否定确认帧),发送方在一定时间内收不到就判断发生冲突。

2、冲突如何解决?

超时后等一随机时间再重传。

11.4、时隙ALOHA协议

时隙ALOHA协议:划分时间片

纯ALOHA协议的缺点:太随性,太容易冲突

时隙ALOHA协议的思想:把时间分成若干个相同的时间片,所有用户在时间片开始时刻同步接入网络信道,若发生冲突,则必须等到下一个时间片开始时刻再发送。即控制想发就发的随意性。


T0 也称时间槽,或称为时隙,时隙ALOHA协议按照 T0 为基准分隔时间片,时间片的长度通常会大于 T0

当站 1 和 站 2 在同一时间片的起始时间发送了数据帧,会产生冲突,冲突后会触发超时重发机制

11.5、关于ALOHA要知道的事

纯ALOHA与时隙ALOHA的对比

  1. 纯ALOHA比时隙ALOHA吞吐量更低,效率更低。

  2. 纯ALOHA想发就发,时隙ALOHA只有在时间片段开始时才能发。

  3. 时隙ALOHA协议控制发送的随意性,降低碰撞的概率,从而提高吞吐量

12、CSMA协议

12.1、介质访问控制

CSMA 协议是个有礼貌的协议

ALOHA 协议:我不听我不听,我就要说话

CSMA 协议:你说我听着,听你说完我再说

12.2、CSMA协议概述

载波监听多路访问协议CSMA (carrier sense multiple access)

CS:载波侦听/监听,每一个站在发送数据之前要检测一下总线上是否有其他计算机在发送数据(当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)。当一个站检测到的信号电压摆动值超过一定门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞,即发生了冲突。)

MA:多点接入,表示许多计算机以多点接入的方式连接在一根总线上。


协议思想:发送帧之前,监听信道。

12.3、1-坚持CSMA

1-坚持CSMA思想:

坚持指的是对于监听信道忙之后的坚持

  1. 如果一个主机要发送消息,那么它先监听信道。
  2. 空闲则直接传输,不必等待。
  3. 忙则一直监听,直到空闲马上传输。
  4. 如果有冲突(一段时间内未收到肯定回复),则等待一个随机长的时间再监听,重复上述过程。 (ALOHA 协议时检测到冲突则等待一个随机长的时间再重传)

1-坚持CSMA的优缺点

优点:只要媒体空闲,站点就马上发送,避免了媒体利用率的损失。

缺点:假如有两个或两个以上的站点有数据要发送,冲突就不可避免。(因为如果有两个以上的站点想要发送消息,则会一直监听信道,等到信道空闲时马上传输消息,进而造成冲突)

12.4、非坚持CSMA

非坚持CSMA思想

非坚持指的是对于监听信道忙之后就不继续监听。

  1. 如果一个主机要发送消息,那么它先监听信道。
  2. 空闲则直接传输,不必等待。
  3. 忙则等待一个随机的时间之后再进行监听。

非坚持CSMA思想的优缺点

优点:采用随机的重发延迟时间可以减少冲突发生的可能性。

缺点:可能存在大家都在延迟等待过程中,使得媒体仍可能处于空闲状态,媒体使用率降低。

12.5、p-坚持CSMA

官方文档哟

p-坚持CSMA思想

p-坚持指的是对于监听信道空闲的处理。

  1. 如果一个主机要发送消息,那么它先监听信道。

  2. 空闲则以P概率直接传输,不必等待;概率1-P等待到下一个时间槽再传输。

  3. 忙则持续监听直到信道空闲再以p概率发送。

  4. 若冲突则等到下一个时间槽开始再监听并重复上述过程。

p-坚持CSMA思想的优缺点

优点:既能像非坚持算法那样减少冲突(使用概率降低冲突),又能像1-坚持算法那样减少媒体空闲时间的这种方案(忙则一直监听)。

缺点:发生冲突后还是要坚持把数据帧发送完,造成了浪费。

CSMA 协议引发的思考

有没有什么办法可以减少资源浪费,一冲突就能发现呢?

说白了,还是当前站点发送数据时,没有去检测信道是否已经被其他站点占用

12.6、本节课总结

13、CSMA/CD 协议

13.1、介质访问控制

13.2、CSMA/CD 协议概述

载波监听多点接入/碰撞检测:CSMA/CD (carrier sense multiple access with collision detection)

  1. CS:载波侦听/监听,每一个站在发送数据之前以及发送数据时都要检测一下总线上是否有其他计算机在发送数据。(监测总线电压摆动幅值)
  2. MA:多点接入,表示许多计算机以多点接入的方式连接在一根总线上。总线型网络
  3. CD:碰撞检测(冲突检测),“边发送边监听”,适配器边发送数据边检测信道上信号电压的变化情况,以便判 断自己在发送数据时其他站是否也在发送数据。

CSMA/CD 协议的适用情况

适用于半双工总线型以太网络,因为不允许有两个以上的站点同时在总线上发送数据


先听后发为什么还会冲突?

因为电磁波在总线上总是以有限的速率传播的。

13.3、传播时延对载波监听的影响

看个例子

假设有 A 和 B 两个站点互相发送数据,定义单程端到端的传播时延为 τ

  1. 最迟多久才能知道自己发送的数据没和别人碰撞?最多是两倍的总线端到端的往返传播时延2τ(B 刚发送数据就和 A 产生了碰撞,此时 A 需要经过 2τ 时间后才能检测到碰撞),这个时间也叫做争用期/冲突窗口/碰撞窗口
  2. 也即只要经过2τ时间还没有检测到碰撞,就能肯定这次发送不会发生碰撞。

13.4、如何确定碰撞后的重传时机?

为什么需要确定计算重传时机?

以上面的例子进行讲解

  1. A 和 B 两个站点互相发送数据,假设它们都在 0 时刻向信道发送了数据,它们在 τ/2 时刻会发生碰撞,并在 τ 时刻检测到碰撞
  2. 假设 A 和 B 两个站点都隔了 τ 时刻再次发送数据,还是会发生碰撞

    第 3 章 数据链路层相关推荐

    1. 第三章--数据链路层

      第三章--数据链路层 本章目录: 3.1使用点对点信道的数据链路层 3.1.1数据链路和帧 3.1.2三个基本问题 3.2点对点协议PPP 3.2.1PPP协议的特点 3.2.2PPP协议的帧格式 3 ...

    2. 计算机数据链路层教案,第三章 数据链路层(2) 新.ppt

      文档介绍: 计算机通信网20112011年教案年教案作者:段景山作者:段景山杨宁杨宁毛玉明毛玉明2第三章数据链路层??链路层功能链路层功能??成帧成帧??差错检测和纠正差错检测和纠正??差控与流控协议 ...

    3. 计算机网络——第三章 数据链路层(详细附图)

      第三章 数据链路层 3.1 数据链路层概述 3.1.1 本章问题 封装成帧 差错检测 可靠传输 广播信道的数据链路层 网桥和交换机的工作原理 3.2 封装成帧 封装成帧 透明传输 面向字节的物理链路 ...

    4. 计算机网络第三章数据链路层习题答案

      计算机网络第三章数据链路层习题答案 3-02数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点. 答:链路管理 帧定界 流量控制 差错控制 将数据和控制信息区分开 透 ...

    5. 计算机网络题库——第3章数据链路层

      第 3 章 数据链路层 一.选择题 1.数据链路层采用了后退N 帧的(GBN)协议,如果发送窗口的大小是 32,那么至少需要( )位的序列号才能保证协议不出错. A.4 位 B.5 位 C.6 位 D ...

    6. 计算机网络第三章——数据链路层(仅记录我所认为重要的知识点)

      计算机网络第三章--数据链路层 数据链路层使用的信道类型 点对点信道 广播信道 数据链路层位置 数据链路层的3个基本问题 数据链路和帧 链路 数据链路 数据链路层传输的是帧 封装成帧 透明传输问题 差 ...

    7. 第三章数据链路层测试题

      第三章 数据链路层 一.选择题 1. 数据在传输过程出现差错的主要原因是(A ) A. 突发错 B. 计算错 C. CRC错 D. 随机错 2. PPP协议是哪一层的协议? ( B ) A. 物理层 ...

    8. 计算机网络原理笔记 第三章 数据链路层(一)

      计算网络原理 第三章 数据链路层 数据链路层(一) 3.1 使用点对点信道的数据链路层 3.1.1 数据链路层和帧 3.1.2 三个基本问题 数据链路层的信道类型 3.2 点对点协议 PPP 3.2. ...

    9. 【计算机网络】第三章 数据链路层

      目录 第三章 数据链路层 3.1 使用点对点信道的数据链路层 3.1.1 数据链路和帧 3.1.2 三个基本问题 3.2 点对点协议 PPP 3.2.1 PPP协议的特点 PPP协议满足的需求 PPP ...

    10. 计算机网络之第3章 数据链路层

      计算机网络 第3章.数据链路层 数据链路层概述 数据链路层传输和处理数据的单位是 帧 下列不属于数据链路层功能的是 拥塞控制 共享式以太网的媒体接入控制协议和802.11局域网的媒体接入控制协议分别是 ...

    最新文章

    1. 现学现用!学完计组后,我马上在「我的世界」造了台显示器
    2. 第8章 基本UDP套接口编程
    3. ribbon客户端的负载均衡
    4. 为什么手机网速太慢_为什么手机信号满格,网速却很慢?终于知道为啥了
    5. Java-String的常用方法总结!
    6. Windows编程之定时器的使用和定时销毁桌面出现的窗口,以及窗口句柄的获取
    7. 【教程】把PPT转WORD形式的方法
    8. redis之proxy集群之twemproxy
    9. 比较重要的物料管理交易代码列表
    10. unity3d 资源网站(持续更新中。。。)
    11. 电脑无损分区大小调整
    12. GB2312、BIG5、GBK、GB18030简介
    13. 左耳朵耗子:如何超过大多数人
    14. 计算机程序员证书限制条件,高级程序员考试报名条件有什么限制?
    15. echarts横向柱状图
    16. 驰骋工作流签订中国航天,广东航宇卫星
    17. UniApp 获取屏幕分辨率
    18. 记录centos 7.9 LNMP为网站申请SSL证书详细操作
    19. Python+大数据-数据处理与分析-pandas快速入门
    20. win10不能设置ip地址

    热门文章

    1. Word制作倒福实例教程
    2. python屏幕文字识别_Python文字截图识别OCR工具实例解析
    3. NAS入门之——My Cloud EX2+中继路由接入网络访问
    4. 适合编写python的笔记本_适合编程的笔记本
    5. java基于ssm+vue智慧餐厅点餐管理系统element
    6. Google 谷歌浏览器
    7. 「图片版」ps常用快捷键大全,设计师进阶之路
    8. mac拓展显示屏睡眠或锁屏后启动黑屏,mac typeC不支持4K 60HZ
    9. 1120.泽泽在英国
    10. 区块链将如何推动第四次工业革命