TCP连续ARQ协议和滑动窗口协议

运输层----ARQ 协议 ---- 连续 ARQ 协议 连续 ARQ 协议 ARQ:自动重传请求,(Automatic Repeat reQuest) 阅读详情

博客转载自:http://blog.youkuaiyun.com/guoweimelon/article/details/50879588

TCP协议通过使用连续ARQ协议和滑动窗口协议,来保证数据传输的正确性,从而提供可靠的传输。


一、ARQ协议


ARQ协议,即自动重传请求(Automatic Repeat-reQuest),是OSI模型中数据链路层和传输层的错误纠正协议之一。它通过使用确认和超时这两个机制,在不可靠服务的基础上实现可靠的信息传输。如果发送方在发送后一段时间之内没有收到确认帧,它通常会重新发送。ARQ包括停止等待ARQ协议和连续ARQ协议,拥有错误检测(Error Detection)、正面确认(Positive Acknowledgment)、超时重传(Retransmission after Timeout)和 负面确认及重传(Negative Acknowledgment and Retransmission)等机制。


(1)停止等待ARQ协议


要想弄明白为什么TCP要使用连续ARQ协议,首先需要弄清楚停止等待ARQ协议的原理。


TCP 连接是全双工的连接,也就是说在通信的时候,双方既是发送方,也是接收方。下面为了简化问题,只考虑一方发送,一方接受的情况。其中,A作为发送方,B作为接收方。


1.无差错情况

A发送分组M1,发送完就暂停发送,等待B的确认。B收到M1就向A发送确认。A在收到了对M1的确认后,就再发送下一个分组M2。依次下去发送剩余的数据...如下图所示:

2.出现差错

如果A发送的过程中出现差错,B在接收M1时检测出了差错,就丢弃M1,其他什么都不做(也不会通知A收到有差错的分组)。又或者A传送的过程中分组丢失了,以上这两种情况下,B不会发送任何信息。 

既然说它是可靠传输协议,那自然有它可靠的方法:如果发生以上的情况,A只要超过了一段时间仍然没有收到确认,就认为刚才发送的分组丢失了,所以它会重传刚刚的发送过的分组,也就是所谓的超时重传。 

超时重传的原理也很简单:发送方发送完一个分组后,就会设置一个超时计时器,如果超时计时器到期之前没有收到接收方发来的确认信息,则会重发刚发送过的分组;如果收到确认信息,则撤销该超时计时器。如下图所示:


这里应该注意的是:

①既然发送方发送的分组可能丢失或者有差错,可能需要重传,那么它必须暂时保留已发送的分组副本,只有收到确认后,才清除这个副本。

②分组和确认分组信息都应该有各自的编号,用来标示每一个分组和确认信息。(这样才知道需要发送哪个分组,收到了哪个分组的确认信息)

③超时计时器设置的时间应该略长于分组传送往返时间。


3.确认丢失和确认延迟 

没有正常进行通信,除了发送方出现问题外,接收方同时也可能存在问题。

例如,如果A发送了M1分组,到达B,B发送了M1确认信息,但由于网络原因,该确认信息丢失。那么这个时候,A在超时重传时间内,没有收到B的确认信息,而且它并不知道是自己的分组有差错、丢失,还是B发生的确认丢失了。因此,A会在超时重传过后,重传M1分组。 

接收方B会采取这两个行动: 

①B会丢弃M1分组,不向上层交付。(B之前已经收到过M1分组了) 

②向A发送确认(因为A重发了,肯定重传时间内没有收到确认信息)

还有可能是另一种情况,就是B发送了确认,没有丢失,但是延迟了。也就是说,B发送的确认在A超时计时器过期后才到达。 这种情况下,A收到确认信息后会丢弃,然后重传刚才的分组,B收到后,丢弃重复的分组,并重传确认信息。



根据上述的确认和重传机制,我们就可以在不可靠的网络上实现可靠的传输。


4.信道利用率

停止等待ARQ协议的优点是简答,但也有很严重的确定,就是信道利用率太低。如下图所示:


信道利用率U = TD / (TD + RTT + TA)



(2)连续ARQ协议

由于停止等待ARQ协议信道利用率太低,所以需要使用连续ARQ协议来进行改善。这个协议会连续发送一组数据包,然后再等待这些数据包的ACK。


发送方采用流水线传输。流水线传输就是发送方可以连续发送多个分组,不必每发完一个分组就停下来等待对方确认。如下图所示:



连续ARQ协议通常是结合滑动窗口协议来使用的,发送方需要维持一个发送窗口,如下图所示:

