第4章数据链路层
在数据链路层传送的帧中,广泛使用了循环冗 余检验 CRC 的检错技术。 假设待传送的数据 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 个比特。
在接收端只有当收到的数据帧的发送序号落入接收 窗口内才允许将该数据帧收下。 若接收到的数据帧落在接收窗口之外,则一律将其 丢弃。 在连续 ARQ 协议中,接收窗口的大小 WR = 1。
只有当收到的帧的序号与接收窗口一致时才能接收该帧。 否则,就丢弃它。 每收到一个序号正确的帧,接收窗口就向前(即向右方) 滑动一个帧的位置。同时发送对该帧的确认。
停止等待协议 顺序接收管道协议 选择重传协议
4.3.1 停止等待协议
在发送结点: (1) 从主机取一个数据帧。 (2) 将数据帧送到数据链路层的发送缓存。 (3) 将发送缓存中的数据帧发送出去。 (4) 等待确认,启动计时器。 (5) 若收到由接收节点发过来的信息(此信息 的格式与内容可由双方事先商定好),则 从主机取一个新的数据帧,然后转到(2)。
不依赖于特定字符编码集 数据报文可透明传输 具有较高的传输效率 采用CRC校验
HDLC的操作方式
正常响应方式NRM
传输过程由主站启动,主站负责管理整个链路
传输过程由从站启动 允许任何节点启动传输
异步响应方式ARM
异步平衡方式ABM
HDLC 的帧结构
比特 8 标志 F 8 地址 A 8 控制 C 可变 信息 Info 16 帧检验序列 FCS 8 标志 F
链路管理
链路管理主要用于面向连接的服务 数据链路层连接的建立、维持和释放称 作链路管理
4.2 差错控制
虽然物理层在传输比特时会出现差错,但由于 数据链路层采用了有效的差错控制机制,数据 链路层对上面的网络层就可以提供可靠传输的 服务。 差错检测 差错控制
4.2.1 差错检测
信号在物理信道中传输时,各种因素会造成信号 失真 传输中的差错由噪声引起,噪声有两大类
4.4.2 高级数据链路控制协议
1974年,IBM 公司推出了面向比特的规程 SDLC (Synchronous Data Link Control)。 后来 ISO 把 SDLC 修改后称为 HDLC (Highlevel Data Link Control),译为高级数据链路 控制,作为国际标准ISO 3309 HDLC的优点:
检测出差错
只要得出的余数 R 不为 0,就表示检测到了差 错。 但这种检测方法并不能确定究竟是哪一个或哪 几个比特出现了差错。 一旦检测出差错,就丢弃这个出现差错的帧。 只要经过严格的挑选,并使用位数足够多的除 数 P,那么出现检测不到的差错的概率就很小 很小。
4.3 基本数据链路协议
缓存
帧
帧 数据链路
缓存
数据链路层
停止等待协议 ARQ 的优缺点
优点:比较简单 。 缺点:通信信道的利用率不高,也就是说,信 道还远远没有被数据比特填满。
为了克服这一缺点,就产生了另外两种协议, 即连续 ARQ 和选择重传 ARQ。这将在后面 进一步讨论。
4.3.2 顺序接收管道协议
ARQ
FEC
4.2.3 奇偶校验码和循环冗余码
奇偶校验(一个检错码例子)
奇偶位的选取原则是使码字内的1的数目是偶 数(或奇数)。 这种代码的距离为2,因为任何单比特错都会 产生奇偶位不正确的码字。
垂直奇偶校验 水平奇偶校验 水平垂直奇偶校验
4.2.3 奇偶校验码和循环冗余码
连续重发请求方案就是指顺序接收管道协议 发送方可以连续发送数据帧而不必等待前一帧确认 某一帧出差错,则丢弃后续所有帧 发送端和接收端分别设定发送窗口和接收窗口 发送窗口用来对发送端进行流量控制。 发送窗口的大小 WT 代表在还没有收到对方确认信 息的情况下发送端最多可以发送多少个数据帧。
发送窗口 WT (a)
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 号帧
不允许接收这些帧
滑动窗口的重要特性
只有在接收窗口向前滑动时(与此同时 也发送了确认),发送窗口才有可能向 前滑动。 收发两端的窗口按照以上规律不断地向 前滑动,因此这种协议又称为滑动窗口 协议。 当发送窗口和接收窗口的大小都等于 1 时,就是停止等待协议。
发送窗口的最大值
当用 n 个比特进行编号时,若接收窗口 的大小为 1,则只有在发送窗口的大小 WT 2n 1时,连续 ARQ 协议才能正确 运行。 例如,当采用 3 bit 编码时,发送窗口的 最大值是 7 而不是 8。
4.3.3 选择重传 ARQ 协议
可加大接收窗口,先收下发送序号不连续但仍处在接 收窗口中的那些数据帧。等到所缺序号的数据帧收到 后再一并送交主机。 选择重传 ARQ 协议可避免重复传送那些本来已经正确 到达接收端的数据帧。 但我们付出的代价是在接收端要设置具有相当容量的 缓存空间。 对于停等协议,发送窗口=1,接收窗口=1 对于连续重发请求,发送窗口>1,接收窗口=1 对于选择重传 ARQ 协议,发送窗口>1,接收窗口>1
其他字段
地址字段 A 是 8 bit。 帧检验序列 FCS 字段共 16 bit。所检验 的范围是从地址字段的第一个比特起, 到信息字段的最末一个比特为止。 控制字段 C 共 8 bit,是最复杂的字段。 HDLC 的许多重要功能都靠控制字段来 实现。
4.5 因特网的数据链路层协议
信道固有的随机热噪声 外界特定的冲击噪声 差错控制编码 差错校验
差错检测应包含两个任务
4.2.2 差错控制方法
差错控制方法主要有两类:
自动请求重发(ARQ) 前向纠错(FEC) 接收端进行差错检测,检测到差错就通知发送方重传 只使用检错码,需要双向通信信道,并设置重发缓冲区 接收端不仅检测错误,也纠正差错 使用纠错码,不需要重发缓冲区 编码复杂,实现起来比ARQ困难
冗余码的计算举例
设 n = 5, P = 110101,模 2 运算的结果是:商 Q = 1101010110, 余数R = 01110。 将余数 R 作为冗余码添加在数据 M 的后面发 送出去,即发送的数据是101000110101110, 或 2nM + R。
循环冗余检验的原理说明
1101010110 ← Q 商 除数 P → 110101 101000110100000 ← 2nM 被除数 110101 111011 110101 111010 110101 111110 110101 101100 110101 110010 110101 01110 ← R 余数
差错控制
接收方可通过校验帧的差错编码,判断接收到 的帧是否有差错。保证所有的帧最终都能按照 正确的顺序交付给目的机器的网络层 检查差错编码 引入计时器限定接收方发回反馈信息的时间 使用序号对数据帧编号
流量控制
为避免发送方和接收方处理数据的速度差异造 成的问题,引入流量控制功能 停止等待方案 滑动窗口机制
FCS 检验区间 透明传输区间
标志字段 F (Flag) 为 6 个连续 1 加上两 边各一个 0 共 8 bit。在接收端只要找到 标志字段就可确定一个帧的位置。
零比特的填充与删除
数据中某一段比特组合恰好 出现和 F 字段一样的情况 发送端在 5 个连 1 之后 填入 0 比特再发送出去 01001111110001010 会被误认为是 F 字段 010011111010001010 填入 0 比特 在接收端将 5 个连 1 之后 的 0 比特删除,恢复原样
串行线路IP协议(SLIP) 点到点协议(PPP) 现在全世界使用得最多的数据链路层协 议是点对点协议 PPP (Point-to-Point Protocol)。 用户使用拨号电话线接入因特网时,一 般都是使用 PPP 协议。
4.3.1 停止等待协议
在接收结点: (1) 等待。 (2) 若收到由发送节点发过来的数据帧, 则将其放入数据链路层的接收缓存。 (3) 将接收缓存中的数据帧上交主机。 (4) 向发送结点发一信息,表示数据帧已 经上交给主机。 (5) 转到(1)。
4.3.1 停止等待协议
发送方 主 机 A AP1 接收方 AP2 主 机 B 高层
0
1
2
3
4
5
6
7
01Βιβλιοθήκη 2允许发送 5 个帧 WT
不允许发送这些帧
(b)
0