第 3 章 数据链路层

94
第 3 第 第第第第第 第第第第第第第第第第第第第第 第第第第第第第第第第第第第 第第第第第第第 第第 ,:, ARQ 第第 第第第第第第第 ,, ARQ 第第Internet 第第第第第第第第第第第第第 第第第第第第第第第第 第第第第第第第第第第第第 第第第第第第

Upload: zahur

Post on 17-Jan-2016

155 views

Category:

Documents


0 download

DESCRIPTION

第 3 章 数据链路层. 基本内容: 数据链路层的基本概念,数据链路层协议的工作原理:停止等待协议,连续 ARQ 协议,滑动窗口,选择 ARQ 协议, Internet 中的数据链路层协议。 重点掌握: 数据链路层的基本概念。 数据链路层协议的工作原理。 滑动窗口原理。. 3.1 数据链路层的基本概念. 链路 (link) 是一条无源的点到点的物理线路段,中间没有任何其他的交换结点。 数据链路 (data link) 除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第  3  章     数据链路层

第 3 章 数据链路层

基本内容:数据链路层的基本概念,数据链路层协议的工作原理:停止等待协议,连续 ARQ 协议,滑动窗口,选择ARQ 协议, Internet 中的数据链路层协议。重点掌握:

数据链路层的基本概念。 数据链路层协议的工作原理。 滑动窗口原理。

Page 2: 第  3  章     数据链路层

3.1 数据链路层的基本概念

链路 (link) 是一条无源的点到点的物理线路段,中间没有任何其他的交换结点。 数据链路 (data link) 除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。

数据链路 / 逻辑链路 = 物理链路 + 通信规程

Page 3: 第  3  章     数据链路层

该层要解决的问题:如何在有差错的线路上,进行无差错传输。数据链路层协议功能图示。

数据链路层的模型

Page 4: 第  3  章     数据链路层

数据链路层像个数字管道

常常在两个对等的数据链路层之间画出一个数字管道,而在这条数字管道上传输的数据单位是帧。

早期的数据通信协议曾叫作通信规程 (procedure) 。因此在数据链路层,规程和协议是同义语。

结点 结点帧 帧

Page 5: 第  3  章     数据链路层

在数据链路层上传输数据帧在数据链路层上传输数据帧

?发送方:

?接收方:

?传输过程:

!解决这些问题,是数据链路层的主要任务。

!针对这些问题所制定的通信规程就是数据链路层的通信协议。

以多快的速度发送数据帧,即每帧之间相隔多长时间?如何确认对方是否收到数据?

是否接收到正确的数据帧?如何告诉发送方?能及时处理接收到的数据帧吗?

会出错吗?会丢失数据帧吗?

Page 6: 第  3  章     数据链路层

数据链路层的主要功能

数据链路层最重要的作用就是:通过一些数据链路层协议,在不太可靠的物理链路上实现可靠的数据传输。其主要功能可归纳如下: (1) 链路管理 (2) 帧定界 (3) 流量控制 (4) 差错控制 (5) 将数据和控制信息区分开 (6) 透明传输 (7) 寻址

Page 7: 第  3  章     数据链路层

数据链路层的主要功能

(1) 链路管理 - 当网络中的两个结点要进行通信时,数据的发方必须确知收方是否已处在准备接受的状态。为此通信的双方必须先要交换一些必要的信息, 用术语讲必须先建立一条数据链路。在传输数据时要维持数据链路,而在通信完毕时要释放数据链路。数据链路的建立、维持和释放就叫做链路管理。

(2) 帧同步 - 在数据链路层,数据的传送单位时帧。数据一帧一帧地传送,就可以在出现差错时,将有差错的帧再重传一次,避免了全部数据的重传。帧同步是指收方应当能从受到的比特流中准确地区分出一帧的开始和结束。

Page 8: 第  3  章     数据链路层

数据链路层的主要功能

(3) 流量控制 - 发方发送数据的速率必须使收方来得及接收。当收方来不及接收时,就必须及时控制发方发送数据的速率。(4) 差错控制 - 在计算机通信中,一般都要求有极低的比特差错率。为此广泛地使用了编码技术,主要有两大类,一类是前向纠错,即收方收到有差错的数据帧时能自动将差错改正过来。这种方法的开销较大,不适合于计算机通信。另一类是检错重发,即收方可以检测出收到的帧中有差错,于是就让发方重复发送这一帧,直到收方正确收到这一帧为止。这种方法在计算机通信中是最常用的。

Page 9: 第  3  章     数据链路层

数据链路层的主要功能

(5) 将数据和控制信息区分开 -由于数据和控制信息都是在同一信道中传输,在许多情况下,数据和控制信息处于同一帧中,因此一定要有响应的措施使收方能够将他们区分开来。(6) 透明传输 - 所谓透明传输就是不管所传数据是什么样的比特组合,都应当能够在链路上传送。当所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使收方不会将这样的数据误认为是某种控制信息。这样才能保证数据链路层的传输是透明的。 (7) 寻址 - 在多点连接的情况下,必须保证每一帧都能送到正确的地址。双方也应当知道发方是哪一个站。

Page 10: 第  3  章     数据链路层

3.2 停止等待协议

3.2.1 完全理想化的数据传输 3.2.2 具有最简单流量控制的数据链路层协议 3.2.3 实用的停止等待协议 3.2.4 循环冗余检验的原理 3.2.5 停止等待协议的算法 3.2.6 停止等待协议的定量分析

Page 11: 第  3  章     数据链路层

3.2.1 完全理想化的数据传输

数据链路层的简单模型:

局域网 广域网主机 H1 主机 H2

路由器 R1 路由器 R2

路由器 R3

电话网 局域网

主机 H1 向 H2 发送数据

链路层

应用层运输层网络层

物理层链路层

应用层运输层网络层

