数据链路层-ARQ协议-指导

合集下载

ARQ简介

ARQ简介

ARQ简介自动重传请求(Automatic Repeat-reQuest,ARQ)是OSI模型中数据链路层的错误纠正协议之一。

它包括停止等待ARQ协议和连续ARQ协议,错误侦测(Error Detection)、正面确认(Positive Acknowledgment)、逾时重传(Retransmission after Timeout)与负面确认继以重传(Negative Acknowledgment and Retransmission)等机制。

停止并等待ARQ协议(stop-and-wait)停止并等待协议的工作原理如下:1.发送点对接收点发送数据包,然后等待接收点回复ACK并且开始计时。

2.在等待过程中,发送点停止发送新的数据包。

3.当数据包没有成功被接收点接收时候,接收点不会发送ACK. 这样发送点在等待一定时间后,重新发送数据包。

4.反复以上步骤直到收到从接收点发送的ACK.发送点的等待时间应当至少大于传输点数据包发送时间(数据包容量除以发送点传输速度),接收点ACK接收时间(ACK容量除以接收点传输速度),数据在连接上的传送时间,接收点检验接收数据是否正确的时间之和。

在实际应用当中,等待时间是这个和的2到3倍。

这个协议的缺点是较长的等待时间导致低的数据传输速度。

在低速传输时,对连接频道的利用率比较好,但是在高速传输时,频道的利用率会显著下降。

连续ARQ协议(Continuous ARQ)为了克服停止并等待ARQ协议长时间等待ACK的缺点。

这个协议会连续发送一组数据包,然后再等待这些数据包的ACK.选择重复 (Selective Repeat)•发送点连续发送数据包但对每个数据包都设有个一个计时器。

•当在一定时间内没有受到某个数据包的ACK时,发送点只重新发送那个没有ACK的数据包这个方法的缺点是接收点收到的数据包的顺序可能不是发送的数据包顺序。

因此在数据包里必须含有顺序字符来帮助接受点来排序。

arq协议

arq协议

arq协议ARQ协议(Automatic Repeat Request protocol)是一种数据传输协议,主要用于在无线通信中处理数据传输中的错误。

ARQ协议通过在传输数据时引入确认机制和重传机制,以保证数据传输的可靠性。

ARQ协议的基本原理是发送方在发送每个数据包之后等待接收方的确认信号。

如果发送方在一定时间内没有收到确认信号,或者接收方发送了错误的确认信号,发送方将重新传输该数据包。

这样可以确保数据在传输过程中的可靠性。

ARQ协议通常分为停等ARQ和连续ARQ两种形式。

停等ARQ是指发送方在发送数据包后会进入等待状态,直到收到确认信号才能发送下一个数据包。

连续ARQ则允许发送方在等待确认信号的同时继续发送其他数据包。

ARQ协议的重传机制是其中最重要的部分。

当发送方没有在规定时间内接收到确认信号时,会将数据包进行重传。

为了避免无限重传,ARQ协议通常会设置一个重传次数的上限。

如果在达到重传次数上限后仍然没有收到确认信号,发送方将停止发送并通知用户进行相应的处理。

ARQ协议的确认机制则是通过接收方发送确认信号来告知发送方数据包是否正确接收。

确认信号可以是一个单独的信号,也可以通过传送一个特殊的确认帧来实现。

当接收方收到正确的数据包时,会发送一个肯定确认的信号;当接收方接收到错误的数据包时,会发送一个否定确认的信号,以触发发送方进行重传。

ARQ协议还可以根据需要进行不同的优化。

例如,在连续ARQ中,发送方可以选择一次性发送多个数据包而不需要等待每个数据包的确认信号。

这种方式可以提高传输的效率,但也会增加重传的代价。

总的来说,ARQ协议通过引入确认机制和重传机制,保障了数据传输的可靠性。

在无线通信中,由于信道的不确定性,ARQ协议是一种常用的数据传输协议。

它不仅可以在数据传输中检测和纠正错误,还可以提供实时性较高的数据传输服务。

