HARQ(Hybrid Automatic Repeat Request ) 混合自动重传请求

数据通信最初是在有线网上发展起来的,通常要求较大的带宽和较高的传输质量。对于有线连接,数据传输的可靠性是通过重传来实现的。当前一次尝试传输失败时,就要求重传数据分组,这样的传输机制就称之为ARQ(自动请求重传)。在无线传输环境下,信道噪声和由于移动性带来的衰落以及其他用户带来的干扰使得信道传输质量很差,所以应该对数据分组加以保护来抑制各种干扰。这种保护主要是采用前向纠错编码(FEC),在分组中传输额外的比特。然而,过多的前向纠错编码会使传输效率变低。因此,一种混合方案HARQ,即ARQ和FEC相结合的方案被提出了。

http://baike.baidu.com/view/882727.htm

HSDPA技术中主要是采用三种递增冗余的HARQ机制:TYPE-I HARQ,TYPE-II HARQ和TYPE-III HARQ。
TYPE-I HARQ 又叫传统ARQ,是最基本的功能。传统ARQ使用了CRC(循环冗余校验)并用FEC进 行编码。接收机一旦发现data package在接收时不能正确解码(decode),即行丢弃,并在上行信道(uplinking channel)中要求重传。发送端收到重传请求后,重新发送encoded data package。由于反馈速度较慢,效率不高,会影响QoS。
TYPE II HARQ是增加冗余(IR) 的ARQ机制,接收错误的数据包不会被丢弃,而重传资料通常与第一次传输不一样,前后两种data package会进行并整,形成纠错能力更强的前向纠错码。IR可再分两类:部分IR(H-ARQ-type-lll)、全IR(H-ARQ-type- 11),其中全IR每次传输不能自译码。
Type-Ⅲ HARQ 又叫部分冗余HARQ,结合了Type-I HARQ 和Type-Ⅱ HARQ 的优点,同Type-II接收错误的数据包不会被丢弃。每次重传都可自译码,无须再合并以前的传输资料。

实现机制

HARQ的可行性部分受限于发送端和接收端对分组的缓冲能力,因此选择合适的HARQ协议很重要。三种标准的HARQ协议为停等协议(Stop- and-Wait,SAW)、回退N步协议(Go-Back-N,GBN)和选择性重传协议(Selective-Repeat,SR)。
(1)停等协议
发送端每发送一个数据分组包就暂时停下来,等待接收端的确认信息。当数据包到达接收端时,对其进行检错,若接收正确,返回确认(ACK)信号,错误则返回不确认(NACK)信号。当发端收到ACK信号,就发送新的数据,否则重新发送上次传输的数据包。而在等待确认信息期间,信道是空闲的,不发送任何数据。这种方法由于收发双方在同一时间内仅对同一个数据包进行操作,因此实现起来比较简单,相应的信令开销小,收端的缓存容量要求低。但是由于在等待确认信号的过程中不发送数据,导致太多资源被浪费,尤其是当信道传输时延很大时。因此,停等协议造成通信信道的利用率不高,系统的吞吐量较低。
(2)后退N步协议
在采用后退N步HARQ协议的传输系统中,发送端发送完一个数据分组后,并不停下来等待确认信息,而是连续发送若干个数据分组信息。接收端将每个数据包相应的ACK或 NACK信息反馈回发送端,同时发送回的还有数据包分组号。当接收到一个NACK信号时,发送端就重新发送包括错误数据的N个数据包。接收端只需按序接收数据包,在接收到错误数据包后即使又接收到正确的数据包后还是必须将正确的数据包丢弃,并重新发送确认信息。
(3)选择重发协议
基于窗口的SR是一种被许多系统采用的HARQ协议,包括RLCR99(也称R3版本,是3GPP目前最成熟、最稳定的版本)。为了进一步提高信道的利用率,选择重发协议只重传出现差错的数据包,但是此时收端不再按序接收数据分组信息,那么在收端则需要相当容量的缓存空间来存储已经成功译码但还没能按序输出的分组。同时收端在组合数据包前必须知道序列号,因此,序列号要和数据分别编码,而且序列号需要更可靠的编码以克服任何时候出现在数据里的错误,这样就增加了对信令的要求。

