一种被动重发的可靠传输方法

文档序号:1834489 发布日期:2021-11-12 浏览:3次 >En<

阅读说明:本技术 一种被动重发的可靠传输方法 (Reliable transmission method for passive retransmission ) 是由 陈磊 于 2021-10-13 设计创作,主要内容包括:本发明公开了一种被动重发的可靠传输方法,发送方向接收方发出本次数据传输的数据量;接收方收到数据量后,根据自己能提供的缓冲区大小和发送方拟发送数据大小对比,开辟缓冲区;接收方向发送方发出请求消息,请求发送方发送数据,请求消息包含拟接收数据的起止序号;如果发送方在规定时间内没有收到接收方的请求消息,则发送方再次发送本次拟传输的数据量;发送方在收到接收方的发送请求之后,根据请求发送数据包;接收方在预定时间内如果没有收到请求的全部数据包,则发送新的请求消息,针对未收到的数据再次请求;发送方收到请求后,重发接收方所请求的丢失数据;直到收到全部数据后,接收方立刻将收到全部数据直接提交给应用程序进行处理。(The invention discloses a reliable transmission method of passive retransmission.A sender sends the data volume of the data transmission to a receiver; after receiving the data volume, the receiver opens up a buffer area according to the comparison between the size of the buffer area which can be provided by the receiver and the size of the data to be sent by the sender; the receiving side sends a request message to the sending side to request the sending side to send data, wherein the request message comprises a start-stop sequence number of the data to be received; if the sender does not receive the request message of the receiver within the specified time, the sender sends the data volume to be transmitted again; after receiving a sending request of a receiver, a sender sends a data packet according to the request; if the receiver does not receive all the requested data packets within the preset time, the receiver sends a new request message and requests for the data which is not received again; after receiving the request, the sender retransmits the lost data requested by the receiver; and immediately submitting all the received data to an application program for processing by the receiver after all the data are received.)

一种被动重发的可靠传输方法

技术领域

本发明涉及计算机网络通信领域,特别是涉及一种被动重发的可靠传输方法。

背景技术

计算机网络中,数据发送方发出的数据包有时会在传输过程中丢失。为了保障传输的可靠性,网络传输层使用了确认机制和超时重发机制。传统的作法是,接收方在收到数据包后,向发送方发出一个确认消息,表示已收到数据。发送方在规定时间内,如果没有收到接收方发出的确认数据包,则认为数据包在传输过程中丢失,将重发数据包。

在开始数据传输之前,接收方需要告知发送方,用来接收数据的缓冲区大小,防止发送方发送数据过快来不及处理。在缓冲区装满或者传输结束之后,接收方会把数据交给上层应用程序处理。

如申请号CN201711466513.1 公开的一种数据传输方法,包括:数据发送端发送带有编号的数据包,数据接收端接收数据包并向数据发送端反馈接收到的全部数据包编号,数据发送端将已经发送的数据包编号与数据接收端反馈的数据包编号对比,得出丢包的数据包编号,并重发。该发明通过数据发送端将数据按某一字节数分成数据包并编号,再按数据包的编号顺序将数据包发送给数据接收端,数据接收端将接收到的数据包编号反馈给数据发送端,数据发送端根据数据接收端反馈的数据包编号来判断丢包情况以及对丢包的数据重发,而不用依赖多个DACK的累计确认或ACK超时定时器来触发数据重发。

上述现有技术,数据是否需要重新发送,由发送方根据接收方的反馈做出判断,因此是一种主动重传策略,并且存在以下几点缺点:

1、重复发送已经发送成功的数据包,浪费通信资源,导致链路拥塞。

接收方向发送方的链路也可能出现信道资源紧张,从而造成确认数据包在发送过程中丢失。在发送方发送的数据包已经到达接收方的情况下,接收方发出的确认数据包丢失,发送方在没有收到确认的情况下重复发送已经发送成功的数据包。重复发送的数据包逐渐增多,会造成信道拥塞,拥塞的信道反过来造成更多的丢包和重发,进而耗尽信道资源。

2、接收方不知道发送方本次需要发送的数据量大小,在接收完全部数据之后不会立刻上交到应用程序进行处理,而是等待发送方通知发送完成后才能提交给应用程序处理。有时,发送方的发送完成通知不是跟随最后一批数据一起到达的,从而造成接收方等待时间增大。

3、接收方在初始阶段不知道发送方拟发送的数据量,而无法合理规划自己的接收缓冲区。缓冲区过大造成浪费,并挤占其它进程的资源;缓冲区过小则增加传输时延。

发明内容

针对上述问题,本方案提出了一种被动重发的可靠传输方法;解决了现有技术中现有主动重发技术存在浪费信道资源、传输时延较大、缓冲区规划不合理等缺陷的问题;传统的主动重发方法,既发送方根据接收方反馈的确认信息,判断传输过程中丢失的数据包,并主动进行重新发送。

本方案是这样进行实现的:

