4 计算机网络 数据链路层
第4章 数据链路层
1
4.1 数据链路层的基本概念
• 链路(link)是一条无源的点到点的物理线 路段,中间没有任何其他的交换结点。
– 一条链路只是一条通路的一个组成部分。
• 数据链路除了物理线路外,还必须有通信协议 来控制这些数据的传输。若把实现这些协议的 硬件和软件加到物理线路上,就构成数据链路。
– 现在最常用的方法是使用适配器(即网卡)来实现 这些协议的硬件和软件。 – 一般的适配器都包括了数据链路层和物理层这两层 的功能。
2
数据链路与物理线路
3
数据链路层像个数字管道
• 在两个对等的数据链路层之间画出一个 数字管道,而在这条数字管道上传输的 数据单位是帧。
结点
帧 帧
结点
• 早期的数据通信协议曾叫作通信规程 (procedure)。因此在数据链路层,规程 和协议是同义语。
出错的位 (b)
16
4.2.1差错控制(续)
• 噪声和干扰是传输差错的主要原因
误码率定义: 二进制比特在数据传输系统中被传错的概率, 它在数值上近似等于:
Pe = Ne/N 其中,N为传输的二进制比特总数; Ne为被传错的比特数。
17
讨论
• 误码率应该是衡量数据传输系统正常工作状态下传输 可靠性的参数。 • 对于一个实际的数据传输系统,不能笼统地说误码率 越低越好,要根据实际传输要求提出误码率要求; • 对于实际数据传输系统,如果传输的不是二进制比特, 要折合成二进制比特来计算; • 差错的出现具有随机性,在实际测量一个数据传输系 统时,只有被测量的传输二进制比特数越大,才会越 接近于真正的误码率值;
28
应当注意
• 仅用循环冗余检验 CRC 差错检测技术只能做 到无差错接受(accept)。 • “无差错接受”是指:“凡是接受的帧(即不 包括丢弃的帧),我们都能以非常接近于 1 的 概率认为这些帧在传输过程中没有产生差错”。 • 也就是说:“凡是接受的帧都没有传输差错” (有差错的帧就丢弃而不接受)。 • 要做到“可靠传输”(即发送什么就收到什么) 就必须再加上确认和重传机制。
26
CRC校验码的检错能力
• • • • • CRC校验码能检查出全部单个错; CRC校验码能检查出全部离散的二位错; CRC校验码能检查出全部奇数个错; CRC校验码能检查出全部长度小于或等于K位的突发错; CRC校验码能以[1-(1/2)K-1]的概率检查出长度为(K+1) 位的突发错; • 如果K=16,则该CRC校验码能全部检查出小于或等于16 位 的所有的突发差错,并能以1-(1/2)16-1=99.997%的概率 检查出长度为17位的突发错,漏检概率为0.003%;
9
数据链路层的功能之二
• 2.差错控制 使用差错控制码产生的校验和可以检查 出一帧在传输中是否发生了错误。一旦 检查出错误后,通常采用反馈重发的方 法来纠正错误。
10
数据链路层的功能之三
• 3.流量控制
流量控制处理的是发送方发送能力大于 接收方接收能力的问题。 要注意的是,流量控制并不是数据链路 层所特有的功能 。
4.2.1差错控制
• 传输差错 — 通过通信信道后接收的数据与发送数据 不一致的现象;• 差错控制 — 检查是否出现差错以及如何纠正差错; • 通信信道的噪声分为两类:热噪声和冲击噪声; • 由热噪声引起的差错是随机差错,或随机错; • 冲击噪声引起的差错是突发差错,或突发错; • 引起突发差错的位长称为突发长度;
4
数据链路层的目的
物理层:---物理线路---比特流传输---有差错的物理线路 数据链路层:---数据链路---帧传输---无差错的数据链路
1. 在原始物理线路上传输数据信号是有差错的; 2. 设计数据链路层的主要目的: 在原始的、有差错的物理线路的基础上,采取 差错检测、差错控制与流量控制等方法,将有差错 的物理线路改进成无差错的数据链路,向网络层提 供高质量的数据传输服务;
– 只有当收到的帧的序号与接收窗口一致时才能接收该帧。 否则,就丢弃它。 – 每收到一个序号正确的帧,接收窗口就向前(即向右方) 滑动一个帧的位置。同时发送对该帧的确认。
36
滑动窗口的重要特性
• 只有在接收窗口向前滑动时(与此同时 也发送了确认),发送窗口才有可能向 前滑动。
(2)窗口机制
发送过程中采用不等待确认帧返回就连续发送 若干帧虽提高信道利用率,缺点是帧号较长,所 有发送帧都要在发送方缓冲区中。 限制待确认帧数量的最大长度--窗口
31
• 窗口的大小
6 5 7 0 4 3 1 2
假设:发送窗口WT=5;接收窗口WR=1
7 0 4 3 7 0 4 3
发送窗口
6 5
水平垂直奇偶校验
22
循环冗余校验(CRC)码
• 基本思想:先建立应发送的二进制数之间 的数量关系,即发送方对数据帧的二进制 数按一定规则运算,产生二进制的校验码, 把数据和校验码同时发送。接受方收到后 按同样的规则检验这些二进制数,从而可 以判断出传输过程中有无差错发生。
23
循环冗余编码工作原理
1 2
6 5
1 2
连续发0~4 7 0 4 3
收到ACK1 7 0 4 3
收到ACK4 7 0 4 3
接收窗口
6 5
1 2
6 5
1 2
6 5
1 2
准备接收0
准备接收1
准备接收4
32
滑动窗口的概念
• 发送端和接收端分别设定发送窗口和接收窗口 。 • 发送窗口用来对发送端进行流量控制。 • 发送窗口的大小 WT 代表在还没有收到对方确认信 息的情况下发送端最多可以发送多少个数据帧。
不允许发送这些帧
34
WR (a) 0 1 2 3 4 5 6 7 0 1 2
准备接收 0 号帧 WR (b) 0 已收到 1 2 3 4
不允许接收这些帧
5
6
7
0
1
2
准备接收 1 号帧 WR
不允许接收这些帧
(c)
0
1
2
3
4
5
6
7
0
1
2
已收到
准备接收 4 号帧
不允许接收这些帧
35
接收端设置接收窗口
• 在接收端只有当收到的数据帧的发送序号落入接收 窗口内才允许将该数据帧收下。 • 若接收到的数据帧落在接收窗口之外,则一律将其 丢弃。 • 在连续 ARQ 协议中,接收窗口的大小 WR = 1。
• 在通信过程中产生的传输差错,是由随机差错与突发差错 共同构成的。
15
信源
通信信道
信宿
传输差错 产生过程
传输数据 数据信号波形 0 1
数据
噪声 (a)
数据+噪声
0
1
1
0
0
1
1
0
0
1
0
1
0
噪声
数据信号 与噪声信号 叠加后的波形
采样时间 接收数据 原始数据 0 0 1 1 0 0 1 1 1 1 0 0 1 0 1 1 1 1 0 0 0 0 1 1 0 0 0 1 0 0
27
帧检验序列 FCS
• 在数据帧后面添加上的冗余码称为帧检 验序列 FCS (Frame Check Sequence)。 • 循环冗余检验 CRC 和帧检验序列 FCS并不 等同。
– CRC 是一种常用的检错方法,而 FCS 是添 加在数据后面的冗余码。 – FCS 可以用 CRC 这种方法得出,但 CRC 并非用来获得 FCS 的惟一方法。
5
4.1.1数据链路层的模型
数据链路层的基本功能是提供无差错的、 透明的数据传输
6
4.1.2 数据链路层的主要功能
(1) 帧定界(帧同步)
(2) 差错控制
(3) 流量控制
(4) 链路管理
7
数据链路层的功能之一
• 1. 帧同步
帧是数据链路层的传送单位,按OSI的术语 就是数据链路层协议数据单元DL-PDU 。 如何将来自物理层的比特流组装成帧?
带CRC校验码的 发送数据比特序列
1 1 0 0 1
1 0 0 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1 1
0 0 1 0 0 1 0 0 1 0 0 1 0
25
标准CRC生成多项式G(x)
• CRC-12 • CRC-16 • CRC-CCITT • CRC-32 G(x)= x12+x11+x3+x2+x+1 G(x)= x16+x15+x2+1 G(x)= x16+x12+x5+1 G(x)= x32+x26+x23+x22+x16+x12+x11+ x10 +x8+x7+x5+x4 + x2+x+1
发送方 接收方
发送数据 f(x) 生成多项式 G(x) f(x). x G(x)
k
发送数据 f '(x) 生成多项式 G(x) f'(x). x G(x)
k
=Q(x)+
R(x) G(x)
k
=Q(x)+
R'(x) G(x)
实际发送: f(x). x +R(x) 数据字段 校验字段 f(x) . x
k
R'(x)=R(x) R'(x)=R(x)
接收正确 接收出错
R(x) 发送
24
• 举例:
G(x)
1 1 0 0 1
1 0 0 1 1 0 0 1 1 0 1 1 0 0 1 1 0 1 1 1
1 0 0 1 CRC校验码 比特序列