时间: 2024-11-10 13:10:14

HARQ(Hybrid Automatic Repeat Request ) 混合自动重传请求的相关文章

[原创]java WEB学习笔记15:域对象的属性操作(pageContext,request,session,application) 及 请求的重定向和转发

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------

Android或者Java发送Http自动重发请求的解决方案

今天遇到奇葩问题,描述如下: 客户端向服务端发起了一次(从日志中可以看出仅仅打印了一次日志),但是确在后端出现了重复的几次请求数据在后端.这个问题很不容易出现,而且用中文搜索不到相应的结果: 今天在国外的网站中找到了问题的解决方案: 原因如下:由于设置了链接与获取数据的超时时间,客户端在发送数据之后,检测到可能并没有发送成功到后端,这个时候http底层会自动重发请求(注意是Http底层,所以应用端不会知道发送了多次请求).如果应用端自动重发了多次请求,后端也回复了多次请求,但是前段仅仅会只回复1

爬虫 自动生成请求头教程

前情提要: 请求头是伪装操作者的一种方式.由于请求头的内容很多; 找了到了一个很厉害的自动生成请求头的方式 这个网站 https://curl.trillworks.com/ 自动获取,自动生成 真香 原文地址:https://www.cnblogs.com/baili-luoyun/p/10428617.html

IMS Modify Call (2) receive request 收到视频升级请求

主要内容为MT收到视频升级的请求的过程,也是MT消息上传的过程. 流程图 可以看到信息上报跨了4个模块,没有经过service/Telecom 看关键log方便跟踪 06-19 19:05:41.437 3329-4362/com.android.phone V/ImsSenderRxr: Read packet: 24 bytes 06-19 19:05:41.437 3329-4362/com.android.phone V/ImsSenderRxr: processResponse[SUB

IMS Modify Call (1) send request 发出升级视频请求

upgrade/downgrade 升降级,其实就是ModifyCall 整体示意 图中有两种情况,一种是MT对收到的升级请求做出响应,一种是超时后服务器给双发发送消息. 一个完整的Modify call(upgrade)可以分为4个部分,本文主要讲第一部分发出升级请求. 流程图 界面入手 packages/apps/InCallUI packages/apps/InCallUI/src/com/android/incallui/CallButtonFragment.java CallButto

Servlet里面request处理外部POST请求的输入流的工具类

package etcom.servlet; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import javax.servlet.http.HttpServletRequest; public class IoToJsonUtils { public static String getIoToJso

HttpServletRequest、request常用方法、request常见应用、请求转发、RequestDispatcher

HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户这些信息. request常用方法 获得客户机信息 getRequestURL方法返回客户端发出请求时的完整URL. getRequestURI方法返回请求行中的资源名部分. getQueryString 方法返回请求行中的参数部分. getRemoteAddr方法返回发出请求的客户机的IP地址 getRemoteH

解决为什么已经设置了request.setCharacterEncoding("utf-8");POST请求仍然乱码的问题

request.setCharacterEncoding("utf-8");应该在获取请求参数之前设置 在 http://bbs.csdn.net/topics/380124606 和 http://bbs.csdn.net/topics/370125113 找到的答案 由于POST传来数据,Tomcat默认以ISO-8859-1编码成单字节数据,若没有进行请求编码设置或重新编码操作,那么中文字符会在jsp页面中输出???,出现类似多个?形式的乱码现象. 测试发现,尽管jsp页面con

Fiddler如何自动修改请求和响应包

Charles的Map功能可以将某个请求进行重定向,用重定向的内容响应请求的内容.这个功能非常方便.在抓包过程当中,有时候为了调试方便,需要将线上的服务定位到内网.比如我们线上的服务器域名为 api.example.com,而内网的用于调试的服务器域名为 test.neiwang.com,那么就需要将所有域名 api.example.com替换为 test.neiwang.com,就可以使用charles的这个功能,但是charles是收费软件,使用破解版又可能不安全,所以我们需要用一款免费抓包