因此,在无线通信中,ARQ协议具有重要的应用价值。

ARQ协议

ARQ协议
My class one, our home
13/13
11/13
总结
从滑动窗口的观点来统一看待1比特滑动窗口、回退N及
选择重传三种协议,它们的差别仅在于各自窗口尺寸的
大小不同而已。1比特滑动窗口协议:发送窗口=1,接收 窗口=1;后退n协议:发送窗口>1,接收窗口=1;选择重传 协议:发送窗口>1,接收窗口>1
12/13
谢谢!
第一部分
Electrical and Mechanical
工作原理
目 连续 ARQ 录 协议
回退N帧与滑动窗口
选择重传
4/13
工作原理
简单来说:
第一部分
Electrical and Mechanical
My class one, our home
原理介绍
就是发送方每发完一帧就停下来等待对方的 应答,如果在设定的时间内得不到接收方的 应答,或得到一个否认应答(NAK),则重新 发送原帧;如果得到一个肯定应(ACK),则 发送新帧。
9/13
滑动窗口
当发送窗口尺寸和接收窗口的大小都等于 1时, 就退化为停止等待协议。 当发送窗口大于1,接收窗口等于1时,就是回退 N步协议。 当发送窗口和接收窗口的大小均大于1时,就是 选择重发协议。
第一部分
可以在收到确认信息之前发送多个数据分组。提 高了网络的吞吐量,解决了端到端的通信流量控 Electrical and Mechanical My class one, our home 制问题
08机电1班
My class one
Electrical and Mechanical
ARQ 协议
刘永霞
1/13

ARQ

ARQ

一、ARQ(Automatic Repeat-reQuest)是OSI模型中数据链路层的错误纠正协议之一。

它包括停止等待ARQ协议和连续ARQ协议,错误侦测(Error Detection)、正面确认(Positive Acknowledgment)、逾时重传(Retransmission after Timeout)与负面确认继以重传(Negative Acknowledgment and Retransmission)等机制。

自动重传请求(Automatic Repeat reQuest),通过接收方请求发送方重传出错的数据报文来恢复出错的报文,是通信中用于处理信道所带来差错的方法之一,有时也被称为后向纠错(Backward Error Correction,BEC);另外一个方法是信道纠错编码。

传统自动重传请求分成为三种,即停等式(stop-and-wait)ARQ,回退n帧(go-back-n)ARQ,以及选择性重传(selective repeat)ARQ。

后两种协议是滑动窗口技术与请求重发技术的结合,由于窗口尺寸开到足够大时,帧在线路上可以连续地流动,因此又称其为连续ARQ协议。

三者的区别在于对于出错的数据报文的处理机制不同。

三种ARQ协议中,复杂性递增,效率也递增。

除了传统的ARQ,还有混合ARQ(Hybrid-ARQ)。

1.停等式ARQ在停等式ARQ中,数据报文发送完成之后,发送方等待接收方的状态报告,如果状态报告报文发送成功,发送后续的数据报文,否则重传该报文。

停等式ARQ,发送窗口和接收窗口大小均为1,发送方每发送一帧之后就必须停下来等待接收方的确认返回,仅当接收方确认正确接收后再继续发送下一帧。

该方法所需要的缓冲存储空间最小,缺点是信道效率很低。

2.回退n帧的ARQ在回退n帧的ARQ中,当发送方接收到接收方的状态报告指示报文出错后,发送方将重传过去的n个报文。

回退N,发送窗口大于1,接收窗口等于1。

ARQ协议