图(a)是发送方维持的发送窗口,它的意义是:位于发送窗口内的5个分组都可以连续发送出去,而不需要等待对方的确认,这样就提高了信道利用率。 

连续ARQ协议规定,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。例如上面的图(b),当发送方收到第一个分组的确认,就把发送窗口向前移动一个分组的位置。如果原来已经发送了前5个分组,则现在可以发送窗口内的第6个分组。 

接收方一般都是采用累积确认的方式。也就是说接收方不必对收到的分组逐个发送确认。而是在收到几个分组后,对按序到达的最后一个分组发送确认。如果收到了这个分组确认信息,则表示到这个分组为止的所有分组都已经正确接收到了。 

累积确认的优点是容易实现,即使确认丢失也不必重传。但缺点是,不能正确的向发送方反映出接收方已经正确收到的所以分组的信息。比如发送方发送了前5个分组,而中间的第3个分组丢失了,这时候接收方只能对前2个发出确认。而不知道后面3个分组的下落,因此只能把后面的3个分组都重传一次,这种机制叫Go-back-N(回退N),表示需要再退回来重传已发送过的N个分组。


二、滑动窗口协议

滑动窗口协议在在发送方和接收方之间各自维持一个滑动窗口,发送发是发送窗口,接收方是接收窗口,而且这个窗口是随着时间变化可以向前滑动的。它允许发送方发送多个分组而不需等待确认。TCP的滑动窗口是以字节为单位的。


如下图所示,发送窗口中有四个概念::已发送并收到确认的数据(不在发送窗口和发送缓冲区之内)、已发送但未收到确认的数据(位于发送窗口之内)、允许发送但尚未发送的数据(位于发送窗口之内)、发送窗口之外的缓冲区内暂时不允许发送的数据。

接收窗口中也有四个概念:已发送确认并交付主机的数据(不在接收窗口和接收缓冲区之内)、未按序收到的数据(位于接收窗口之内)、允许的数据(位于接收窗口之内)、不允许接收的数据(位于发送窗口之内)。


规则:

(1)凡是已经发送过的数据,在未收到确认之前,都必须暂时保留,以便在超时重传时使用。

(2)只有当发送方A收到了接收方的确认报文段时,发送方窗口才可以向前滑动几个序号。

(3)当发送方A发送的数据经过一段时间没有收到确认(由超时计时器控制),就要使用回退N步协议,回到最后接收到确认号的地方,重新发送这部分数据。


此外,TCP利用滑动窗口协议来进行流量控制,如下图所示:



参考资料:

1、ARQ-维基百科 https://zh.wikipedia.org/wiki/ARQ

2、TCP/IP(三) —— 可靠传输工作原理 http://pmghong.blog.51cto.com/3221425/1242470

3、TCP可靠传输&流量控制&拥塞控制  http://my.oschina.net/manmao/blog/601585

4、计算机网络【七】:可靠传输的实现 http://blog.chinaunix.net/uid-26275986-id-4109679.html

5、TCP/IP之TCP协议(3):流量控制(滑动窗口协议)http://blog.youkuaiyun.com/wbw1985/article/details/4879224

数据链路层ARQ协议 1.主机甲采用停止-等待协议向主机乙发送数据,数据传输率是3kb/s,单向传播时延是200ms,忽略确认帧的传输时延,当信道利用率等于40%时,数据帧的长度为(800bit)停止等待协议:源站发送单帧之后必须等待确认,在收到确认之前不能发送其它的数据帧。解题:先画出数据的传输步骤。 阅读详情

相关推荐

TCP协议总结--停止等待协议,连续ARQ协议,滑动窗口协议

前言:在学习tcp三次握手的过程之中,由于一直无法解释tcpdump命令抓的包中seq和ack的含义,就将tcp协议往深入的了解了一下,了解到了几个协议,做一个小结. 一:停止等待协议 停止等待协议是tcp保证传输可靠的重要途径,”停止等待”就是指发送完一个分组就停止发送,等待对方的确认,只有对方确认过,才发送下一个分组. 1:无差错情况:发送方发送分组,接收方在规定时间内收到,并且回复确认.发送...

qq_43597136的博客 2780

ARQ协议与滑动窗口协议

目录ARQ协议与滑动窗口协议一.ARQ协议1.停等ARQ协议(1)工作原理(2)效率分析2.退回N帧ARQ协议(1)滑动窗口协议(2)工作原理3.选择ARQ协议 ARQ协议与滑动窗口协议 一.ARQ协议 (Automatic Repeat-reQuest,ARQ)自动重传请求. 是一种传输层和数据链路层都在使用的网络协议。传统自动重传请求分成为三种,即停等式(stop-and-wait)ARQ,回退n帧(go-back-n)ARQ,以及选择性重传(selective repeat)ARQ。后两种协议是滑动

