第 5 讲 数据链路层 (1)
DESCRIPTION
第 5 讲 数据链路层 (1). 知识回顾. 物理层的功能 数据通信模型 信道复用技术 数字传输系统 宽带接入技术. 本讲内容及教学目标. 理解数据链路层的功能。 掌握帧、链路等相关概念。 掌握帧定界的方法。 理解数据链路层的三个基本问题。 掌握差错检测- CRC 的计算方法。 理解透明传输问题。. 数据链路层的服务. 数据链路层 最基本的服务是将源计算机网络层来的数据可靠的传输 到相邻节点的目标计算机的网络层。它为网络层提供以下服务: 无确认、无连接的服务 - PowerPoint PPT PresentationTRANSCRIPT
1/31
第 5 讲 数据链路层 (1)
2/31
知识回顾物理层的功能数据通信模型信道复用技术数字传输系统宽带接入技术
3/31
本讲内容及教学目标理解数据链路层的功能。掌握帧、链路等相关概念。掌握帧定界的方法。理解数据链路层的三个基本问题。掌握差错检测- CRC 的计算方法。理解透明传输问题。
4/31
数据链路层的服务数据链路层最基本的服务是将源计算机网络层来的数据可
靠的传输到相邻节点的目标计算机的网络层。它为网络层提供以下服务:
无确认、无连接的服务– 源端可以不需要建立连接就向目的端发送独立的数据帧,而目的端
也不需要对收到的帧进行确认。以太网采用此服务。有确认、无连接的服务
– 源端可以不需要建立连接就向目的端发送独立的数据帧,但目的端需要对收到的帧进行确认。
面向连接的服务– 源端与目的端在通信前要先建立连接,然后在此连接上互相传输数
据帧,每一个帧都被编号,数据链路层保证传送的帧被对方收到,且只收到一次,双方通信完毕后拆除连接。电话网络采用。
5/31
数据链路层的主要功能 为达到上述目的,数据链路层必须具备一系列相应的功能,主要有:
如何将数据组合成数据块;如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率以使之与接收方相匹配;在两个网路实体之间提供数据链路通路的建立、维持和释放管理。 具体如下:
链路管理 帧定界 流量控制 差错控制 将数据和控制信息区分开 透明传输 寻址
6/31
数据链路层的基本概念 在数据链路层中将这种数据块称为帧,帧是数据链路层的
传送单位。链路 (link) 是一条无源的点到点的物理线路段,中间没有任
何其他的交换结点。– 一条链路只是一条通路的一个组成部分。
数据链路 (data link) 除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。– 现在最常用的方法是使用适配器(即网卡)来实现这些协议的硬件
和软件。– 一般的适配器都包括了数据链路层和物理层这两层的功能。
7/31
Functions of the Data Link Layer (2)
Relationship between packets and frames.
8/31
Services Provided to Network Layer
(a) Virtual communication.(b) Actual communication.
9/31
数据链路层数据链路层使用的信道主要有以下两种类型:点对点信道。这种信道使用一对一的点对点通信方
式。广播信道。这种信道使用一对多的广播通信方式,
因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发
10/31
数据链路层的简单模型
局域网 广域网主机 H1 主机 H2
路由器 R1 路由器 R2路由器 R3
电话网 局域网
主机 H1 向 H2 发送数据
链路层
应用层运输层网络层
物理层链路层
应用层运输层网络层
物理层链路层网络层
物理层链路层网络层
物理层链路层网络层
物理层
R1 R2 R3
H1 H2从层次上来看数据的流动
11/31
数据链路层的简单模型—— cont.
局域网 广域网主机 H1 主机 H2
路由器 R1 路由器 R2路由器 R3
电话网 局域网
主机 H1 向 H2 发送数据
链路层
应用层运输层网络层
物理层链路层
应用层运输层网络层
物理层链路层网络层
物理层链路层网络层
物理层链路层网络层
物理层
R1 R2 R3
H1 H2仅从数据链路层观察帧的流动
12/31
数据链路层数据链路层像个数字管道。常常在两个对等的数据链路层之间画出一个数字管
道,而在这条数字管道上传输的数据单位是帧。
早期的数据通信协议曾叫作通信规程 (procedure) 。因此在数据链路层,规程和协议是同义语。
结点 结点帧 帧
13/31
成帧(帧同步)为了向网络层提供服务,数据链路层必须使用物理层提供
的服务。物理层 , 是以比特流进行传输的,这种比特流并不保证在
数据传输过程中没有错误,接收到的位数量可能少于、等于或者多于发送的位数量。而且它们还可能有不同的值,这时数据链路层为了能实现数据有效的差错控制,就采用了一种“帧”的数据块进行传输。分段传输。
采用帧格式传输,就必须有相应的帧同步技术,这就是数据链路层的“成帧”(也称为“帧同步”)功能。
14/31
成帧(帧同步)(续)采用帧传输方式的好处是
– 在发现有数据传送错误时,只需将有差错的帧再次传送,而不需要将全部数据的比特流进行重传,这就在传送效率上将大大提高。
– 但同时也带来了两方面的问题:( 1 )如何识别帧的开始与结束;( 2 )在夹杂着重传的数据帧中,接收方在接收到重传的数据帧时是识别成新的数据帧,还是识别成已传帧的重传帧呢?这就要靠数据链路层的各种“帧同步”技术来识别了。
“ 帧同步”技术既可使接收方能从以上并不是完全有序的比特流中准确地区分出每一帧的开始和结束,同时还可识别重传帧。
15/31
IP 数据报IP 数据报
1010… …0110
帧取出数据
链路层
网络层
链路
结点 A 结点 B
物理层
数据链路层
结点 A 结点 B
帧
(a)
(b)
发送帧
接收
链路
IP 数据报IP 数据报
1010… …0110
帧装入
数据链路层传送的是帧数据链路层传送的是帧
16/31
封装成帧封装成帧 (framing) 就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。
首部和尾部的一个重要作用就是进行帧定界。
帧结束帧首部帧首部
IP 数据报IP 数据报
帧的数据部分帧的数据部分 帧尾部帧尾部
MTU
数据链路层的帧长
开始发送
帧开始
17/31
用控制字符进行帧定界的方法举例
SOHSOH 装在帧中的数据部分装在帧中的数据部分
帧
帧开始符 帧结束符
发送在前
EOTEOT
18/31
透明传输方法
SOHSOH EOT
出现了“ EOT”
被接收端当作无效帧而丢弃被接收端误认为是一个帧
数据部分
EOTEOT
完整的帧发送在前
19/31
解决透明传输问题 发送端的数据链路层在数据中出现控制字符“ SOH” 或“ EOT” 的
前面插入一个转义字符“ ESC”( 其十六进制编码是 1B) 。 字节填充 (byte stuffing) 或字符填充 (character stuffing)—— 接收端
的数据链路层在将数据送往网络层之前删除插入的转义字符。 如果转义字符也出现在数据当中,那么应在转义字符前面插入一个转义字符。当接收端收到连续的两个转义字符时,就删除其中前面的一个。
“ 透明传输”是指可以让无论是哪种比特组合的数据,都可以在数据链路上进行有效传输。这就需要在所传数据中的比特组合恰巧与某一个控制信息完全一样时,能采取相应的技术措施,使接收方不会将这样的数据误认为是某种控制信息。以保证数据链路层的传输是透明的。
20/31
SOHSOH
SOHSOH EOT SOHSOHESC
ESC EOT ESC SOH ESC ESC ESC SOHSOH
原始数据
EOTEOT
EOTEOT
经过字节填充后发送的数据
字节填充字节填充字节填充字节填充
发送在前
帧开始符 帧结束符
用字节填充法解决透明传输的问题
SOH
21/31
差错检测在传输过程中可能会产生比特差错: 1 可能会变成 0 而 0 也
可能变成 1 。在一段时间内,传输错误的比特占所传输比特总数的比率称为
误码率 BER (Bit Error Rate) 。误码率与信噪比有很大的关系。为了保证数据传输的可靠性,在计算机网络传输数据时,必须
采用各种差错检测措施。 在数据通信过程可能会因物理链路性能和网络通信环境等因素,难免会出现一些传送错误,但为了确保数据通信的准确,又必须使得这些错误发生的机率尽可能低。这一功能也是在数据链路层实现的,就是它的“差错控制”功能。
22/31
差错检测与校正信号在任何信道上传输都存在着传输差错,这些差错由多
种物理现象引起,解决差错问题的方法有两种:– 一种是在要发送的数据中加入一定的冗余位,使接收方能知
道数据是否出错,但不知道是哪里出错,这种编码方法叫差错检测码,或简称检错码。如 CRC
– 另一种是在要发送的数据中加入足够多的冗余位,使接收方能纠正出错的位,这种编码方法叫差错校正码,或简称纠错码。如海明码。
23/31
纠错码-海明码 定义:一帧由m 个数据位(即报文)和 r 个冗余位(即校验位)组成,设总长度为 n ( n=m+r) ,此长度为 n 的单元常称为 n 位码字。
定义:两个码字不同的位的数目称为海明距离– 例如, 10001001 与 10110001 它们的海明距离为 3 。
对于 n 位码字的集合,只有 2m 个码字是有效的,在任意两个有效码字间找出具有最小海明距离的两个码字,该海明距离便定义为全部码字的海明距离。
一种编码的检错和纠错能力取决于编码后码字的海明距离的大小。– 为了检测出 d 个比特的错,需要使用距离为 d+1 的编码。– 例如:数据后加奇偶校验位,编码后的海明距离为 2 ,能检测 1 比特错。
为了纠正d个比特的错,必须用距离为 2d+1的编码。– 例如有 4 个有效码字:它们是 0000000000 , 0000011111 , 1111100000 ,
1111111111 ,海明距离为 5 ,能纠正 2 比特错。
24/31
纠正单比特错的校验位下界设计一种编码,它有 m 个信息位和 r 个校验位,当 r满足什么条件时,能纠正所有单比特错?
对 2m 个有效码字的任何一个而言,有 n 个与该码字距离为 1 的无效码字,所以 2m 个有效码字每一个都对应有 n+1 个各不相同的位图, n 位码字的总的位图是 2n 个。
( n+1 ) 2m<=2n , n=m+r代入( m+r+1 ) 2m<=2 m+r
2r>=n+1 纠正单比特误码的校验位下界
25/31
海明编码海明在 1950年提出一种编码来纠正单比特错的编码。该编码是将码字内的位从左到右依次编号,编号为 2 的幂
的位是校验位(如第 1 , 2 , 4 , 8… ),其余为信息位。每个校验位的取值应使得包括自己在内的一些集合服从规
定的奇偶性。集合的选取如下:
– 对编号为 K 的信息位来说, K 可以分解成 2 的幂的和,如编号为 11 , 11=1+2+8 ,即第 11 位由 1 , 2 , 8 校验位校验,它同时属于1 , 2 , 8 所在的集合。
26/31
改进的奇偶校验 对数据位组成一个 L 位宽, K 位高的长方形距阵来发送,然后对每一列单独计
算奇偶位,并附在最后一行作为冗余位。
X X X X X X……X
X X X X X X……X
X X X X X X……X
……
X X X X X X……X
R R R R R R.….R 奇偶位
K 行
L 列检错率:
1. 该方法可以检测长度为 L 的突发性错误,但不能检测长度为 L+1 的突发性错误。
2. 假设 L列中任意一列检测出错的概率为 1/2 ,那么,整个数据块的错判率为( 1/2 ) L 。
该方法用在 ICMP 报头检验中。
27/31
海明编码举例
上例中, m=7 , r=4 , n=11 ,显然 24>=11+1 ,采用偶校验 3=1+2 , 5=1+4
6=2+4 , 7=1+2+4
9=1+8 , 10=2+8
11=1+2+8
校验位: 1 ( 3 , 5 , 7 , 9 , 11 )
2 ( 3 , 6 , 7 , 10 , 11 )
4 ( 5 , 6 , 7 )
8 ( 9 , 10 , 11 )
能纠正单比特错!
在接收方,如果校验位 1 不满足偶校验,而其他校验位都满足,则第 1 位出错,…
28/31
检错码在实际通信中使用纠错码好还是检错码好呢?例题
– 假设一个信道误码率是 10-6 ,且出错是孤立产生的(即只有单比特错),数据块长度为 1000 比特,如果采用纠错编码,需要 10 个校验位( 210>1011 ),传送 1M 数据需要 10000 个校验位;如果采用检错编码,每个数据块只需一个奇偶校验位,传送 1M 数据只需 1000 个校验位和一个重传的数据 1001 位,共需要 2001 比特。
在多数通信中采用检错编码,但在单工信道中需要纠错编码。
29/31
多项式编码(循环冗余码 CRC )
CRC ( Cyclic Redundancy Check)
CRC编码的一般操作– 给定一个 m 比特的帧或报文,发送方生成 r 比特的序列(也称为帧
检验序列 FCS , Frame Check Series ),形成( m+r )的码字,该码字能被某个事先确定的数整除。接收方用相同的数去除收到的帧,如果无余数,则认为数据帧无差错。
多项式表示:即将 k 比特的数据用 k项多项式表示,它的各项为 X k-1…X0 ,它的系数为数据中对应位的 0 或 1 。
例如: 110001 可表示成 X5+X4+1
30/31
循环冗余检验的原理 在数据链路层传送的帧中,广泛使用了循环冗余
检验码 CRC 的检错技术。在发送端,先把数据划分为组。假定每组 k 个比
特。 假设待传送的一组数据 M = 101001 (现在 k =
6 )。我们在 M 的后面再添加供差错检测用的 n 位冗余码一起发送。
31/31
冗余码的计算 用二进制的模 2 运算进行 2n 乘 M 的运算,这相当于在 M 后面添加 n 个 0 。
得到的 (k + n) 位的数除以事先选定好的长度为 (n + 1) 位的除数 P ,得出商是 Q 而余数是 R ,余数 R 比除数 P 少 1 位,即 R 是 n 位。
32/31
冗余码的计算举例 现在 k = 6, M = 101001 。设 n = 3, 除数 P = 1101 ,被除数是 2nM = 101001000 。 模 2 运算的结果是:商 Q = 110101 , 余数 R = 001 。把余数 R 作为冗余码添加在数据 M 的后面发送出去。发
送的数据是: 2nM + R
即: 101001001 ,共 (k + n) 位。
33/31
1101010110 ← Q 商 除数 P → 110101 101000110100000 ← 2nM 被除数 110101 111011
110101 111010 110101 111110 110101 101100 110101 110010 110101 01110 ← R 余数
循环冗余检验的原理说明
34/31
接收端对收到的每一帧进行 CRC 检验
(1) 若得出的余数 R = 0 ,则判定这个帧没有差错,就接受 (accept) 。
(2) 若余数 R 0 ,则判定这个帧有差错,就丢弃。但这种检测方法并不能确定究竟是哪一个或哪几个比
特出现了差错。只要经过严格的挑选,并使用位数足够多的除数 P ,那么出现检测不到的差错的概率就很小很小。
35/31
帧检验序列 FCS
在数据后面添加上的冗余码称为帧检验序列 FCS (Frame Check Sequence) 。
循环冗余检验 CRC 和帧检验序列 FCS 并不等同。– CRC 是一种常用的检错方法,而 FCS 是添加在
数据后面的冗余码。– FCS 可以用 CRC 这种方法得出,但 CRC 并非
用来获得 FCS 的唯一方法。
36/31
应当注意 仅用循环冗余检验 CRC 差错检测技术只能做到无差
错接受 (accept) 。“ 无差错接受”是指:“凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错”。
也就是说:“凡是接收端数据链路层接受的帧都没有传输差错”(有差错的帧就丢弃而不接受)。
要做到“可靠传输”(即发送什么就收到什么)就必须再加上确认和重传机制。
37/31
常用的多项式国际标准
CRC-12=X12+X11+X3+X2+X+1
CRC-16= X16 +X15 +X2 +1
CRC-CCITT= X16 +X15 +X5 +1
CRC-32=X32+X26+X23 +X22 +X16 +X12 +X11 +X10
+X8 +X7 +X5 +X4 +X2+X+1
38/31
本讲小结数据链路层的功能帧定界差错检测
– 循环冗余检验码(纠错码)– 海明码(检错码)
39/31
作业上交作业
– P105, 3-01,3-02,3-04,3-05,3-07