ARQ协议
当窗口右边沿向右移动时将允许发送更多的数据,称之为窗 口张开。这种现象发生在另一端的接收进程读取已经确认的数据 并释放了TCP的接收缓存时。
当右边沿向左移动时,称为窗口收缩.建议不要使用这种方式。 但TCP必须能够在某一端产生这种情况时进行处理。 如果左边沿到达右边沿,则称其为一个零窗口。 注意: (1)发送方不必发送一个全窗口大小的数据。 (2)来自接收方的一个报文段确认数据并把窗口向右边滑 动,这是因为窗口的大小事相对于确认序号的。 (3)窗口的大小可以减小,但是窗口的右边沿却不能够向 左移动。 (4)接收方在发送一个ACK前不必等待窗口被填满。
这种丢弃策略会引发tcp 全局同步现象—当队列同时丢弃多个 tcp 连接的报文时,将造成多个tcp 连接同时进入拥塞避免和慢启 动状态以降低并调整流量,而后又会在某个时间同时出现流量高 峰,如此反复,使网络流量忽大忽小,造成网络带宽利用率降低, 使带宽利用率总在高峰和低谷间振荡。 ②red 与wred 为避免tcp 全局同步现象,可使用red(random early detection, 随机早期检测)或wred(weighted random early detection,加权随 机早期检测)。 在red 类算法中,为每个队列都设定一对低限和高限值,并规 定: (1)当队列的长度小于低限时,不丢弃报文。 (2)当队列的长度超过高限时,丢弃所有到来的报文。
滑动窗口协议,是TCP使用的一种流量控制方法。该协议允 许发送方在停止并等待确认前可以连续发送多个分组。由于发送 方不必每发一个分组就停下来等待确认,因此该协议可以加速数 据的传输。 1,基本概念 只有在接收窗口向前滑动时(与此同时也发送了确认),发 送窗口才有可能向前滑动。 收发两端的窗口按照以上规律不断 地向前滑动,因此这种协议又称为滑动窗口协议。 当发送窗口和接收窗口的大小都等于 1时,就是停止等待协 议。 当发送窗口大于1,接收窗口等于1时,就是回退N步协议。 当发送窗口和接收窗口的大小均大于1时,就是选择重发协 议。 协议中规定,对于窗口内未经确认的分组需要重传。这种分 组的数量最多可以等于发送窗口的大小,即滑动窗口的大小n减 去1(因为发送窗口不可能大于(n-1),起码接收窗口要大于等 于1)。

计算机网络之ARQ协议

计算机网络之ARQ协议

计算机网络之ARQ协议ARQ协议,全称为Automatic Repeat Request(自动重传请求),是一种常用的计算机网络中用于可靠数据传输的协议。

它通过在发送端和接收端之间进行数据包的确认和重传,来确保数据的可靠传输。

ARQ协议是一种基于反馈机制的协议,它根据接收端对数据包的确认或否认进行相应的处理。

一般而言,ARQ协议分为停止-等待ARQ、连续ARQ(Go-Back-N ARQ和选择性重传ARQ)等不同类型。

1. 停止-等待ARQ停止-等待ARQ是一种最简单的ARQ协议。

发送端发送一个数据包后,会停止发送并等待接收端的确认。

接收端收到数据包后,会发送一个确认信息给发送端,表示该数据包已经成功接收。

如果发送端在一定时间内没有收到确认信息,就认为该数据包丢失,会进行重传。

停止-等待ARQ的特点是简单,但效率较低。

发送端必须等待确认信息才能发送下一个数据包,无法充分利用网络带宽。

2. 连续ARQ连续ARQ是相对于停止-等待ARQ而言的一种改进协议。

它允许发送端连续地发送多个数据包,而不需要等待每个数据包的确认。

2.1 Go-Back-N ARQGo-Back-N ARQ是一种基于滑动窗口的连续ARQ协议。

发送端维护一个发送窗口,其中包含了多个已发送但未收到确认的数据包。

接收端维护一个接收窗口,其中包含了多个按顺序到达的数据包。

发送端发送数据包后,不需要等待确认即可继续发送下一个数据包。

接收端在正确接收到数据包时,发送一个累积确认,表示已成功接收到所有数据包。

如果接收端检测到有数据包丢失或损坏,会要求发送端进行重传。

Go-Back-N ARQ的特点是简单有效,但可能会出现连续数据包被丢失而导致的重复传输。