一种被动重发的可靠传输方法其具体包括以下步骤:

步骤一:数据发送方向数据接收方发出本次数据传输的数据量和初始数据序号,并设置预定时间;

步骤二:接收方收到信息后,根据自己能提供的缓冲区大小和发送方拟发送数据大小对比,开辟缓冲区,并设置预定时间;

步骤三:接收方向发送方发出请求数据包,请求发送方发送数据,请求消息包含拟接收数据的起止序号;如果发送方在规定时间内没有收到接收方的请求,则发送方重新发送步骤一的信息;

步骤四:发送方在收到接收方的发送请求之后,根据请求发送数据包;

步骤五:接收方在预定时间内如果没有收到请求的全部数据包,则发送新的请求数据包,针对未收到的数据再次请求;

步骤六:发送方收到请求后,重发步骤五中接收方所请求的丢失数据包;

步骤七:接收方收到全部数据后直接提交给应用程序进行处理。

在步骤四中,接收方在发出请求消息的同时,设定预定接收时间,并进行倒计时。倒计时结束时,统计未收到的数据序号,并向数据发送方发出请求消息,要求再次发送丢失的数据,直到数据全部到达。

数据发送方不进行倒计时,不判断发出的数据包是否丢失,而是根据接收方的请求消息被动重发丢失的数据。

接收方在初始阶段就得知发送方拟发送的数据量;因此,可以自行判断是否接收到了全部数据,一旦接收完成就立刻提交应用程序处理。

与现有技术相比,本发明的有益效果是:

1、本发明采用被动重发机制,发送发在初始阶段告之接收方拟发送的数据量和起止数据序号,并由接收方进行倒计时,接收方在接收超时之后,可以根据数据量和序号判断传输过程中丢失的数据,根据丢失的数据重新发送请求,从而避免因为确认消息丢失带来的重复发送;可以减少信道资源浪费。

2、通过本方法,在传输开始前,发送方告之接收方,自己将发送的数据量。接收方可以根据拟接收的数据量合理规划缓冲区的使用,避免缓冲区过大或者过小。在接收到全部数据后,接收方即刻上交应用程序进行处理,节省处理时间。

3、通过本方案,在接收方到发送方信道资源受限的场景下,本发明和传统的TCP协议对比;由于接收方发出的确认数据包容易丢包,引起TCP无效重传阻塞信道;设定信道初始丢包率为0,让丢包率随着等待发送的数据包数量增加而不断提;在该场景下,本方法在传输时延和发送次数2方面都优于传统TCP技术。

附图说明

图1本发明在整体的流程结构示意图;

图2本发明在传输数据包时和传统TCP的时延对比;

图3本发明在传输数据包时和传统TCP的传输次数(信道资源消耗)对比图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

在本发明的描述中,需要理解的是,术语“长度”、“宽度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

实施例1

请参阅图1~3,本发明提供一种技术方案:

一种被动重发的可靠传输方法,其具体包括以下步骤:

步骤一:数据发送方首先发出本次数据传输数据量和数据序号;

(与传统的主动重发方法不同,主动重传在初始阶段不提供本次发送数据的大小);

步骤二:接收方收到信息后,根据自己能提供的缓冲区大小和发送方拟发送数据大小,开辟缓冲区;并设置预定时间;

步骤三:接收方向发送方发出请求数据包,请求发送方发送数据;如果发送方在规定时间内没有收到接收方的请求,则重新发送步骤一的信息;这一步,接收方发出的请求信息包含了要求对方发送的数据的序号;

步骤四:发送方在收到接收方的发送请求之后,根据请求发送数据包;

步骤五:接收方在时钟结束时如果没有收到请求的全部数据包,则发送新的请求消息,针对未收到的数据包再次请求;

(与传统的主动重发不同,传统方法中,接收方是对收到的数据进行确认,而本方法则根据初始阶段发送方提供的数据包编号范围计算出应到未到的数据包,并对未收到的数据再次请求)

步骤六:发送方收到请求后,重发丢失的数据包;

(传统方法是未收到确认信息则重新发送,而本方法则默认没有收到接收方的反馈则表示数据全部到达,收到重发请求才进行重新发送);

步骤七:接收方收到全部数据包后直接提交给应用程序进行处理。

(传统方法中,需要等待发送方的断开连接信息或者立即处理指令才交给应用层处理,某些情况下时延较大;而本方法由于在初始阶段就得到拟接收的数据量,因此接收方可以自行判断是否收到了全部信息,一旦收到全部数据包立刻提交给应用层)。

通过本方案,在接收方到发送方信道资源较少的情况下,本发明和传统TCP对比;由于,接收方发出的确认数据包容易丢包,TCP对已经发送成功的数据包进行重复发送,从而引起无效重传阻塞信道;设定信道初始丢包率为0,让丢包率随着等待发送的数据包数量增加而不断提,在该场景下,本方法在传输时延和发送次数2方面都优于传统TCP技术。

以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

8页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种信号处理系统和方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类