物理层链路层网络层

物理层链路层网络层

物理层链路层网络层

物理层

R1 R2 R3

H1 H2从层次上来看数据的流动

Page 12: 第  3  章     数据链路层

3.2.1 完全理想化的数据传输

数据链路层的简单模型(续):

局域网 广域网主机 H1 主机 H2

路由器 R1 路由器 R2

路由器 R3

电话网 局域网

主机 H1 向 H2 发送数据

链路层

应用层运输层网络层

物理层链路层

应用层运输层网络层

物理层链路层网络层

物理层链路层网络层

物理层链路层网络层

物理层

R1 R2 R3

H1 H2仅从数据链路层观察帧的流动

Page 13: 第  3  章     数据链路层

3.2.1 完全理想化的数据传输

两台计算机通过一条通信链路进行通信的筒化模型:

数据链路层

主机 A

缓存缓存

主机 B

数据链路

AP2AP2AP1AP1

缓存缓存

发送方 接收方

高层

Page 14: 第  3  章     数据链路层

完全理想化的数据传输所基于的两个假定

假定 1 :链路是理想的传输信道,所传送的任何数据既不会出差错也不会丢失。 假定 2 :不管发方以多快的速率发送数据,收方总是来得及收下,并及时上交主机。

这个假定就相当于认为:接收端向主机交付数据的速率永远不会低于发送端发送数据的速率。

Page 15: 第  3  章     数据链路层

3.2.2 具有最简单流量控制的数据链路层协议

现在去掉上述的第二个假定。但是,仍然保留第一个假定,即主机 A向主机 B传输数据的信道仍然是无差错的理想信道。然而现在不能保证接收端向主机交付数据的速率永远不低于发送端发送数据的速率。 由收方控制发方的数据流,是计算机网络中流量控制的一个基本方法。

Page 16: 第  3  章     数据链路层

3.2.2 具有最简单流量控制的数据链路层协议

在发送结点: (1) 从主机取一个数据帧。 (2) 将数据帧送到数据链路层的发送缓存。 (3) 将发送缓存中的数据帧发送出去。 (4) 等待。 (5) 若收到由接收结点发过来的信息,则从主机取一个新的数据帧,然后转到 (2) 。

在接收结点: (1) 等待。 (2) 若收到由发送结点发过来的数据帧,则将其放入数据链路层的接收缓存。 (3) 将接收缓存中的数据帧上交主机。 (4) 向发送结点发一信息,表示数据帧已经上交给主机。 (5) 转到 (1) 。

Page 17: 第  3  章     数据链路层

两种情况的对比(传输均无差错)

A B

DATA

DATA

DATA

DATA

送主机 B

送主机 B

送主机 B

送主机 B

A B

DATA

送主机 B

DATA

送主机 B

时间

不需要流量控制 需要流量控制

Page 18: 第  3  章     数据链路层

3.2.3 实用的停止等待协议

时间

A B

DATA0

送主机

ACK

DATA1

送主机

ACK

(a) 正常情况

A B

DATA0

DATA0

送主机

ACK

(c) 数据帧丢失

重传

tout

丢失 !

A B

DATA0

送主机

ACK

DATA0

丢弃ACK

(d) 确认帧丢失

重传

tout 丢失 !

A B

DATA0

NAK

DATA0

送主机

ACK

(b) 数据帧出错

重传

出错

四种情况

Page 19: 第  3  章     数据链路层

解决死锁问题

结点 A 发送完一个数据帧时,就启动一个超时计时器 (ti

meout timer) 。 若到了超时计时器所设置的重传时间 tout 而仍收不到结

点 B 的任何确认帧,则结点 A 就重传前面所发送的这一数据帧。 一般可将重传时间选为略大于“从发完数据帧到收到确认帧所需的平均时间”。

Page 20: 第  3  章     数据链路层

解决重复帧的问题

如果是确认帧丢失,则超时重传将使主机 B 收到两个相同的数据帧,这就是重复帧。 使每一个数据帧带上不同的发送序号。每发送一个新的数据帧就把它的发送序号加 1 。 若结点 B 收到发送序号相同的数据帧,就表明出现了重复帧。这时应丢弃重复帧,因为已经收到过同样的数据帧并且也交给了主机 B 。 但此时结点 B 还必须向 A 发送确认帧 ACK ,因为 B

已经知道 A 还没有收到上一次发过去的确认帧 ACK 。

Page 21: 第  3  章     数据链路层

帧的编号问题

任何一个编号系统的序号所占用的比特数一定是有限的。因此,经过一段时间后,发送序号就会重复。 序号占用的比特数越少,数据传输的额外开销就越小。 对于停止等待协议,由于每发送一个数据帧就停止等待,因此用一个比特来编号就够了。 注:一个比特可表示 0 和 1 两种不同的序号。

Page 22: 第  3  章     数据链路层

帧的发送序号

数据帧中的发送序号 N(S) 以 0 和 1 交替的方式出现在数据帧中。 每发一个新的数据帧,发送序号就和上次发送的不一样。用这样的方法就可以使收方能够区分开新的数据帧和重传的数据帧了。

Page 23: 第  3  章     数据链路层

可靠传输

虽然物理层在传输比特时会出现差错,但由于数据链路层的停止等待协议采用了有效的检错重传机制,数据链路层对上面的网络层就可以提供可靠传输的服务。

Page 24: 第  3  章     数据链路层

3.2.4 循环冗余检验的原理

在数据链路层传送的帧中,广泛使用了循环冗余检验 CR

C 的检错技术。假设待传送的数据 M = 1010001101(共 k bit)。我们在 M 的后面再添加供差错检测用的 n bit 冗余码一起发送。冗余码的计算

用二进制的模 2 运算进行 2n 乘 M 的运算,这相当于在 M 后面添加 n 个 0 。得到的 (k + n) bit 的数除以事先选定好的长度为 (n

+ 1) bit 的数 P ,得出商是 Q 而余数是 R ,余数 R