2.2 选择性重传ARQ选择性重传ARQ是一种更加精细的连续ARQ协议。

发送端维护一个发送窗口,其中包含了多个已发送但未收到确认的数据包。

接收端维护一个接收窗口,其中包含了多个按顺序到达的数据包。

ARQ协议实验指导.

ARQ协议实验指导.
实现:
1.数据帧含有一位(偶校验位D7:接收端程序对数据帧进行检错,通过应答帧告诉
发送端接收是否正确(应答帧是指确认帧ACK或否认帧NAK;
2.ACK值=0FH(即二进制00001111, NAK值=0EH(即00001110;
3.发送端程序收到ACK,将发送下一个数据;
4.发送端程序收到NAK,将重发刚才发送的数据。
数据链路层实验-ARQ协议实验指导
一、实验系统说明
实验系统包括ARQ协议发送端程序(AQ_S*.exe,接收端程序(ARQ_R*.exe和信道仿真程序(xds.exe,发送端发送的数据经过信道仿真程序传输给接收端。信道仿真程序可以模拟实际传输过程中信道上数据帧或应答帧丢失、差错和传输时延等各种情况,从而验证ARQ协议发送端、接收端程序应对传输过程中各种问题的能力。
2.还存在什么问题?
ARQ协议4:引入确认帧携带发送序号0~1
实现;
1.每个确认帧ACK(D6位携带不同的发送序号Ns=0~1;
2.如果发送端收到的ACK中的Ns与刚才发送的数据帧中的Ns相同,则发送下一个
数据帧,否则重发刚才的数据帧。
问题:
1.ACK有必要携带Ns吗?它能解决什么问题?
2.还存在没有解决的问题吗?
问题:
1.如果发送端程序的超时时间设置较长或较短,会出现什么问题?如何选择超时时间
的长短?
2.还存在什么问题?
ARQ协议3:数据帧携带发送序号0~1,解决“重复帧”问题
实现:
1.每个数据帧(D6位携带不同的发送序号Ns=0~1;
2.如果接收端收到相同Ns的数据帧,则丢弃并回送一个ACK;
问题:
1.能彻底解决“重复帧”问题吗?
问题:
1.什么情况下发送端发出的数据可以可靠到达接收端?

第6周:数据链路层(ARQ,PPP)

第6周:数据链路层(ARQ,PPP)

10
10
10
数据中的Flag 位模式被转换 成“双字节模 式”
32
课堂练习
3-18 一个PPP帧的数据部分(用十六进制写出) 是7D 5E FE 27 7D 5D 7D 5D 65 7D 5E。试 问真正的数据是什么(用十六进制写出)? 3-19 PPP协议使用同步传输技术传送比特串 0110111111111100。试问经过零比特填充后 变成怎样的比特串?若接收端收到的PPP帧的 数据部分是0001110111110111110110,问删 除发送端加入的零比特后变成怎样的比特串?
实现透明传输
“数据透明” 要求:数据中必须可以包括帧中flag字段 的固定位模式:01111110(7EH) Q: 如何判断这个<01111110>到底是数据还是flag? A: PPP用在SONET/SDH链路时,使用同步传输,使用与 HDLC相同的零比特填充法
• 发送方:
–数据中的所有<01111110>字节 –发送数据段时发送连续5个1即插入一个0
23
1. PPP 协议应满足的需求
实现链路的动态管理, 自动恢复连接
载荷部分最大长度 1500Byte
为用户主机动态分配 IP地址
• • • • • • • • • •
简单——这是首要的要求 差错检测 封装成帧 透明性 多种网络层协议 多种类型链路 检测连接状态 最大传送单元 网络层地址协商 数据压缩协商
建立
协商选项
检测到 载波
认证
成功或 不需认 证
配置失败 或线路中 断
失败
静止
网络
载波 停止
终止
关闭链路
打开
NCP配 置
28
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

•任务
1.同学编写数据链路层通信协议,由《发送端程序》和《接收端程
序》实现,确保数据可靠传输;
2.总结实验过程(实验报告,左侧装订):方案、编程、调试、
结果、分析、结论。

•成绩评定
1. 若完全实现无差错传输(无丢失、无差错、不重叠、不乱序、...)且实验报告
出色,5分;
2. 若完成部分无差错传输,依据实验结果定成绩,3~4分;
3. 若没有完成基本的传输任务,依据实验结果定成绩,1~2分;
4. 没有进行实验和无实验报告者,0分;
•实验环境
1. Windows 9x/NT/2000/XP/2003
2. TCP/IP协议
•同学程序
1. 认真复习数据链路层内容,熟悉编程语言C、C++和WINDOWS程序设计技
术(查阅参考书);
2. 开发工具:Visual C++ 6.0、Visual Basic 6.0、C++ Builder、Java、C#、Turbo
C/C++或其它;
3. 程序示例:理想信道的《发送端程序》和《接收端程序》(含源码VC6.0);
1. ARQ基本协议1:_引入检错和应答帧
2. ARQ基本协议2:_引入超时计时器
3. ARQ基本协议3:_引入数据帧携带发送序号0~1
4. ARQ基本协议4:_引入确认帧携带发送序号0~1
5. ARQ基本协议5:_引入应答帧含有校验码
6. ARQ基本协议6:_引入数据帧和确认帧含有发送序号0~7,
Ws=1,Ws=1
7. 下载:ARQ基本协议1~6及数字信道仿真程序
4. 示例实验指导
•协议设计建议
-协议中不考虑成帧
1. 数据帧和应答帧以字节为单位;
2. 数据帧:低4位D3~D0为数据段(取值0000B~1001B,即0~9),最高
位为校验位(D7),发送序号段:D6~D4;
3. 应答帧:确认帧ACK:低4位D3~D0取值1111B(FH),否认帧NAK:低
4位D3~D0取值1110B(EH),发送序号段:D6~D4;
4. 按上述定义,发送序号个数最大为8;实际使用时,可自行选取发送序号个数
2或4,甚至不使用。

-协议中考虑成帧
1. 参见授课讲义和教材的相关内容;
2. 数据帧:帧头+发送序号+数据段+校验段+帧尾;
3. 应答帧:帧头+发送序号+校验段+帧尾;
-协议方案提示
1. 基本ARQ协议;否认帧不必携带出错数据帧的发送序号。

2. 连续ARQ协议-回退N帧ARQ协议;应采用滑动窗口技术和否认帧应携带
出错数据帧的发送序号。

3. 连续ARQ协议-选择重发ARQ协议;基本同上;
•信道仿真程序
1. 功能:可仿真信道上的信息(数据帧或应答帧)产生丢失、产生差错和传输时
延;
2. 下载:V1.21,解压后,直接运行!
1.界面:
•实验系统原理
1. 《发送端程序》、《信道仿真程序》和《接收端程序》采用UDP(TCP/IP)
通信;
2. 若单机实验:《发送端程序》、《信道仿真程序》和《接收端程序》的IP地
址设置为127.0.0.1(本机);
3. 《发送端程序》的端口=6666、《信道仿真程序》的端口=7777、《接收端程
序》的端口=8888;
4. 用户程序(《发送端程序》和《接收端程序》)的信息发送到信道(《信道仿
真程序》),《信道仿真程序》经过处理(产生丢失、产生差错和传输时延),
然后转发到对方。

•参考程序段
1.设置(偶)校验位
//---------------------------------------------------
void SetCheck(char& c) //设置(偶)校验位D7 (一个字节)
{
int i,sum = 0;
BYTE x = 0x01;
for(i=0; i<7; i++) //求D6~D0位的有1的个数->sum
{
if(c & x) sum++;
x = x << 1;
}
if(sum % 2) c = c|0x80; //若sum为奇数,则置D7=1
else c = c & 0x7F; //若sum为偶数,则置D7=0
}。

相关文档
最新文档