第七讲 - 差错控制与差错检测v3
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
流量控制机制保证 传输双方能力上的 匹配。 差错控制将一条不 可靠的线路变得尽 可能可靠。
http://net.pku.edu.cn
3
Copyright ©2015 YAN Wei. All rights reserved.
差错概述
正确传输
1
传输出错
1 2 1 2
丢失
2
1
3 3
time
3
2 3
i
T
RRi+1 RRi+2
R
http://net.pku.edu.cn
17
Copyright ©2015 YAN Wei. All rights reserved.
回退-N ARQ的发送窗口
假设 模m =2n ,最大序号Smax = m-1 = 2n – 1 序号空间:0, 1, 2, 3, ……... 2n – 1
http://net.pku.edu.cn
10
Copyright ©2015 YAN Wei. All rights reserved.
协议2的状态机
T
①将上层数据 封装成帧发送
from_network_layer(&buffer); s.info = buffer; to_physical_layer(&s);
Deliver to upper 把正确帧 交给上层
r.seq==frame_expected
发送肯定确认
s.ack=1-frame_expected; to_physical_layer(&s);
Send ACK
to_network_layer(&r.info); inc(frame_expected);
T
i+1
i
R
i-1
http://net.pku.edu.cn
16
Copyright ©2015 YAN Wei. All rights reserved.
回退-N ARQ应对出错的确认帧
确认帧被破坏
R收到帧i并发送RR(i+1),该确认帧在途中丢失; 在T的帧计时器超时前可能收到随后帧的确认。 T的计时器超时,发一个RR帧; 若R没有响应或响应帧被损坏则T重发RR; 这种过程重复一定次数后启动重置过程; REJ被损坏; 如果REJ被丢失,同前面处理过程。
第七讲 差错控制与差错检测
http://net.pku.edu.cn
Copyright ©2015 YAN Wei. All rights reserved.
差错控制与差错检测
主要内容
停等式ARQ 连续式ARQ 差错检测原理 奇偶校验 CRC校验
熟 练 掌 握
阅读
3.2.2 3.3.3 3.4.2 3.4.3
ARQ
否定确认与重发
接收端对出错的帧 返回否定确认 发送端重发该帧
http://net.pku.edu.cn
6
Copyright ©2015 YAN Wei. All rights reserved.
自动重发检错(ARQ)
纠错编码:在信息序列中根据某种规则加入一定校验码。 ARQ原理
发送方根据被传送的数据信息,按一定的规律加入一些校验码 位,使数据信息和校验码有某种相关性,然后一起发送到接收 方; 接收方根据数据信息与校验码之间的相关规律进行检验,从而 确定接收的信息是否出错,并通过反馈信息把检测结果反馈给 发送方。
F0
ACK1
帧被丢失
?
既然是停等式发 送,是否还需要 序号? A超时重发 ACK0
F1 F0 F0
损坏
R 丢弃 出错帧
R
http://net.pku.edu.cn
8
Copyright ©2015 YAN Wei. All rights reserved.
time
T
停-等式ARQ应对出错确认帧
ACK被破坏
当确认全部丢失时易造成混肴
WT=m-1
发送序号:0,1,2,· · · ,m-2; 重发的第一个序号是0; 正常下一轮发送的第一个序号是m-1;
最大发送窗口为: WT = 2 n – 1 = m - 1
WT<m-1
更不会混淆
若WTm-1会怎样?
http://net.pku.edu.cn
frame_expected: 下一个接收帧的序号 r:发送的帧 r:接收的帧
http://net.pku.edu.cn
这里的ACK=正确收到的帧序号
14 Copyright ©2015 YAN Wei. All rights reserved.
回退-N ARQ
顺序收发方式:接收方 只能按照帧的序号接收 数据帧。 T F0 F1 F2 F3 F4 F5 F6 F7
超时重发
event==time_out
Wait for event
wait_for_event( &event)&&
等待event(到 达ACK、出错、 超时)
event==frame_arrival
from_physical_layer(&s);
s.ack==next_frame_to_send
19
Copyright ©2015 YAN Wei. All rights reserved.
回退-N ARQ特性
特点
要求每一帧的确认在其后第N个帧尚未结束发送之前到达 发送方必须有存放N帧信息的缓存以便重发 接收方只要求存放一帧的缓冲区 要求全双工链路 若第一帧的确 认在第N帧发 完以前尚未到 达,表明信道 往返时延较大, 可加大帧的长 度或增加N的 值。
0帧接收 还是拒 绝?
发 送 窗 口
接 收 窗 口
http://net.pku.edu.cn
超时
WT
0 1 2 3 4
m-1
丢失 丢失
0 1
丢失
0 1 2 3 4
18
m-1
0 1
?
Copyright ©2015 YAN Wei. All rights reserved.
回退-N ARQ的发送窗口
WT=m
协议3:在一条可能出错的信道上进行传输控制
假设 信道可能出错(序号错) 双方进行单工通信
from_network_layer(&buffer):从网络层获得需要传输的信息 to_network_layer(&r.info):将收到的信息往上交给网络层 from_physical_layer(&r):接收入境帧 to_physical_layer(&s):发送一个帧 Wait_for_event(&event):等待event的发生 //* 新增功能 start_timer(s.seq):启动序号为seq帧的计时器 stop_timer(s.ack):关闭计时器 Inc():递增数
stop_timer(s.ack) from_network_layer(&buffer); inc(next_frame_to_send)
Get ACK
T
获得上层数据, 递增序号
next_frame_to_send: 下一个发送帧的序号 s: 拟发送的帧
13 Copyright ©2015 YAN Wei. All rights reserved.
F2
REJ5 F5 F6 RR6 F7 RR0
RR2
Copyright ©2015 YAN Wei. All rights reserved.
回退-N ARQ应对出错的数据帧
数据帧被破坏
T传出一帧i被损坏,R已成功接收帧(i-1); R发回REJi;表明拒收帧i; T收到REJi后,重传帧i 及其后续帧; 帧i在传输中被丢失,T随后发送帧(i+1); R收到帧(i+1)后发现次序不对,发回REJi; T收到REJi后,重传帧i及后续帧; 帧i在传输中被丢失,T并没继续发送帧; R收不到任何信息,发回一个RR(而不是REJ); 当T的i计时器超时,发一个RR帧;
http://net.pku.edu.cn 12 Copyright ©2015 YAN Wei. All rights reserved.
协议3状态机——发送方
①将上层数据 封装成帧发送 Send a frame
s.info = buffer; s.seq=next_frame_to_send; to_physical_layer(&s); start_timer(s.seq)
ARQ:Automatic-Repeat-reQuest
http://net.pku.edu.cn 7 Copyright ©2015 YAN Wei. All rights reserved.
停-等式ARQ应对出错数据帧
帧被破坏
停等式ARQ:发送方仅在收到当前帧的肯定确 认后才能发送下一帧。
发送方要保存已发送 但未被确认的数据帧 付本
RR2
RR4
损坏
R
回退N控制策略
发送方连续发出N个 帧,接收方以流水线 方式顺序接收各个帧, 并进行差错检测。 一旦某个帧有错,则 丢弃该帧和它之后所 收到的所有帧。
N:发送窗口大小
http://net.pku.edu.cn 15
出错
丢弃
5,6,7 重发 超时
F0 F1 丢失 RR(P=1)
丢失
4
T
4
出错
4
4
4
R
http://net.pku.edu.cn
Copyright ©2015 YAN Wei. All rights reserved.
差错控制
差错控制:指对传输的数据信息进行错误检测, 并加以恰当的处理。
正确接收
帧按发出的次序到达,且每个帧有不定长的传输延迟。
检错
当发现错误时,丢弃错误信息并要求重新传输该信息。
Copyright ©2015 YAN Wei. All rights reserved.
熟 练 掌 握 奇 偶 校 校 验 验 和 计 算 CRC
深 刻 理 解 差 错 检 测 原 理
熟 练 掌 握 机 制
ARQ
http://net.pku.edu.cn
2
Copyright ©2015 YAN Wei. All rights reserved.
数据链路层完成“点-点”传输
http://net.pku.edu.cn
协议3状态机——接收方
event==frame_arrival
①等待event(正确 帧、错误帧)
Wait for event
wait_for_event(&event)
from_physical_layer(&r);
R
重复发送确认
s.ack=1-frame_expected; to_physical_layer(&s);
纠错
当发现错误时,就地立即加以改正。
http://net.pku.edu.cn
wenku.baidu.com
5
Copyright ©2015 YAN Wei. All rights reserved.
差错控制的基本功能
差错检测
接收端检测到差错。
肯定确认
接收端成功地收到无错帧后返回肯定确认
超时重发
发送端在预定的时间内未收到确认便重发帧
数据帧用交叉的0和1 表示 确认帧也用 ACK0/ACK1表示
丢弃ACK0 超时重发
F0
ACK1
F1
ACK0
损坏
F1
ACK0
R丢弃重 复帧
优点:实现简单 缺点:效率低
T
R
http://net.pku.edu.cn
9
Copyright ©2015 YAN Wei. All rights reserved.
buffer:存放上层数据 s:拟发送的数据帧
Wait for ACK 收到肯定确认 后等待上层调用
Get from above
wait_for_event(&event)
条件 动作
wait_for_event(&event) from_physical_layer(&r); to_network_layer(&r.info);
R
①将入境帧内 的数据上交给 网络层
Wait for
incoming
Send ACK
to_physical_layer(&s)
反馈肯定确认
r:接收的数据帧
http://net.pku.edu.cn
11 Copyright ©2015 YAN Wei. All rights reserved.
停等式协议的实例2
停等式协议的实例1
协议2:基于理想化信道的传输控制
假设 信道不会出错 双方进行单工通信 接收方的缓冲区和处理能力都有限
from_network_layer(&buffer):从网络层获得需要传输的数据 to_network_layer(&r.info):将收到的数据往上交给网络层 from_physical_layer(&r):接收入境帧 to_physical_layer(&s):发送一个帧 wait_for_event(&event):等待event的发生
http://net.pku.edu.cn
3
Copyright ©2015 YAN Wei. All rights reserved.
差错概述
正确传输
1
传输出错
1 2 1 2
丢失
2
1
3 3
time
3
2 3
i
T
RRi+1 RRi+2
R
http://net.pku.edu.cn
17
Copyright ©2015 YAN Wei. All rights reserved.
回退-N ARQ的发送窗口
假设 模m =2n ,最大序号Smax = m-1 = 2n – 1 序号空间:0, 1, 2, 3, ……... 2n – 1
http://net.pku.edu.cn
10
Copyright ©2015 YAN Wei. All rights reserved.
协议2的状态机
T
①将上层数据 封装成帧发送
from_network_layer(&buffer); s.info = buffer; to_physical_layer(&s);
Deliver to upper 把正确帧 交给上层
r.seq==frame_expected
发送肯定确认
s.ack=1-frame_expected; to_physical_layer(&s);
Send ACK
to_network_layer(&r.info); inc(frame_expected);
T
i+1
i
R
i-1
http://net.pku.edu.cn
16
Copyright ©2015 YAN Wei. All rights reserved.
回退-N ARQ应对出错的确认帧
确认帧被破坏
R收到帧i并发送RR(i+1),该确认帧在途中丢失; 在T的帧计时器超时前可能收到随后帧的确认。 T的计时器超时,发一个RR帧; 若R没有响应或响应帧被损坏则T重发RR; 这种过程重复一定次数后启动重置过程; REJ被损坏; 如果REJ被丢失,同前面处理过程。
第七讲 差错控制与差错检测
http://net.pku.edu.cn
Copyright ©2015 YAN Wei. All rights reserved.
差错控制与差错检测
主要内容
停等式ARQ 连续式ARQ 差错检测原理 奇偶校验 CRC校验
熟 练 掌 握
阅读
3.2.2 3.3.3 3.4.2 3.4.3
ARQ
否定确认与重发
接收端对出错的帧 返回否定确认 发送端重发该帧
http://net.pku.edu.cn
6
Copyright ©2015 YAN Wei. All rights reserved.
自动重发检错(ARQ)
纠错编码:在信息序列中根据某种规则加入一定校验码。 ARQ原理
发送方根据被传送的数据信息,按一定的规律加入一些校验码 位,使数据信息和校验码有某种相关性,然后一起发送到接收 方; 接收方根据数据信息与校验码之间的相关规律进行检验,从而 确定接收的信息是否出错,并通过反馈信息把检测结果反馈给 发送方。
F0
ACK1
帧被丢失
?
既然是停等式发 送,是否还需要 序号? A超时重发 ACK0
F1 F0 F0
损坏
R 丢弃 出错帧
R
http://net.pku.edu.cn
8
Copyright ©2015 YAN Wei. All rights reserved.
time
T
停-等式ARQ应对出错确认帧
ACK被破坏
当确认全部丢失时易造成混肴
WT=m-1
发送序号:0,1,2,· · · ,m-2; 重发的第一个序号是0; 正常下一轮发送的第一个序号是m-1;
最大发送窗口为: WT = 2 n – 1 = m - 1
WT<m-1
更不会混淆
若WTm-1会怎样?
http://net.pku.edu.cn
frame_expected: 下一个接收帧的序号 r:发送的帧 r:接收的帧
http://net.pku.edu.cn
这里的ACK=正确收到的帧序号
14 Copyright ©2015 YAN Wei. All rights reserved.
回退-N ARQ
顺序收发方式:接收方 只能按照帧的序号接收 数据帧。 T F0 F1 F2 F3 F4 F5 F6 F7
超时重发
event==time_out
Wait for event
wait_for_event( &event)&&
等待event(到 达ACK、出错、 超时)
event==frame_arrival
from_physical_layer(&s);
s.ack==next_frame_to_send
19
Copyright ©2015 YAN Wei. All rights reserved.
回退-N ARQ特性
特点
要求每一帧的确认在其后第N个帧尚未结束发送之前到达 发送方必须有存放N帧信息的缓存以便重发 接收方只要求存放一帧的缓冲区 要求全双工链路 若第一帧的确 认在第N帧发 完以前尚未到 达,表明信道 往返时延较大, 可加大帧的长 度或增加N的 值。
0帧接收 还是拒 绝?
发 送 窗 口
接 收 窗 口
http://net.pku.edu.cn
超时
WT
0 1 2 3 4
m-1
丢失 丢失
0 1
丢失
0 1 2 3 4
18
m-1
0 1
?
Copyright ©2015 YAN Wei. All rights reserved.
回退-N ARQ的发送窗口
WT=m
协议3:在一条可能出错的信道上进行传输控制
假设 信道可能出错(序号错) 双方进行单工通信
from_network_layer(&buffer):从网络层获得需要传输的信息 to_network_layer(&r.info):将收到的信息往上交给网络层 from_physical_layer(&r):接收入境帧 to_physical_layer(&s):发送一个帧 Wait_for_event(&event):等待event的发生 //* 新增功能 start_timer(s.seq):启动序号为seq帧的计时器 stop_timer(s.ack):关闭计时器 Inc():递增数
stop_timer(s.ack) from_network_layer(&buffer); inc(next_frame_to_send)
Get ACK
T
获得上层数据, 递增序号
next_frame_to_send: 下一个发送帧的序号 s: 拟发送的帧
13 Copyright ©2015 YAN Wei. All rights reserved.
F2
REJ5 F5 F6 RR6 F7 RR0
RR2
Copyright ©2015 YAN Wei. All rights reserved.
回退-N ARQ应对出错的数据帧
数据帧被破坏
T传出一帧i被损坏,R已成功接收帧(i-1); R发回REJi;表明拒收帧i; T收到REJi后,重传帧i 及其后续帧; 帧i在传输中被丢失,T随后发送帧(i+1); R收到帧(i+1)后发现次序不对,发回REJi; T收到REJi后,重传帧i及后续帧; 帧i在传输中被丢失,T并没继续发送帧; R收不到任何信息,发回一个RR(而不是REJ); 当T的i计时器超时,发一个RR帧;
http://net.pku.edu.cn 12 Copyright ©2015 YAN Wei. All rights reserved.
协议3状态机——发送方
①将上层数据 封装成帧发送 Send a frame
s.info = buffer; s.seq=next_frame_to_send; to_physical_layer(&s); start_timer(s.seq)
ARQ:Automatic-Repeat-reQuest
http://net.pku.edu.cn 7 Copyright ©2015 YAN Wei. All rights reserved.
停-等式ARQ应对出错数据帧
帧被破坏
停等式ARQ:发送方仅在收到当前帧的肯定确 认后才能发送下一帧。
发送方要保存已发送 但未被确认的数据帧 付本
RR2
RR4
损坏
R
回退N控制策略
发送方连续发出N个 帧,接收方以流水线 方式顺序接收各个帧, 并进行差错检测。 一旦某个帧有错,则 丢弃该帧和它之后所 收到的所有帧。
N:发送窗口大小
http://net.pku.edu.cn 15
出错
丢弃
5,6,7 重发 超时
F0 F1 丢失 RR(P=1)
丢失
4
T
4
出错
4
4
4
R
http://net.pku.edu.cn
Copyright ©2015 YAN Wei. All rights reserved.
差错控制
差错控制:指对传输的数据信息进行错误检测, 并加以恰当的处理。
正确接收
帧按发出的次序到达,且每个帧有不定长的传输延迟。
检错
当发现错误时,丢弃错误信息并要求重新传输该信息。
Copyright ©2015 YAN Wei. All rights reserved.
熟 练 掌 握 奇 偶 校 校 验 验 和 计 算 CRC
深 刻 理 解 差 错 检 测 原 理
熟 练 掌 握 机 制
ARQ
http://net.pku.edu.cn
2
Copyright ©2015 YAN Wei. All rights reserved.
数据链路层完成“点-点”传输
http://net.pku.edu.cn
协议3状态机——接收方
event==frame_arrival
①等待event(正确 帧、错误帧)
Wait for event
wait_for_event(&event)
from_physical_layer(&r);
R
重复发送确认
s.ack=1-frame_expected; to_physical_layer(&s);
纠错
当发现错误时,就地立即加以改正。
http://net.pku.edu.cn
wenku.baidu.com
5
Copyright ©2015 YAN Wei. All rights reserved.
差错控制的基本功能
差错检测
接收端检测到差错。
肯定确认
接收端成功地收到无错帧后返回肯定确认
超时重发
发送端在预定的时间内未收到确认便重发帧
数据帧用交叉的0和1 表示 确认帧也用 ACK0/ACK1表示
丢弃ACK0 超时重发
F0
ACK1
F1
ACK0
损坏
F1
ACK0
R丢弃重 复帧
优点:实现简单 缺点:效率低
T
R
http://net.pku.edu.cn
9
Copyright ©2015 YAN Wei. All rights reserved.
buffer:存放上层数据 s:拟发送的数据帧
Wait for ACK 收到肯定确认 后等待上层调用
Get from above
wait_for_event(&event)
条件 动作
wait_for_event(&event) from_physical_layer(&r); to_network_layer(&r.info);
R
①将入境帧内 的数据上交给 网络层
Wait for
incoming
Send ACK
to_physical_layer(&s)
反馈肯定确认
r:接收的数据帧
http://net.pku.edu.cn
11 Copyright ©2015 YAN Wei. All rights reserved.
停等式协议的实例2
停等式协议的实例1
协议2:基于理想化信道的传输控制
假设 信道不会出错 双方进行单工通信 接收方的缓冲区和处理能力都有限
from_network_layer(&buffer):从网络层获得需要传输的数据 to_network_layer(&r.info):将收到的数据往上交给网络层 from_physical_layer(&r):接收入境帧 to_physical_layer(&s):发送一个帧 wait_for_event(&event):等待event的发生