第 3 章 数据链路层 第 3 章 数据链路层

59
第 3 章 数据链路层 第 3 章 数据链路层

Upload: independent

Post on 10-Dec-2023

3 views

Category:

Documents


0 download

TRANSCRIPT

第 3 章 数据链路层第 3 章 数据链路层

课件制作人:wxg

第 3 章 数据链路层

3.1 数据链路层的设计问题3.2 差错检测和纠正3.3 基本数据链路层协议3.4 滑动窗口协议3.5 数据链路协议实例3.6 本章总结

课件制作人:wxg

3.1 数据链路层的设计问题

• 链路(link)是一条无源的点到点的物理线路段,中间没有任何其他的交换结点。• 一条链路只是一条通路的一个组成部分。

• 数据链路(data link) :通过物理线路+通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。• 现在最常用的方法是使用适配器(即网卡)来实现

这些协议的硬件和软件。

• 一般的适配器都包括了数据链路层和物理层这两层的功能。

课件制作人:wxg

数据链路层功能与帧

主要功能:• 向网络层提供服务接口• 处理传输错误• 调节数据流,确保慢速的接收方不被快速的发送方淹没

两个对等的数据链路层之间传输的数据单位是帧。

结点 结点帧 帧

数据包

帧头 有效载荷 帧尾 帧头 有效载荷 帧尾

数据包

发送方 接收方

课件制作人:wxg

3.1.1提供给网络层服务

局域网 广域网

主机 H1 主机 H2

路由器R1路由器R2

路由器R3

电话网 局域网

主机H1向H2发送数据

链路层

应用层

运输层

网络层

物理层

链路层

应用层

运输层

网络层

物理层

链路层

网络层

物理层

链路层

网络层

物理层

链路层

网络层

物理层

R1 R2 R3

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

课件制作人:wxg

3.1.1数据链路层为网络层服务

数据链路层为网络层服务提供的3种服务:

•无确认的无连接服务:以太网

•有确认的无连接服务:802.11x Wifi

•有确认的有连接服务: TCP

•建立连接

•传输数据

•释放连接

课件制作人:wxg

3.1.2 帧结构

• 成帧的四种方法(P154)• 标志字节 F (Flag) 填充:插入转义字符 例如PPP协议• 比特填充的标志字节法:以01111110标记,例如USB • 物理层捷径:冗余比特 4b/5b

比特8 8 8 可变 16 8

信息Info

标志F

标志F

地址A

控制C

帧检验序列FCS

透明传输区间

FCS 检验区间

课件制作人:wxg

3.1.3差错控制

• 特殊的控制帧:收到确认(是、否):重传• 计时器和序号

3.1.4 流量控制• 基于反馈的流量控制• 基于速率的流量控制• 实例:网络接口卡

课件制作人:wxg

3.2 差错检测和纠正

• 纠错码 ECC与检错码 FEC3.2.1纠错码

• 海明码• 二进制卷积码• 里德所罗门码• 低密度奇偶校验码

课件制作人:wxg

海明码举例:

• 如何确定10001001 与10110001的不同位数?• 海明距离:

• 检测d个错误,需要距离d+1的编码方案,而• 纠正d个错误,需要距离2d+1的编码例如:编码方案海明距离为5时,可以纠正1个或2个错误0000000000, 0000011111, 1111100000, 1111111111分析:如果收到码字:0000000111,期望只有1-2个错误,

可以纠正为0000011111。若3个错误则不能纠正,为什么?

• 每个码字有m个消息位和r个校验位,能纠正所有错误满足:(m+r+1) ≤2r

100010011011000100111000

课件制作人:wxg

卷积码:非系统码

• 处理一个输入位序列,生成一个输出位序列输入法和内部状态XOR和,二进制线性卷积和

• 例:输入111,初始状态000000内部状态变为:100000、110000、111000输出位:11、10、01

• 应用:GSM、卫星通信、802.11里德所罗门码:线性块码,系统码

课件制作人:wxg

3.2.2检错码-原理

• 三种系统块码• 奇偶• 校验和• CRC

• CRC循环冗余检验码,广泛应用于数据链路层

课件制作人:wxg

冗余码的计算• 用二进制的模 2 运算进行 2n 乘 M 的运算,这相当于