比除数 P 至少要少 1 个比特。

Page 25: 第  3  章     数据链路层

冗余码的计算举例

设 n = 5, P = 110101 , M = 1010001101 模 2 运算的结果是:

商 Q = 1101010110 ,余数 R = 01110 。

将余数 R 作为冗余码添加在数据 M 的后面发送出去,即发送的数据是 101000110101110 ,或 2nM + R 。

Page 26: 第  3  章     数据链路层

循环冗余检验的原理说明

1101010110 ← Q 商 除数 P → 110101 101000110100000 ← 2nM 被除数 110101 111011

110101 111010 110101 111110 110101 101100 110101 110010 110101 01110 ← R 余数

Page 27: 第  3  章     数据链路层

循环冗余检验的原理说明

只要得出的余数 R 不为 0 ,就表示检测到了差错。 但这种检测方法并不能确定究竟是哪一个或哪几个比特出现了差错。 一旦检测出差错,就丢弃这个出现差错的帧。 只要经过严格的挑选,并使用位数足够多的除数 P ,那么出现检测不到的差错的概率就很小很小。

Page 28: 第  3  章     数据链路层

3.2.5 停止等待协议的算法

在发送结点:(1) 从主机取一个数据帧,送交发送缓存。(2) V(S)←0。 (3) N(S)←V(S) 。(4) 将发送缓存中的数据帧发送出去。 (5) 设置超时计时器。(6) 等待。 {等待以下 (7) 和 (8) 这两个事件中最先出现的一个 }(7) 收到确认帧 ACKn,若 n = 1 – V(s) ,则:从主机取一个新的数据帧,放入发送缓存;V(S)←[1 V(S)],转到 (3) 。否则丢弃这个确认帧,转到 (6) 。 (8) 若超时计时器时间到,则转到 (4) 。

Page 29: 第  3  章     数据链路层

3.2.5 停止等待协议的算法

在接收结点:(1) V(R)←0 。(2) 等待。(3) 收到一个数据帧; 若 N(S) = V(R) ,则执行 (4); 否则丢弃此数据帧,然后转到 (6) 。(4) 将收到的数据帧中的数据部分送交上层软件。(5) V(R)←[1 V(R)] 。(6) n←V(R); 发送确认帧 ACKn ,转到 (2) 。

Page 30: 第  3  章     数据链路层

3.2.6 停止等待协议的定量分析

设 tf 是一个数据帧的发送时间,且数据帧的长度是固定

不变的。显然,数据帧的发送时间 tf 是数据帧的长度 lf (bi

t)与数据的发送速率 C (bit/s) 之比,即

tf = lf /C = lf /C (s) ( 3-1)

发送时间 tf 也就是数据帧的发送时延。

数据帧沿链路传到结点 B 还要经历一个传播时延 tp 。 结点 B 收到数据帧要花费时间进行处理,此时间称为处理时间 tpr ,发送确认帧 ACK 的发送时间为 ta 。

Page 31: 第  3  章     数据链路层

停止等待协议中数据帧和确认帧的发送时间关系

A B

DATA

DATA

ACK

传播时延 tp

处理时间 tpr

确认帧发送时间 ta

传播时延 tp

处理时间 tpr

tT

时间

两个成功发送的数据帧之间的最小时间间隔

数据帧的发送时间 tf

设置的重传时间

tout

Page 32: 第  3  章     数据链路层

重传时间

重传时间的作用是:数据帧发送完毕后若经过了这样长的时间还没有收到确认帧,就重传这个数据帧。 为方便起见,我们设重传时间为

tout = tp + tpr+ ta + tp + tpr

设上式右端的处理时间 tpr 和确认帧的发送时间 ta 都远小于传播时延 tp ,因此可将重传时间取为两倍的传播时延,即

tout = 2tp

Page 33: 第  3  章     数据链路层

简单的数学分析

两个发送成功的数据帧之间的最小时间间隔是

tT = tf + tout = tf + 2tp

设数据帧出现差错 (包括帧丢失 ) 的概率为 p ,但假设确认帧不会出现差错。 设正确传送一个数据帧所需的平均时间 tav

tav = tT ( 1 + 一个帧的平均重传次数 )

Page 34: 第  3  章     数据链路层

简单的数学分析(续)

一帧的平均重传次数

= {1 P[ 重传次数为 1] + 2 P[ 重传次数为 2] + 3 P[ 重传次数为 3] +…}

= {1 P[ 第 1 次发送出错 ] P[ 第 2 次发送成功 ]

+ 2 P[ 第 1, 2 次发送出错 ] P[ 第 3 次发送成功 ]

+ 3 P[ 第 1, 2, 3 次发送出错 ] P[ 第 4 次发送成功 ] +…}

= p(1 – p) + 2p2(1 – p) + 3p3(1 – p) + …

这里 P[X] 是出现事件 X 的概率。

得出正确传送一个数据帧所需的平均时间:

