自动重传请求(Automatic Repeat-reQuest,ARQ)是OSI模型数据链路层传输层的错误纠正协议之一。它通过使用确认和超时这两个机制,在不可靠服务的基础上实现可靠的信息传输。如果发送方在发送后一段时间之内没有收到确认帧,它通常会重新发送。ARQ可能包括停止等待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的更多相关文章

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

    前言:在学习tcp三次握手的过程之中,由于一直无法解释tcpdump命令抓的包中seq和ack的含义,就将tcp协议往深入的了解了一下,了解到了几个协议,做一个小结. 先来看看我的问题: 这是用tcp ...

  2. 基于选择重传ARQ传输协议的数据重传机制方案设计

    原文链接: http://blog.csdn.net/pinghegood/article/details/7841281  1.背景 最近在项目中,由于使用TD网络传输数据,数据掉包严重,软件组老大 ...

  3. socket模拟通信实现ARQ停止等待协议

    //服务端 import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; im ...

  4. 三十天学不会TCP,UDP/IP网络编程 -- TCP中的智慧之连续ARQ

    突然发现上一篇文章贴图有问题,关键我怎么调也调不好,为了表达歉意,我再贴一篇gitbook上的吧,虽然违背了我自己的隔一篇在这里发一次的潜规则~其余完整版可以去gitbook(https://www. ...

  5. TCP的可靠传输(依赖流量控制、拥塞控制、连续ARQ)

    TCP可靠性表现在它向应用层提供的数据是无差错,有序,无丢失,即递交的和发送的数据是一样的. 可靠性依赖于流量控制.拥塞控制.连续ARQ等技术 <TCP/IP详解>中的“分组”是不是就是报 ...

  6. SPARQL入门(二)使用Java操作ARQ

      在文章SPARQL入门(一)SPARQL简介与简单使用中,我们了解了RDF.SPARQL以及基于Java编写的SPARQL处理器ARQ.在本文中,笔者将会如何使用Java来操作ARQ.   注意到 ...

  7. Python中的异步任务队列 arq

    引言 最近在用 sanic 写东西,所有涉及到IO阻塞的代码都需要用 aio 的模块,好在近年来 asyncio 生态圈发展的还算不错,该有的都有 ~ 近期业务中 登录/注册 业务涉及的很复杂(涉及到 ...

  8. KCP - A Fast and Reliable ARQ Protocol

    KCP - A Fast and Reliable ARQ Protocol README in English 简介 KCP是一个快速可靠协议,能以比 TCP浪费10%-20%的带宽的代价,换取平均 ...

  9. UDP 两种丢包处理策略:丢包重传(ARQ) 和 前向纠错(FEC)

    目录 1. 两种丢包处理策略 2. 前向纠错(FEC) 3. 丢包重传(ARQ) [参考文献] 1. 两种丢包处理策略 为了保证实时性,通常适应UDP协议来针对RTP数据进行传输,而UDP无法保证数据 ...

随机推荐

  1. Windows10安装Linux子系统

    在win10上面可以直接在powershell里面安装Linux,具体步骤如下: 首先我们要打开Windows功能 在这里把勾打上 然后打开设置>>更新和安全>>针对开发人员, ...

  2. 安全的 ActiveMQ

    本章知识点 ActiveMQ 鉴权 ActiveMQ 授权 怎么创建一个自定义安全插件 使用基于证书的安全保证 简介 安全地访问消息代理以及它的 destinations 是公众关注的焦点.因此,Ac ...

  3. MySQL复制:主从和双主配置

    对比Replication和Cluster 应用层中间件的负载均衡 异步的复制过程 MySQL官方使用Replication场景

  4. VS2010 + QT 5 +open inventor 环境配置

    本科毕业设计做的是   随钻测量的井眼轨迹和测井曲线的三维显示  要求的环境是  QT +  Open Inventor    在寒假开学前,打算将环境配置好,开学后再正式编码实现,可是....环境也 ...

  5. windows live writer 设置默认字体

      下载 Text Template 插件 设置默认字体添加模版. <p style="padding-bottom: 0px; line-height: 130%; margin-t ...

  6. 51nod 1272 思维/线段树

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1272 1272 最大距离 题目来源: Codility 基准时间限制:1 ...

  7. TCP/IP详解学习笔记(2)-数据链路层【转】

    转自:http://blog.csdn.net/goodboy1881/article/details/665061 数据链路层有三个目的: 为IP模块发送和 接收IP数据报. 为ARP模块发送ARP ...

  8. [转载] Java开发在线编辑Word同时实现全文检索

    一.背景介绍 Word文档与日常办公密不可分,在实际应用中,当某一文档服务器中有很多Word文档,假如有成千上万个文档时,用户查找打开包含某些指定关键字的文档就变得很困难,一般情况下能想到的解决方案是 ...

  9. js杨辉三角

    function Tree() { this.lines = [ [] ] } var pp = Tree.prototype pp.genNode = function(line, i) { , , ...

  10. toggle input radio

    $(function(){ $('input[name="rad"]').click(function(){ var $radio = $(this); // if this wa ...