在 M 后面添加 n 个 0。• 得到的 (k + n) bit 的数除以事先选定好的长度为 (n +

1) bit 的数 P,得出商是 Q 而余数是 R,余数 R 比除数 P 至少要少1 个比特。

• 计算举例• 设 n = 5, P = 110101,模 2 运算的结果是:商 Q =

1101010110,余数R = 01110。

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

课件制作人:wxg

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

110101111011110101

11101011010111111011010110110011010111001011010101110 ← R 余数

循环冗余检验的原理说明

课件制作人:wxg

检测出差错与处理

• 只要得出的余数 R 不为 0,就表示检测到了差错。• 但这种检测方法并不能确定究竟是哪一个或哪几个比

特出现了差错。• 一旦检测出差错,就丢弃这个出现差错的帧。• 只要经过严格的挑选,并使用位数足够多的除数 P,

那么出现检测不到的差错的概率就很小很小。• 仅用循环冗余检验 CRC 差错检测技术只能做到无差错

接受(accept)。• “无差错接受”是指:“凡是接受的帧(即不包括丢

弃的帧),我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错”。

• 要做到“可靠传输”(即发送什么就收到什么)就必须再加上确认和重传机制。

课件制作人:wxg

3.3 基本数据链路层协议

• 物理层、数据链路层和网络层的实现图3-10• 数据链路层接收到一个数据包,添加层头层尾封装

在一个帧中,帧的组成:内嵌数据+控制信息(头)+检验和(尾)

typefef struct{frame_kind kind;seq_nr seq;seq_nr ack;packet info;frame; }

课件制作人:wxg

3.3 停止等待协议

数据链路层

主机A

缓存缓存

主机B

数据链路

AP2AP2AP1AP1

缓存缓存

发送方 接收方

高层

3.3.1 完全理想化的数据传输

课件制作人:wxg

完全理想化的乌托邦式协议

• 假定 1: 链路是理想的传输信道,所传送的任何数据既不会出差错也不会丢失。

• 假定 2:缓存无穷大,不管发方以多快的速率发送数据,收方总是来得及收下,并及时上交主机。

• 协议算法见P171 3-12void sender1(void){frame s;packet buffer;while(true){from_network_layer(&buffer);s.info=buffer;to_physical_layer(&s); }

}

void receiver1(void){frame r;event_type event;while(true){wait_for_event(&event);

from_physical_layer(&s); to_network_layer(&r.info); }

}

单工停-等协议

协议算法见P1733-12

void sender2(void){frame s;packet buffer;while(true){from_network_layer(&buffer);s.info=buffer;to_physical_layer(&s);wait_for_event(&event);

}}

void receiver1(void){frame r;event_type event;while(true){wait_for_event(&event);

from_physical_layer(&s); to_network_layer(&r.info)to_physical_layer(&s);

}

单工停-等协议协议算法见P175

void sender2(void){seq_nr next_frame_to_send=0;frame s;packet buffer;from__network_layer(&buffer);while(true){s.info=buffer;s.seq=next_frame_to_send;to_physical_layer(&s);start_timer(s.seq);wait_for_event(&event);

}}

void receiver1(void){frame r;event_type event;while(true){wait_for_event(&event);

from_physical_layer(&s); to_network_layer(&r.info);

}to_physical_layer(&s);

}

课件制作人:wxg

3.3.2 实用的停止等待协议

时间

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) 数据帧出错

重传

出错

四种情况

课件制作人:wxg

超时计时器的作用

• 结点A发送完一个数据帧时,就启动一个超时计时器(timeout timer)。• 计时器又称为定时器。

• 若到了超时计时器所设置的重传时间 tout而仍收不到结点 B 的任何确认帧,则结点 A 就重传前面所发送的这一数据帧。

• 一般可将重传时间选为略大于“从发完数据帧到收到确认帧所需的平均时间”。

课件制作人:wxg

解决重复帧的问题

• 使每一个数据帧带上不同的发送序号。每发送一个新的数据帧就把它的发送序号加 1。

• 若结点 B 收到发送序号相同的数据帧,就表明出现了重复帧。这时应丢弃重复帧,因为已经收到过同样的数据帧并且也交给了主机 B。