weixin_45863060的博客 6776

TCP——停等ARQ&连续ARQ

一、停止等待协议 概念:“停止等待”就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。 1、无差错情 可以看到在a中是正确的传输。 2、出现差错   而在b中的时候,因为M1有错,所以B直接丢弃掉了,然后发送方因为一直没有接收到确认,所以它等待一定的时间后,它就会认为发送超时了,进行超时重传。我们可以看到当A收到B对于M1的确认后,才继续发送M2。 3

Betty2017的博客 2670

简单易懂的TCP连续ARQ协议和滑动窗口协议

TCP连续ARQ协议和滑动窗口协议

薛小科的博客 1889

台达伺服B3驱动器参数的设定和CN1的接法

3. B2的电子齿轮比是直接设定P1-44(分子)和P1-45(分母)就就可以的,但是B3的有个隐藏的细节,就是P1-44的默认值77216不用去更改,这是官方客服说的,需要改的是P1-45这个参数,比如说,我使用的丝杆螺距是5mm的,那么就是以5000脉冲走完5mm为一圈,则就把P1-45设定为5000即可;我的是三菱FX3S系列的PLC,是NPN型的,输出点是24V-作为信号的,所以接41、37,具体可参考B3的。,跟着客服的讲解操作才解决的,以下就是解决方法,希望能够帮到需要的各位。

qq_38681017的博客 1万+

在Qt中使用EtherCAT-SOEM的初始化中,状态机卡在PreOp->Save-Op过程中,出现State=0x12, Error=0x001e错误的解决办法

1.在调试EtherCAT软件过程中,一直出现配置从站进不了Save_op状态,通过下函数检查从站状态: //使用的从站编号为1 只有1个从站 ec_slave[1].state = EC_STATE_SAFE_OP; ec_writestate(1); //设置到安全模式 ec_statecheck(1, EC_STATE_SAFE_OP, EC_TIMEOUTSTATE * 4); printf("Slave %d State=0x%2.2x StatusCode=0x%4

zeal_for_rov的博客 6828

一文弄懂ARQ协议与Nagle算法

本文参考文献: 1、ARQ-维基百科https://zh.wikipedia.org/wiki/ARQ 2、TCP/IP(三) —— 可靠传输工作原理http://pmghong.blog.51cto.com/3221425/1242470 3、TCP可靠传输&流量控制&拥塞控制 http://my.oschina.net/manmao/blog/601585 4、计算机网络【七】:可靠传输的实现http://blog.chinaunix.net/uid-26275986-...

Jiangtagong的博客 2667

手把手教你构建轻量级CLIP模型:从理论到实践

本文手把手教你从零构建一个轻量级CLIP模型,深入解析其核心原理——对比学习,并提供完整的代码实践。通过精简的模型架构、数据准备和训练循环实现,帮助读者彻底理解多模态模型如何让图像与文本在共享空间中对齐,为学习更复杂的AI模型打下坚实基础。

weixin_29100927的博客 325

关于ARQ与滑动窗口

TCP协议通过使用连续ARQ协议和滑动窗口协议,来保证数据传输的正确性,从而提供可靠的传输。 一、ARQ协议 ARQ协议,即自动重传请求(Automatic Repeat-reQuest),是OSI模型中数据链路层和传输层的错误纠正协议之一。它通过使用确认和超时这两个机制,在不可靠服务的基...

388

Xilinx FPGA平台GTX简易使用教程(五)GTX收发测试及示例工程介绍

GTX IP配置完了,你不得搞个回环测试一番?

数字IC/FPGA杂货铺,找一找,或许有你想要的~ 1万+

【ARMv8 异常模型入门及渐进7 - GIC及安全中断介绍】

GIC-v3中,引入了支持2种安全状态(secure state),也就是对于中断,根据secure状态,分为安全中断和非安全中断。当然也可以只支持一种安全状态。这里的2种安全状态和1种安全状态,主要是影响中断分组,所使用IRQ和FIQ管脚的映射,以及gic中的寄存器访问。

CodingCos的博客 2116

详解 TCP 和 UDP 协议

TCP、UDP 协议的区别 TCP 提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。 TCP 不提供广播或多播服务。由于 TCP 要提供可靠的,面向连接的传输服务(TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源),这一难以避免的增加了许多开销,如确认,流量控制,计时器以及连接管理等。这不仅使协议数据单元的首部增大很多,还要占用许多处理机资源。TCP 一般用于文件传输、

