当前位置:
文档之家› 第七讲 - 差错控制与差错检测v3
第七讲 - 差错控制与差错检测v3
Deliver to upper 把正确帧 交给上层
r.seq==frame_expected
发送肯定确认
s.ack=1-frame_expected; to_physical_layer(&s);
Send ACK
to_network_layer(&); inc(frame_expected);
数据帧用交叉的0和1 表示 确认帧也用 ACK0/ACK1表示
丢弃ACK0 超时重发
F0
ACK1
F1
ACK0
损坏
F1
ACK0
R丢弃重 复帧
优点:实现简单 缺点:效率低
T
R
9
Copyright ©2015 YAN Wei. All rights reserved.
流量控制机制保证 传输双方能力上的 匹配。 差错控制将一条不 可靠的线路变得尽 可能可靠。
3
Copyright ©2015 YAN Wei. All rights reserved.
差错概述
正确传输
1
传输出错
1 2 1 2
丢失
2
1
3 3
time
3
2 3
停等式协议的实例1
协议2:基于理想化信道的传输控制
假设 信道不会出错 双方进行单工通信 接收方的缓冲区和处理能力都有限
from_network_layer(&buffer):从网络层获得需要传输的数据 to_network_layer(&):将收到的数据往上交给网络层 from_physical_layer(&r):接收入境帧 to_physical_layer(&s):发送一个帧 wait_for_event(&event):等待event的发生
第七讲 差错控制与差错检测
Copyright ©2015 YAN Wei. All rights reserved.
差错控制与差错检测
主要内容
停等式ARQ 连续式ARQ 差错检测原理 奇偶校验 CRC校验
熟 练 掌 握
阅读
3.2.2 3.3.3 3.4.2 3.4.3
RR2
RR4
损坏
R
回退N控制策略
发送方连续发出N个 帧,接收方以流水线 方式顺序接收各个帧, 并进行差错检测。 一旦某个帧有错,则 丢弃该帧和它之后所 收到的所有帧。
N:发送窗口大小
15
出错
丢弃
5,6,7 重发 超时
F0 F1 丢失 RR(P=1)
F0
ACK1
帧被丢失
?
既然是停等式发 送,是否还需要 序号? A超时重发 ACK0
F1 F0 F0
损坏
R 丢弃 出错帧
R
8
Copyright ©2015 YAN Wei. All rights reserved.
time
T
停-等式ARQ应对出错确认帧
ACK被破坏
纠错
当发现错误时,就地立即加以改正。
5
Copyright ©2015 YAN Wei. All rights reserved.
差错控制的基本功能
差错检测
接收端检测到差错。
肯定确认
接收端成功地收到无错帧后返回肯定确认
超时重发
发送端在预定的时间内未收到确认便重发帧
协议3:在一条可能出错的信道上进行传输控制
假设 信道可能出错(序号错) 双方进行单工通信
from_network_layer(&buffer):从网络层获得需要传输的信息 to_network_layer(&):将收到的信息往上交给网络层 from_physical_layer(&r):接收入境帧 to_physical_layer(&s):发送一个帧 Wait_for_event(&event):等待event的发生 //* 新增功能 start_timer(s.seq):启动序号为seq帧的计时器 stop_timer(s.ack):关闭计时器 Inc():递增数
ARQ:Automatic-Repeat-reQuest
7 Copyright ©2015 YAN Wei. All rights reserved.
停-等式ARQ应对出错数据帧
帧被破坏
停等式ARQ:发送方仅在收到当前帧的肯定确 认后才能发送下一帧。
发送方要保存已发送 但未被确认的数据帧 付本
超时重发
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
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帧;
buffer:存放上层数据 s:拟发送的数据帧
Wait for ACK 收到肯定确认 后等待上层调用
Get from above
wait_for_event(&event)
条件 动作
wait_for_event(&event) from_physical_layer(&r); to_network_layer(&);
当确认全部丢失时易造成混肴
WT=m-1
发送序号:0,1,2,· · · ,m-2; 重发的第一个序号是0; 正常下一轮发送的第一个序号是m-1;
最大发送窗口为: WT = 2 n – 1 = m - 1
WT<m-1
更不会混淆
若WTm-1会怎样?
R
①将入境帧内 的数据上交给 网络层
Wait for
incoming
Send ACK
to_physical_layer(&s)
反馈肯定确认
r:接收的数据帧
11 Copyright ©2015 YAN Wei. All rights reserved.
停等式协议的实例2
i
T
RRi+1 RRi+2
R
17
Copyright ©2015 YAN Wei. All rights reserved.
回退-N ARQ的发送窗口
假设 模m =2n ,最大序号Smax = m-1 = 2n – 1 序号空间:0, 1, 2, 3, ……... 2n – 1
T
i+1
i
R
i-1
16
Copyright ©2015 YAN Wei. All rights reserved.
回退-N ARQ应对出错的确认帧
确认帧被破坏
R收到帧i并发送RR(i+1),该确认帧在途中丢失; 在T的帧计时器超时前可能收到随后帧的确认。 T的计时器超时,发一个RR帧; 若R没有响应或响应帧被损坏则T重发RR; 这种过程重复一定次数后启动重置过程; REJ被损坏; 如果REJ被丢失,同前面处理过程。
0帧接收 还是拒 绝?
发 送 窗 口
接 收 窗 口
超时
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
12 Copyright ©2015 YAN Wei. All rights reserved.
协议3状态机——发送方
①将上层数据 封装成帧发送 Send a frame
= buffer; s.seq=next_frame_to_send; to_physical_layer(&s); start_timer(s.seq)
丢失
4
T
4
出错
©2015 YAN Wei. All rights reserved.
差错控制
差错控制:指对传输的数据信息进行错误检测, 并加以恰当的处理。
正确接收
帧按发出的次序到达,且每个帧有不定长的传输延迟。
检错
当发现错误时,丢弃错误信息并要求重新传输该信息。
frame_expected: 下一个接收帧的序号 r:发送的帧 r:接收的帧
这里的ACK=正确收到的帧序号
14 Copyright ©2015 YAN Wei. All rights reserved.
回退-N ARQ
顺序收发方式:接收方 只能按照帧的序号接收 数据帧。 T F0 F1 F2 F3 F4 F5 F6 F7
Copyright ©2015 YAN Wei. All rights reserved.
10
Copyright ©2015 YAN Wei. All rights reserved.