• 但此时结点 B 还必须向 A 发送确认帧 ACK,因为 B 已经知道 A 还没有收到上一次发过去的确认帧 ACK。

课件制作人:wxg

帧的编号问题

• 任何一个编号系统的序号所占用的比特数一定是有限的。因此,经过一段时间后,发送序号就会重复。

• 序号占用的比特数越少,数据传输的额外开销就越小。

• 对于停止等待协议,由于每发送一个数据帧就停止等待,因此用一个比特来编号就够了。• 一个比特可表示 0 和 1 两种不同的序号。

课件制作人:wxg

帧的发送序号

• 数据帧中的发送序号 N(S) 以 0 和 1 交替的方式出现在数据帧中。

• 每发一个新的数据帧,发送序号就和上次发送的不一样。用这样的方法就可以使收方能够区分开新的数据帧和重传的数据帧了。

课件制作人:wxg

3.3.3 停止等待协议的算法

• 这里不使用否认帧(实用的数据链路层协议大都是这样的),而且确认帧带有序号 n。

• 按照习惯的表示法,ACKn 表示“第 n – 1 号帧已经收到,现在期望接收第 n 号帧”。• ACK1 表示“0 号帧已收到,现在期望接收的下一帧是 1 号帧”;

• ACK0 表示“1 号帧已收到,现在期望接收的下一帧是 0 号帧”。

课件制作人:wxg

在发送结点

(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)。

课件制作人:wxg

在接收结点

(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)。

课件制作人:wxg

停止等待协议的要点

• 只有收到序号正确的确认帧 ACKn 后,才更新发送状态变量 V(S)一次,并发送新的数据帧。

• 接收端接收到数据帧时,就要将发送序号 N(S) 与本地的接收状态变量 V(R) 相比较。• 若二者相等就表明是新的数据帧,就收下,并发送确认。

• 否则为重复帧,就必须丢弃。但这时仍须向发送端发送确认帧 ACKn,而接收状态变量 V(R) 和确认序号 n 都不变。

课件制作人:wxg

停止等待协议的要点(续)

• 连续出现相同发送序号的数据帧,表明发送端进行了超时重传。连续出现相同序号的确认帧,表明接收端收到了重复帧。

• 发送端在发送完数据帧时,必须在其发送缓存中暂时保留这个数据帧的副本。这样才能在出差错时进行重传。只有确认对方已经收到这个数据帧时,才可以清除这个副本。

课件制作人:wxg

停止等待协议的要点(续)

• 实用的CRC 检验器都是用硬件完成的。• CRC 检验器能够自动丢弃检测到的出错帧。因

此所谓的“丢弃出错帧”,对上层软件或用户来说都是感觉不到的。

• 发送端对出错的数据帧进行重传是自动进行的,因而这种差错控制体制常简称为 ARQ (Automatic Repeat reQuest),直译是自动重传请求,但意思是自动请求重传。

课件制作人:wxg

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

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

定不变的。显然,数据帧的发送时间 tf 是数据帧的长

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

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

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

• 数据帧沿链路传到结点B还要经历一个传播时延 tp。

• 结点 B 收到数据帧要花费时间进行处理,此时间称为

处理时间 tpr,发送确认帧 ACK 的发送时间为 ta。

课件制作人:wxg

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

A B

DATA

DATA

ACK

传播时延 tp

处理时间 tpr

确认帧发送时间 ta传播时延 tp处理时间 tpr

tT

时间

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

数据帧的发送时间 tf

设置的重传时间

tout

课件制作人:wxg

重传时间

• 重传时间的作用是:数据帧发送完毕后若经过了这样长的时间还没有收到确认帧,就重传这个数据帧。

• 为方便起见,我们设重传时间为

tout = tp + tpr+ ta + tp + tpr (3-2)

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

tout = 2tp (3-3)

课件制作人:wxg

简单的数学分析

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

tT = tf + tout = tf + 2tp (3-4)

• 设数据帧出现差错(包括帧丢失)的概率为 p,但假设确认帧不会出现差错。

• 设正确传送一个数据帧所需的平均时间 tav

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

课件制作人:wxg

简单的数学分析(续)

一帧的平均重传次数