TanaStudy的博客 2674

灰色预测GM(1,n)模型_python

灰色系统理论及其应用系列博文: 一、灰色关联度分析法(GRA)_python 二、灰色预测模型GM(1,1) 文章目录一、GM(1,n)算法二、示例2.1 数据:2.2 代码_使用GM(1,n)城市用水总量2.3 结果分析 一、GM(1,n)算法 二、示例 注:数据均来自论文《基于灰色系统理论的贵阳市城市用水总量预测》 2.1 数据: data.csv 年份,城区人口,建成区面积,供水总量,用水人口,人口综合用水指标,城市用水总量 2002, 191.85, 98.00, 26396.00,

qq_34229228的博客 1万+

42、可靠传输——连续ARQ

上回内容我们学习到,一种保证可靠传输的机制——ARQ协议,ARQ协议通过设置超时定时器,当在规定时间内没有收到来自对方发来的“确认”报文,就自动报文重传。这其中,ARQ协议和停止等待机制的结合,我们把它称作“停等ARQ”,发送完一个报文之后必须等待对方的确认才能继续发送下一个报文。由此可见,停等ARQ虽然可以一定程度上保证可靠传输,而且实现起来比较简单,但是由于其“停止等待”的特点,导致使用这种机制的通信,信道利用率太低。

杨宏超的博客 1243

图神经网络实战——总结 | 图神经网络展望

短短数年时间,图神经网络 (Graph Neural Networks, GNN) 已经成为一种重要的深度学习架构,并且已经广泛应用于各个行业。通过本专栏的学习,能够对图学习和 GNN 领域有一个全面的了解,并能为各种应用设计、构建GNN模型。

盼小辉丶的博客 8550

YOLOv8性能突破:DySample超轻量动态上采样算子的创新应用与实现【附保姆级代码】

YOLOv8(You Only Look Once Version 8)作为YOLO系列模型的最新版本,延续了高效、准确的目标检测优势。其基础结构包含了骨干网络(Backbone)、检测头(Head)、以及特征融合层(Neck)。在特征融合阶段,YOLOv8需要对不同尺度的特征图进行上采样,以便将低分辨率的特征与高分辨率的特征进行融合。传统的上采样操作多使用插值(如双线性插值)或固定卷积,而这些方法可能无法很好地适应复杂的上下文信息。

一键难忘的博客 3120

【计算机网络 (谢希仁) 习题题解】第5章 运输层 (2)——连续ARQ协议;TCP报文段

计算机网络 (谢希仁) 第7版 习题题解 第5章 运输层 停止等待协议;连续 ARQ 协议;TCP 数据报

HPP_优快云的博客 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

TCP可靠传输原理

一 可靠传输原理:由于IP层只提供尽最大努力的服务,即TCP下面是不可靠的传输,所以TCP必须采取措施使通信变为可靠的。使用下述的确认和重传机制,我们就可以在不可靠的运输网络上实现可靠的通信。下述这种可靠运输协议常称为自动重传请求ARQ(Automatic Repeat reQuest):意思是重传的请求时自动进行的,接收方不用告诉发送方重传那个出错分组。常用的自动重传请求协议包括:停止-等待AR...

Allen_Walker_QAQ的博客 948

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

计算机网络 TCP------滑动窗口协议与ARQ协议

滑动窗口协议 滑动窗口协议(Sliding Window Protocol),属于TCP协议的一种应用,用于网络数据传输时的流量控制,以避免拥塞的发生。该协议允许发送方在停止并等待确认前发送多个数据分组。由于发送方不必每发一个分组就停下来等待确认,因此该协议可以加速数据的传输,提高网络吞吐量。 滑动窗口协议规定发送方和接收方都会维护一个窗口,在任何时刻其发送窗口内的数据都可以分为以下 4 类:...

八面玲珑 6094

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

滑动窗口及连续ARQ协议

一、以字节为单位的滑动窗口 假定从A收到B发来的确认报文段,窗口大小是20(字节),确认号是31(表名B期望收到的下一序号是31,而序号30为止的数据已经收到了)。根据这两个数据,A就构造出自己的发送窗口,位置如下: A的发送窗口表示:在没有收到B的确认的情况下,A可以连续吧窗口内的数据都发送出去。凡是已经发送过得数据,在...

ntjj_mint的博客 2057
上一篇: java并发编程之 CopyOnWriteArrayList
下一篇: 拥塞控制和流量控制区别分析
CallMeJiaGu
博客等级 码龄12年 149粉丝 99原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值