当传输差错率增大时, tav 也随之增大。当无差错时, p = 0, tav = tT 。

)1(/)1(1

pttipptti

TTi

Tav

Page 35: 第  3  章     数据链路层

简单的数学分析(续)

每秒成功发送的最大帧数就是链路的最大吞吐量 max 。显然,

max = 1/tav = (1 p) / tT

在发送端,设数据帧的实际到达率为,则不应超过最大吞吐量 max ,即

(1 p) / tT

用时间 tf 进行归一化,得出归一化的吞吐量 为

tf (1 p) / < 1

其中参数 是 tT 的归一化时间:

tT / tf 1

当重传时间远小于发送时间时, 1 ,此时的归一化吞吐量

1 p

Page 36: 第  3  章     数据链路层

停止等待协议 ARQ 的优缺点

优点:比较简单 。

缺点:通信信道的利用率不高,也就是说,信道还远远没有被数据比特填满。

为了克服这一缺点,就产生了另外两种协议,即连续 AR

Q 和选择重传 ARQ 。

Page 37: 第  3  章     数据链路层

3.3 连续 ARQ 协议

3.3.1 连续 ARQ 协议的工作原理 3.3.2 连续 ARQ 协议的吞吐量 3.3.3 滑动窗口的概念 3.3.4 信道利用率与最佳帧长

Page 38: 第  3  章     数据链路层

3.3.1 连续 ARQ 协议的工作原理

在发送完一个数据帧后,不是停下来等待确认帧,而是可以连续再发送若干个数据帧。 如果这时收到了接收端发来的确认帧,那么还可以接着发送数据帧。 若收到对其中某一帧的否认帧,则从该帧开始的后继帧全部重发。 由于减少了等待时间,整个通信的吞吐量就提高了。

Page 39: 第  3  章     数据链路层

3.3.1 连续 ARQ 协议的工作原理

DATA0DATA1DATA2DATA3DATA4DATA5

重传 DATA2重传 DATA3

ACK1

ACK2

ACK1 确认 DATA0

ACK2 确认 DATA1

DATA2 出错,丢弃DATA3 不按序,丢弃,重传 ACK2

DATA4 不按序,丢弃,重传 ACK2

DATA5 不按序,丢弃,重传 ACK2

ACK3ACK3 确认 DATA2

ACK4 确认 DATA3ACK4重传 DATA5

重传 DATA4

超时重传时间

A B

tout

送交主机

送交主机…

??

ACK2

ACK2

ACK2

Page 40: 第  3  章     数据链路层

需要注意

(1) 接收端只按序接收数据帧。虽然在有差错的 2号帧之后接着又收到了正确的 3 个数据帧,但接收端都必须将这些帧丢弃,因为在这些帧前面有一个 2 号帧还没有收到。(2) ACK1 表示确认 0 号帧 DATA0 ,并期望下次收到 1

号帧; ACK2 表示确认 1 号帧 DATA1 ,并期望下次收到 2号帧。依此类推。

Page 41: 第  3  章     数据链路层

需要注意

(3) 结点 A 在每发送完一个数据帧时都要设置该帧的超时计时器。如果在所设置的超时时间内收到确认帧,就立即将超时计时器清零。但若在所设置的超时时间到了而未收到确认帧,就要重传相应的数据帧。 在等不到 2 号帧的确认而重传 2 号数据帧时,虽然结点 A 已经发完了 5 号帧,但仍必须向回走,将 2号帧及其以后的各帧全部进行重传。连续 ARQ 又称为 Go-back-

N ARQ(又称回退 N式 ARQ 协议),意思是当出现差错必须重传时,要向回走 N 个帧,然后再开始重传。

Page 42: 第  3  章     数据链路层

连续 ARQ 协议的优缺点

连续 ARQ 协议一方面因连续发送数据帧而提高了效率,另一方面,在重传时又必须把原来已正确传送过的数据帧进行重传,这种做法又使传送效率降低。

若传输信道的传输质量很差因而误码率较大时,连续 AR

Q 协议不一定优于停止等待协议。

Page 43: 第  3  章     数据链路层

3.3.2 连续 ARQ 协议的吞吐量

)1(/])1(1[)1(1

ppattipptti

fTi

fav

在连续 ARQ 协议的情况下,正确传送一个数据帧所需的平均时间是:

吞吐量的最大值是: max = 1/tav = (1 p) / tT[1+( – 1) p]

而归一化的吞吐量为: = tf (1 p) / [1+( – 1) p]

可见,当等于 1 时,停止等待 ARQ与连续 ARQ性能相同。

Page 44: 第  3  章     数据链路层

3.3.2 连续 ARQ 协议的吞吐量

例:若数据帧的差错率 p=0.01 ,而参数 =4 ,则对于 停止等待协议, ≤ 0.99/4 ,但对于连续 ARQ 协议, ≤

0.96 。故即使在数据帧的差错率高达 0.01 时,连续 ARQ

的效率也比停止等待协议的高。注意:

停止等待协议归一化吞吐量 (1 p) /

连续 ARQ 协议归一化吞吐量 (1 p) / [1+( – 1)

p]

Page 45: 第  3  章     数据链路层

3.3.3 滑动窗口的概念

在连续 ARQ 协议中,应当将已发送出去但未被确认的数据帧的数目加发限制。 发送端和接收端分别设定发送窗口和接收窗口 。 发送窗口用来对发送端进行流量控制。

发送窗口的大小 WT 代表在还没有收到对方确认信息的

情况下发送端最多可以发送多少个数据帧。 接收窗口用来控制接收端可以接收哪些数据帧。只有发送序号落入接收窗口内的数据帧才可以收下。

Page 46: 第  3  章     数据链路层

0 1 2 3 4 5 6 7 0 1 2

发送窗口WT

不允许发送这些帧允许发送 5 个帧

(a)

0 1 2 3 4 5 6 7 0 1 2

不允许发送这些帧还允许发送 4 个帧

WT

已发送(b)

0 1 2 3 4 5 6 7 0 1 2

不允许发送这些帧

WT

已发送

(c)

0 1 2 3 4 5 6 7 0 1 2

不允许发送这些帧还允许发送 3 个帧

WT

已发送 已发送并已收到确认

(d)

当发送出数据时,滑动窗口从左边开始收缩;当收到确认时,滑动窗口向右扩展。

Page 47: 第  3  章     数据链路层

接收端设置接收窗口

在接收端只有当收到的数据帧的发送序号落入接收窗口内才允许将该数据帧收下。 若接收到的数据帧落在接收窗口之外,则一律将其丢弃。

在连续 ARQ 协议中,接收窗口的大小 WR = 1 。

只有当收到的帧的序号与接收窗口一致时才能接收该帧。否则,就丢弃它。 每收到一个序号正确的帧,接收窗口就向前(即向右方)滑动一个帧的位置。同时发送对该帧的确认。

Page 48: 第  3  章     数据链路层

不允许接收这些帧

0 1 2 3 4 5 6 7 0 1 2

WR

准备接收 0 号帧

(a)

不允许接收这些帧

0 1 2 3 4 5 6 7 0 1 2

WR

准备接收 1 号帧

已收到

(b)

不允许接收这些帧

0 1 2 3 4 5 6 7 0 1 2

WR

准备接收 4 号帧已收到

(c)

Page 49: 第  3  章     数据链路层

滑动窗口的重要特性

只有在接收窗口向前滑动时(与此同时也发送了确认),发送窗口才有可能向前滑动。 收发两端的窗口按照以上规律不断地向前滑动,因此这种协议又称为滑动窗口协议。 当发送窗口和接收窗口的大小都等于 1 时,就是停止等待协议。

Page 50: 第  3  章     数据链路层

发送窗口的最大值

当用 n 个比特进行编号时,若接收窗口的大小为 1 ,则只有在发送窗口的大小 WT 2n 1 时,连续 ARQ 协议

才能正确运行。 例如,当采用 3 bit 编码时,发送窗口的最大值是 7 而不是 8 。

Page 51: 第  3  章     数据链路层

发送窗口的最大值

显然 WT 内不可能有重复编号的帧,所以 WT≤2n 。设WT

=2n; 注意以下情况: 发送窗口:只有当收到对一个帧的确认,才会向前滑动一个帧的位置; 接收窗口:只有收到一个序号正确的帧,才会向前滑动一个帧的位置,且同时向发送端发送对该帧的确认。 显然只有接收窗口向前滑动时,发送端口才有可能向前滑动。发送端若没有收到该确认,发送窗口就不能滑动。

Page 52: 第  3  章     数据链路层

发送窗口的最大值

取 n=3 。考虑当接收窗口位于 0 时,发送窗口的两个极端状态。 状态 1 :全部确认帧收到 发送窗口: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7

接收窗口: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7  状态 2 :全部确认帧都没收到 发送窗口: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7

接收窗口: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 可见在状态 2 下,接收过程前移窗口后有效序列号的新范围和发送窗口的旧范围之间有重叠,致使接收端无法区分是重复帧还是新帧。为使旧发送窗口和新接收窗口之间序列号不发生重叠,所以 WT≤2n-1 。

Page 53: 第  3  章     数据链路层

3.3.4 信道利用率与最佳帧长

由于每个数据帧都必须包括一定的控制信息 ( 如帧的序号、地址、同步信息以及其他的一些控制信息 ) ,所以即使连续不停地发送数据帧,信道利用率 ( 即扣除全部的控制信息后的数据率与信道容量之比 )也不可能达到 100 % 。 当出现差错时 ( 这是不可避免的 ) ,数据帧的不断重传将进一步使信道利用率降低。

Page 54: 第  3  章     数据链路层

3.3.4 信道利用率与最佳帧长

若数据帧的帧长取得很短,那么控制信息在每一帧中所占的比例就增大,因而额外开销增大,这就导致信道利用率的下降。 若帧长取得太长,则数据帧在传输过程中出错的概率就增大,于是重传次数将增大,这也会使信道利用率下降。 由此可见,存在一个最佳帧长,在此帧长下信道的利用率最高。

Page 55: 第  3  章     数据链路层

3.4 选择重传 ARQ 协议

可加大接收窗口,先收下发送序号不连续但仍处在接收窗口中的那些数据帧。等到所缺序号的数据帧收到后再一并送交主机。 选择重传 ARQ 协议可避免重复传送那些本来已经正确到达接收端的数据帧。 但我们付出的代价是在接收端要设置具有相当容量的缓存空间。 对于选择重传 ARQ 协议,若用 n 比特进行编号,则接收窗口的最大值受下式的约束。 WR 2n/2

Page 56: 第  3  章     数据链路层

3.5 面向比特的链路层协议 HDLC

由于对控制方法影响较大的是传输信息的基本单位,因此链路控制规程有 "面向字符的控制规程 " 和 "面向比特的控制规程 " 。面向字符的控制规程把数据和控制信息都看作是字符,面向比特的控制规程把数据及控制信息都看作是位的组合。

Page 57: 第  3  章     数据链路层

数据链路控制规程分类

面向字符型 在这类规程中,用字符编码集中的几个特定字符来控制链路的操作,监视链路的工作状态,例如,采用国际 5号码中的 SOH 、 STX 作为帧的开始, ETX 、 ETB 作为的结束, ENQ 、 EOT 、 ACK 、 NAK 等字符控制链路操作。 面向比特型 在这类规程中,采用特定的二进制序列 01111110 作为帧的开始和结束,以一定的比特组合所表示的命令和响应实现链路的监控功能,命令和响应可以和信息一起传送。

Page 58: 第  3  章     数据链路层

3.5 面向比特的链路层协议 HDLC

面向字符型数据链路层协议的缺点: 报文格式不一样; 传输透明性不好; 等待发送方式,传输效率低。

面向比特型协议的设计目标: 以比特作为传输控制信息的基本单元; 数据帧与控制帧格式相同; 传输透明性好; 连续发送,传输效率高。

Page 59: 第  3  章     数据链路层

HDLC 的基本工作原理(基本特征)

三种类型的站: 主站:负责链路的操作,主站发出的帧称为命令。 次站:在主站的控制下进行操作。 组合站:组合了主站和次站的特性,既可发命令,也可发响应。两种链路组合 :

非平衡组合: 1 个主站 + 1~ 多个次站。 平衡组合:两个组合站组成。

Page 60: 第  3  章     数据链路层

HDLC 的基本工作原理(基本特征)

操作方式: 正常响应方式 (NRM) :适用于不平衡链路结构,即用于点 - 点和点 - 多点的链路结构中。由主站控制整个链路的操作,负责链路的初始化、数据流控制和链路复位等。从站只有在收到主站的明确允许后,才能发出响应。 异步响应方式 (ARM) :也适用于不平衡链路结构。从站可以不必得到主站的允许就可以开始数据传输。 异步平衡方式 (ABM) :适用于平衡链路结构。链路两端的复合站具有同等的能力,不管哪个复合站均可在任意时间发送命令帧,并且不需要收到对方复合站发出的命令帧就可以发送响应帧。

Page 61: 第  3  章     数据链路层

HDLC 的基本配置方式

Page 62: 第  3  章     数据链路层

HDLC 的帧结构

• 标志字段 F (Flag) 为 6 个连续 1 加上两边各一个 0

共 8 bit 。在接收端只要找到标志字段就可确定一个帧的位置。

比特 8 8 8 可变 16 8

信息 Info

标志 F

标志 F

地址 A

控制 C

帧检验序列 FCS

透明传输区间FCS 检验区间

Page 63: 第  3  章     数据链路层

零比特填充法

HDLC 采用零比特填充法使一帧中两个 F 字段之间不会出现 6 个连续 1 。

在发送端,当一串比特流数据中有 5 个连续 1 时,就立即填入一个 0 。

在接收帧时,先找到 F 字段以确定帧的边界。接着再对比特流进行扫描。每当发现 5 个连续 1 时,就将其后的一个 0 删除,以还原成原来的比特流。

Page 64: 第  3  章     数据链路层

零比特的填充与删除

数据中某一段比特组合恰好出现和 F 字段一样的情况

0 1 0 0 1 1 1 1 1 1 0 0 0 1 0 1 0

会被误认为是 F 字段

发送端在 5 个连 1 之后填入 0 比特再发送出去

填入 0 比特

0 1 0 0 1 1 1 1 1 0 1 0 0 0 1 0 1 0

在接收端将 5 个连 1 之后的 0 比特删除,恢复原样

在此位置删除填入的 0 比特

0 1 0 0 1 1 1 1 1 0 1 0 0 0 1 0 1 0

Page 65: 第  3  章     数据链路层

透明传输

采用零比特填充法就可传送任意组合的比特流,或者说,就可实现数据链路层的透明传输。 当连续传输两个帧时,前一个帧的结束标志字段 F 可以兼作后一帧的起始标志字段。 当暂时没有信息传送时,可以连续发送标志字段,使接收端可以一直和发送端保持同步。

Page 66: 第  3  章     数据链路层

其它字段

地址字段 A 是 8 bit 。最多可以表示 256 个站的地址。地址字段为“ 11111111” 时,定义为全站地址,即通知所有的接收站接收有关的命令帧并按其动作;全“ 0” 比特为无站地址,用于测试数据链路的状态。因此有效地址共有 254 个。

比特 8 8 8 可变 16 8

信息 Info

标志 F

标志 F

地址 A

控制 C

帧检验序列 FCS

透明传输区间FCS 检验区间

Page 67: 第  3  章     数据链路层

其它字段

帧检验序列 FCS 字段共 16 bit 。所检验的范围是从地址字段的第一个比特起,到信息字段的最末一个比特为止。 控制字段 C 共 8 bit ,是最复杂的字段。 HDLC 的许多重要功能都靠控制字段来实现。

比特 8 8 8 可变 16 8

信息 Info

标志 F

标志 F

地址 A

控制 C

帧检验序列 FCS

透明传输区间FCS 检验区间

Page 68: 第  3  章     数据链路层

控制字段

控制字段 C 有 8bit , HDLC 的许多重要功能要由控制字段来实现。根据其最前面二个比特位,可将 HDLC 帧分为三种:即信息帧 I 、监督帧 S 和无编号帧 U 。

比特 8 8 8 可变 16 8

信息 Info

标志 F

标志 F

地址 A

控制 C

帧检验序列 FCS

0

1

1

0

1

S

M

P/F

P/F

N( S) P/F N( R)N( R)

M

信息帧 I

监督帧 S

无编号帧 U

1 2 3 4 5 6 7 8

Page 69: 第  3  章     数据链路层

信息帧:若控制字段的第 1 比特为 0 ,则该帧为数据帧,用于传送数据。比特 2-4 为发送序号 N(S) ,而比特 6-8 为接收序号N(R) 。特别强调指出: N(R)带有确认的意思,它表示序号为 N(R)-1

以及在这以前的各帧都已经正确无误地收妥了。

控制字段(续 1)

0

1

1

0

1

S

M

P/F

P/F

N( S) P/F N( R)N( R)

M

信息帧 I

监督帧 S

无编号帧 U

1 2 3 4 5 6 7 8

Page 70: 第  3  章     数据链路层

监督帧:用于监视和控制数据链路,完成信息帧的接收确认、重发请求、暂停发送请求等功能。若控制字段的第 1-2 比特为 1

0 ,则对应的帧即为监督帧 S 。监督帧共有四种,取决于第 3-4

比特的取值。 监控帧的名称和功能

控制字段(续 2)

第 3-4 比特 帧 名 功 能确认,且准备接受下一帧,已收妥 N(R) 以前的各帧 确认,暂停接收下一帧,N(R) 含义同上 否认,否认 N(R) 起的各帧,但 N(R) 以前的帧已收妥

否认,只否认序号为 N(R) 的帧

RR接收准备好 RNR接收未准备好 REJ拒绝接收SREJ选择拒绝接收

00

10

01

11

Page 71: 第  3  章     数据链路层

无编号帧:用于数据链路的控制。若控制字段的第 1-2 比特都是 1 时,这个帧就是无编号帧 U ,无编号帧本身不带编号,而是用 5bit 来表示不同功能的无编号帧。可以在任何需要的时刻发出,而不影响带编号的信息帧的交换顺序。 如: B3B4B6B7B8=00001 ,则其功能为置正常响应模式 。

控制字段(续 3)

0

1

1

0

1

S

M

P/F

P/F

N( S) P/F N( R)N( R)

M

信息帧 I

监督帧 S

无编号帧 U

1 2 3 4 5 6 7 8

Page 72: 第  3  章     数据链路层

无编号帧的名称和代码

名 称 B3B4B6B7B8记忆符 置正常响应模式 00001SNRM 置异步响应模式 /断开方式 11000SARM/DM 置异步平衡模式 11100SABM 置扩充正常响应模式 11011SNRME 置扩充异步响应模式 11010SARME 置扩充异步平衡模式 11110SABME 断链 /请求断链 00010DISC/RD 置初始化 /请求初始化方式 10000SIM/RIM 无编号探询 00100UP 无编号信息 00000UI 交换识别 11101XID 复位 11001RESET 帧拒绝 10001FRMR 无编号确认 00110UA

Page 73: 第  3  章     数据链路层

P/F 位的意义(询问 /终止)

在正常响应方式中,从站不能主动向主站发送信息,从站只有收到主站发出的 P 比特为 1(对从站的查询)的命令帧以后才能发送响应帧。若从站有数据发送,则在最后一个数据帧中将 F 比特置 1;若无数据发送,则应在回答的 S 帧中将 F 比特置 1 。 在异步响应或异步平衡方式中,任何一个站都可以在主动发送的 S 帧和 I 帧中将 P 比特置 1 。对方站收到 P=1 的帧后,应尽早地回答本站的状态并将 F 比特置 1 。

Page 74: 第  3  章     数据链路层

P/F 位的使用方法

Page 75: 第  3  章     数据链路层

图中主站 A 和从站 B 、 C 连成多点链路,传送帧的一些主要参数按照“地址,帧名和序号, P/F” 的先后顺序标注。这里的地址是指地址字段中应填入的站地址;帧名是指帧的名称,如 RR 、I;序号是指监控帧中的 N(R) 或信息帧中的 N(S) 和 N(R) ,如RR4 、 I31(第 1 个数字是 N(S) ,第 2 个数字是 N(R))。 P/F

是在其为 1 时才写上 P或 F ,表明此时控制字段的第 5 比特为 1 。

P/F 位的使用方法

Page 76: 第  3  章     数据链路层

主站 A 先询问 B站:“ B站,若有信息,请立刻发送”。这时A站发送的帧是 RR监控帧,并将 N(R)置 0 ,表示期望收到对方的 0号帧。因此在图中将这样的帧记为“ B,RR0,P ” 。对主站的这一命令, B站响应以连续 4 个信息帧,其序号 N(S) 从 0 到 3 。最后在第 4 个信息帧中将 F置 1 ,表示“我要发送的信息已发完”。这个帧记为“ B, I 30,F” 。 A站在收到 B站发来的 4 个信息帧后,发回确认帧 RR4(这时 N(R)=4)。我们注意到这时 P/

F 比特并未置 1 ,所以 B站收到 RR4后不必应答。接下去 A站轮询 C站, P=1 ,虽然这时 C站没有数据发送,但也必须立即应答。 C站应答也是 RR 帧,表示目前没有信息帧发送, F=1表明这是回答对方命令的一个响应。

P/F 位的使用方法

Page 77: 第  3  章     数据链路层

有了 P/F 比特,使 HDLC 规程使用起来更加灵活。在两个复合站全双工通信时,任何一方都可随时使 P=1 ,这时对方就要立即回答 RR 帧,并置 F=1 ,这样就可以收到对方的确认了。如果不使用 P/F 比特,则收方不一定马上发出确认帧,比如收方可以在发送自己的信息帧时,利用 N(R) 把确认信息发出。

P/F 位的使用方法

Page 78: 第  3  章     数据链路层

3.6 因特网的点对点协议 PPP

PPP( Point-to-Point Protocol 点到点协议)是为在同等单元之间传输数据包这样的简单链路设计的链路层协议。这种链路提供全双工操作,并按照顺序传递数据包。设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种解决方案。

Page 79: 第  3  章     数据链路层

3.6.1 PPP 协议的工作原理

现在使用得最多的数据链路层协议是点对点协议 PPP 。 用户使用拨号电话线接入因特网时,一般都是使用 PPP 协议。

路由器

调制解调器

调制解调器

因特网服务提供者 (ISP)用户家庭

拨号电话线

使用 TCP/IP 的 PPP 连接

使用 TCP/IP 的 客户进程

路由选择 进程

至因特网…

PC 机

Page 80: 第  3  章     数据链路层

PPP 的特性

PPP 协议是目前使用得最广泛的广域网协议,这是因为它具有以下特性:能够控制数据链路的建立;能够对 IP 地址进行分配和使用;允许同时采用多种网络层协议;能够配置和测试数据链路;能够进行错误检测;有协商选项,能够对网络层的地址和数据压缩等进行协商。

Page 81: 第  3  章     数据链路层

PPP 协议组成

一个将 IP 数据报封装到串行链路的方法。 链路控制协议 LCP (Link Control Protocol) : LCP负责创建,维护或终止一次物理连接。可以使用多种物理层服务。 认证协议,最常用的包括口令验证协议 PAP 和挑战握手验证协议 CHAP 。 网络控制协议 NCP (Network Control Protocol) :负责解决物理连接上运行什么网络协议,以及解决上层网络协议发生的问题。可以支持多种网络层协议。

Page 82: 第  3  章     数据链路层

3.6.2 PPP 协议的帧格式

PPP 的帧格式和 HDLC 的相似。 标志字段 F 仍为 0x7E (符号“ 0x”表示后面的字符是用十六进制表示。十六进制的 7E 的二进制表示是 01111

110)。地址字段 A 只置为 0xFF 。地址字段实际上并不起作用,PPP 不分配个人地址。控制字段 C 通常置为 0x03 。要求用户数据传输采用无序号帧,不提供使用序号和确认的可靠传输。PPP 是面向字节的,所有的 PPP 帧的长度都是整数字节。

Page 83: 第  3  章     数据链路层

PPP 协议的帧格式

• PPP 有一个 2 个字节的协议字段。识别帧的信息部分字段所封装的协议。– 当协议字段为 0x0021 时, PPP 帧的信息字段就是

IP 数据报。– 若为 0xC021, 则信息字段是 PPP 链路控制数据 L

CP 。– 若为 0x8021 ,则表示这是网络控制数据 NCP 。

IP 数据报

1 21 1字节 1 2不超过 1500 字节PPP 帧

先发送

7E FF 03F A C FCS F

7E协议 信 息 部 分

首部 尾部

Page 84: 第  3  章     数据链路层

透明传输问题

当 PPP 用在同步传输链路时,协议规定采用硬件来完成比特填充(和 HDLC 的做法一样)。

当 PPP 用在异步传输时,就使用一种特殊的字符填充法。

Page 85: 第  3  章     数据链路层

字符填充法

具体的做法是:(1)将信息字段中出现的每一个 0x7E 字节转变成为 2 字 节序列( 0x7D , 0x5E)。(2)若信息字段中出现一个 0x7D 的字节,则将其转变成 为 2 字节序列( 0x7D , 0x5D)。(3) 若信息字段中出现 ASCll码的控制字符(即小于 0

x20 的字符),则在该字符前面加一个 0x7D 字节。这样做可以防止这些表面上的 ASCll码控制符将被错误地解释为控制符。

Page 86: 第  3  章     数据链路层

不提供使用序号和确认的可靠传输

PPP 协议之所以不使用序号和确认机制是出于以下的考虑: 在数据链路层出现差错的概率不大时,使用比较简单的 PPP 协议较为合理。

在因特网环境下, PPP 的信息字段放入的数据是 IP 数据报。数据链路层的可靠传输并不能够保证网络层的传输也是可靠的。

帧检验序列 FCS 字段可保证无差错接受。

Page 87: 第  3  章     数据链路层

3.6.3 PPP 协议的工作状态

当用户拨号接入 ISP 时,路由器的 Modem 对拨号作出应答,并建立一条物理连接。这时, PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧)。这些分组及其响应选择了将要使用的一些 PPP参数。接着进行网络配置, NCP给新接入的 PC 机分配一个临时的 IP

地址,这样, PC 机就成为 Internet 上的一个主机了。通信完毕, NCP 释放网络层的连接,收回原来分配出去的 IP 地址;接着 LCP 释放数据链路层连接;最后释放的是物理层的连接。

Page 88: 第  3  章     数据链路层

PPP 链路建立的过程

一个典型的链路建立过程分为三个阶段:创建阶段、认证阶段和网络协商阶段。

阶段 1 :创建 PPP 链路

   LCP负责创建链路。在这个阶段,将对基本的通讯方式进行选择。链路两端设备通过 LCP向对方发送配置信息报文。一旦一个配置成功信息包被发送且被接收,就完成了交换,进入了 LCP 开启状态。

Page 89: 第  3  章     数据链路层

PPP 链路建立的过程(续)

阶段 2 :用户验证

  在这个阶段,客户端会将自己的身份发送给远端的接入服务器。该阶段使用一种安全验证方式避免第三方窃取数据或冒充远程客户接管与客户端的连接。在认证完成之前,禁止从认证阶段前进到网络层协议阶段。如果认证失败,认证者应该跃迁到链路终止阶段。

Page 90: 第  3  章     数据链路层

口令验证协议( PAP)

   PAP 是一种简单的明文验证方式。 NAS(网络接入服务器, Network Access Server)要求用户提供用户名和口令, PAP 以明文方式返回用户信息。很明显,这种验证方式的安全性较差,第三方可以很容易的获取被传送的用户名和口令,并利用这些信息与 NAS 建立连接获取 NA

S提供的所有资源。所以,一旦用户密码被第三方窃取, P

AP 无法提供避免受到第三方攻击的保障措施。

Page 91: 第  3  章     数据链路层

挑战 - 握手验证协议( CHAP)

   CHAP 是一种加密的验证方式,能够避免建立连接时传送用户的真实密码。 NAS向远程用户发送一个挑战口令( challenge),其中包括会话 ID 和一个任意生成的挑战字串( arbitrary challengestring)。远程客户必须使用MD5 单向哈希算法( one-way hashing algorithm)返回用户名和加密的挑战口令、会话 ID 以及用户口令,其中用户名以非哈希方式发送。

Page 92: 第  3  章     数据链路层

PPP 链路建立的过程(续)

阶段 3 :调用网络层协议

  认证阶段完成之后, PPP 将调用在链路创建阶段(阶段 1)选定的各种网络控制协议( NCP)。选定的 NCP

解决 PPP 链路之上的高层协议问题,例如,在该阶段 IP 控制协议( IPCP)可以向拨入用户分配动态地址。

  这样,经过三个阶段以后,一条完整的 PPP 链路就建立起来了。

Page 93: 第  3  章     数据链路层

PPP 协议的状态图

建立建立

失败失败

NCP 配置

鉴别成功

通信结束

载波停止

检测到 载波

双方协商一些选项

鉴别鉴别

网络网络

打开打开终止终止

静止静止

Page 94: 第  3  章     数据链路层

作业: P91 3-09、 3-20、 3-21