= {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 的概率。

课件制作人:wxg

简单的数学分析(续)

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

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

p = 0, tav = tT。

)1(/)1(1

pttipptti

TTi

Tav −=−+= ∑∞

=

(3-5)

课件制作人:wxg

简单的数学分析(续)每秒成功发送的 大帧数就是链路的 大吞吐量 λmax。显然,

λmax = 1/tav = (1 − p) / tT (3-6)

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

,即

λ ≤ (1 − p) / tT (3-7)

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

ρ ≡ λtf ≤ (1 − p) / α < 1 (3-8)

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

α ≡ tT / tf ≥ 1 (3-9)

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

ρ ≤ 1 − p (3-10)

课件制作人:wxg

停止等待协议 ARQ 的优缺点

• 优点:比较简单 。

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

• 为了克服这一缺点,就产生了另外两种协议,即连续ARQ 和选择重传 ARQ。这将在后面进一步讨论。

课件制作人:wxg

3.3连续 ARQ 协议

• 在发送完一个数据帧后,不是停下来等待确认帧,而是可以连续再发送若干个数据帧。

• 如果这时收到了接收端发来的确认帧,那么还可以接着发送数据帧。

• 由于减少了等待时间,整个通信的吞吐量就提高了。

3.3.1 连续 ARQ 协议的工作原理

课件制作人:wxg

连续 ARQ 协议的工作原理

DATA0DATA1DATA2DATA3DATA4DATA5

重传 DATA2重传 DATA3

ACK1

ACK2

ACK1 确认 DATA0

ACK2 确认 DATA1DATA2 出错,丢弃

DATA3 不按序,丢弃,重传 ACK2DATA4 不按序,丢弃,重传 ACK2DATA5 不按序,丢弃,重传 ACK2

ACK3ACK3 确认 DATA2

ACK4 确认 DATA3ACK4

重传 DATA5

重传 DATA4

超时重传时间

A B

tout

送交主机

送交主机

…??

ACK2

ACK2

ACK2

课件制作人:wxg

需要注意:

(1) 接收端只按序接收数据帧。虽然在有差错的 2号帧之后接着又收到了正确的 3 个数据帧,但接收端都必须将这些帧丢弃,因为在这些帧前面有一个 2 号帧还没有收到。虽然丢弃了这些不按序的无差错帧,但应重复发送已发送过的 后一个确认帧(防止确认帧丢失)。

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

课件制作人:wxg

需要注意:

(3) 结点 A 在每发送完一个数据帧时都要设置该帧的超时计时器。如果在所设置的超时时间内收到确认帧,就立即将超时计时器清零。但若在所设置的超时时间到了而未收到确认帧,就要重传相应的数据帧(仍需重新设置超时计时器)。

在等不到 2 号帧的确认而重传 2 号数据帧时,虽然结点 A 已经发完了 5 号帧,但仍必须向回走,将 2号帧及其以后的各帧全部进行重传。连续 ARQ 又称为Go-back-N ARQ,意思是当出现差错必须重传时,要向回走 N 个帧,然后再开始重传。

课件制作人:wxg

需要注意:

(4) 以上讲述的仅仅是连续 ARQ 协议的工作原理。协议在具体实现时还有许多的细节。例如,用一个计时器就可实现相当于 N 个独立的超时计时器的功能。

课件制作人:wxg

3.4 滑动窗口的概念

• 采用捎带确认

全双工浪费信道(四条信道有一半为确认)

帧发送+确认

接收+确认帧

包 包

接收方发送方

帧发送

确认 帧

包 包

发送方 接收方发送

确认

课件制作人:wxg

3.4 滑动窗口的概念

• 发送端和接收端分别设定发送窗口和接收窗口 。

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

的情况下发送端最多可以发送多少个数据帧.

• 发送窗口用来对发送端进行流量控制。

帧Wr发送+确认

接收+确认帧

包 包

课件制作人:wxg

接收窗口大小 WR = 1时

01

234

5

67 0

1

234

5

67

1

2

0

345

67 0

1

234

5

67

01

234

5

67 0

1

234

5

67 0

1

234

5

67 0

1

234

5

67

(a)初始化 (b)第1帧发出之后 (c)第1帧接收之后 (d)第1帧确认后

发送方

接收方

不允许接收这些帧

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)

3.4.1 一位滑动窗口协议

课件制作人:wxg

算法3-16

滑动窗口的重要特性• 只有在接收窗口向前滑动时(与此同时也发送了确认),发送窗

口才有可能向前滑动。• 收发两端的窗口按照以上规律不断地向前滑动,因此这种协议又

称为滑动窗口协议。• 当发送窗口和接收窗口的大小都等于 1时,就是停止等待协议。• 当用 n 个比特进行编号时,若接收窗口的大小为 1,则只有在发

送窗口的大小 WT ≤ 2n − 1时,连续 ARQ 协议才能正确运行。• 例如,当采用 3 bit 编码时,发送窗口的 大值是 7 而不是 8。

课件制作人:wxg

3.4.2 回退N协议

• 举例:50kbps卫星:t传播延迟=500ms,用协议4发送1000位的帧。t=0,发第1帧; t=20ms, 第1帧完全出去; t=270ms,第1帧完全到达对方; t=520ms,确认帧回到发方。被阻率:500/520=96%,利用率:4%

• 利用带宽:允许发方在阻塞前,可发送W帧,如何计算W• 链路利用率≤w/(1+2BD)• 回退N协议算法:P182

课件制作人:wxg

3.4.3 选择重传 ARQ 协议

• 可加大接收窗口,先收下发送序号不连续但仍处在接收窗口中的那些数据帧。等到所缺序号的数据帧收到后再一并送交主机。

• 选择重传 ARQ 协议可避免重复传送那些本来已经正确到达接收端的数据帧。

• 但我们付出的代价是在接收端要设置具有相当容量的缓存空间。

• 对于选择重传 ARQ 协议,若用 n 比特进行编号,则接收窗口的 大值受下式的约束

WR ≤ 2n/2 (3-18)

课件制作人:wxg

3.5 数据链路协议实例

• 现在全世界使用得 多的数据链路层协议是点对点协议PPP (Point-to-Point Protocol)。

• 如用户拨号电话线接入因特网时,一般使用 PPP 协议。

路由器

调制解调器

调制解调器

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

拨号电话线

使用 TCP/IP 的PPP 连接

使用 TCP/IP 的客户进程

路由选择进程

至因特网…

PC 机

课件制作人:wxg

SONEC上的数据包

光纤

IPPPPSONET

路由器

IPPPPSONET

IP包

PPP帧

SONET有效载荷 SONET有效载荷

a)协议栈 b)帧关系

课件制作人:wxg

PPP 协议

• PPP协议有三个组成部分• 一个将 IP 数据报封装到串行链路的方法。

• 链路控制协议 LCP (Link Control Protocol)。• 网络控制协议 NCP (Network Control Protocol)。

• PPP 的帧格式和 HDLC 的相似。• 标志字段 F 仍为 0x7E • 地址字段 A 只置为 0xFF。• 控制字段 C 通常置为 0x03。• PPP 是面向字节的,而HDLC面向 比特

课件制作人:wxg

PPP 协议的帧格式

• PPP 有一个 2 个字节的协议字段。• 当协议字段为 0x0021 时,PPP 帧的信息字段就是IP 数据报

• 若为 0xC021, 则信息字段是 PPP 链路控制数据。

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

IP 数据报

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

PPP 帧

先发送

7E FF 03F A C FCS F

7E协议 信 息 部 分

首部 尾部

课件制作人:wxg

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

• 原因:• 在数据链路层出现差错的概率不大时,使用比较简单的 PPP 协议较为合理。

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

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

课件制作人:wxg

PPP 协议的状态图

建立建立

失败

失败

NCP 配置

鉴别成功

载波停止

检测到载波

鉴别

通信结束

双方协商一些选项

鉴别

网络网络

打开打开终止终止

静止静止

课件制作人:wxg

3.5.2 对称数字用户线

• ADSL• ATM异步传输模式

• 一种链路层,基于固定长度的信息元cell• 面向连接的技术,头部带有虚电路标识

PPP协议 PPP有效载荷 填充 未使用 长度 CRC

运载PPP数据的AAL5帧

课件制作人:wxg

3.6本章总结与习题

• 数据链路层主要任务是将物理层比特转换成网络层使用的帧流。同样把网络层的包转换成帧后在物理层上传输。

• 差错控制和流量控制协议

• 习题P195