一种数据传送方法、发送节点、接收节点及数据传送系统与流程

文档序号:12729526阅读:650来源:国知局
一种数据传送方法、发送节点、接收节点及数据传送系统与流程

本发明涉及通信技术领域,尤其涉及一种数据传送加速方法及相关的装置和系统。



背景技术:

在网络通讯中,如何保证可靠、高效地在网络上进行数据传输一直是学术界和工业界的研究重点,而数据传输效率与网络协议的性能直接相关,其中,吞吐率/传输速率是用来衡量网络协议性能的重要指标之一。在现有的通信网络中,通常采用TCP(Transmission Control Protocol,传输控制协议)或UDP(User Datagram Protocol,用户数据报协议)作为传输层协议。TCP和UDP是TCP/IP模型中最通用的两种传输层协议。根据统计,目前全球互联网数据流量90%以上通过TCP传输,通过UDP传输的不足10%。而且TCP所占份额还在继续扩大,就连目前广泛采用UDP协议的多媒体应用也逐渐开始采用TCP协议传输多媒体数据包。然而,设计于二十多年前的TCP传输协议已经越来越不适应飞速发展的高速网络环境和新型应用的需求。比如,由于TCP自身的“双窗口”拥塞控制,丢包重传等机制,当网络中存在一定程度的丢包和延时的时候,TCP连接的吞吐率显著下滑,无法有效地利用带宽,导致了TCP协议不能很好的支持数据的高吞吐率/传输速率传输。

针对TCP的传输速率的问题,各种网络加速技术应运而生。这些加速技术基本上可以分为三类:基于丢包(Loss-based)的TCP加速技术、基于延时(Delay-based)的TCP加速技术和基于学习(Learning-based)的TCP加速技术。

Loss-based的TCP加速技术沿袭了主流TCP以丢包来判断拥塞并调整传输速率的方式。其对传统TCP的改进主要是通过增大初始拥塞控制窗口(Congestion Window,CNWD),同时在通过丢包判断出现拥塞后使用比传统TCP更激进的方式恢复CNWD,以期减少拥塞对速率的影响。尽管这些改进在很多情况下确实能够提升速率,但很多网络会产生非拥塞因素的丢包,特别是无线网络,如信号被干扰等因素导致的丢包并不意味有拥塞发生,因此 Loss-based的TCP加速技术将丢包作为拥塞发生的信号很容易误判,导致传输速率下降,带宽得不到有效利用。

Delay-based的TCP加速技术克服了Loss-based的主要缺陷,采用延迟的变化来判断拥塞程度并相应调整传输速率。这一机制更符合现代网络的特点,能够在发生拥塞网络节点的队列开始堆积时就及时下调传输速率,避免拥塞恶化,减少甚至避免丢包的发生。同时,Delay-based的TCP加速技术不将丢包当作拥塞,在非拥塞因素发生的丢包时可以保持较高的速率。因此,设计优良的Delay-based的TCP加速技术比Loss-based的TCP加速技术在传输速率上有了显著的提升。尽管如此,当网络路径本身的延迟就变化很大时,Delay-based的TCP加速技术会将非拥塞因素导致的延迟增加误判为拥塞并转入拥塞处理,从而导致没有必要的压低传输速率。例如,包括移动互联网在内的无线网络延迟变化就很频繁,一些网络设备(特别是安全设备)也可能不定时地引入额外的数据包处理延迟。

Learning-based的TCP加速技术采用网络路径特征自学习的动态算法,基于每一个TCP连接实时观察、分析网络特征,根据学习到的网络特征随时调整算法来更准确的判断拥塞程度、更及时地判断丢包,从而更恰当的进行拥塞处理并更快速的进行丢包恢复。这一设计从原理上克服了静态算法无法适应网络路径特征变化的问题,保证了在各种不同网络环境及频繁变化的网络延迟、丢包特征下加速效果的持续有效性。然而,Learning-based的TCP加速技术需要靠对历史记录的学习来了解当前网络的情况,但是对于随机丢包,延迟抖动大的网络,这种学习/判断效果并不明显,使得网络的吞吐率/传输速率的提升并不显著。

综上,现有的传输协议的吞吐率/传输速率人仍然有较大的提升空间,尽管有一些加速算法可以起到一定的加速作用,但网络的发展趋势是流量特征越来越复杂并难以预测,尤其是在高延迟,高丢包,高带宽延迟积的场景下,网络路径特征不断发生变化,因此加速的效果也会起伏不定,有时甚至出现反效果。因此,现有技术中传输层协议的吞吐率/传输速率仍然有待提升。



技术实现要素:

本发明实施例提供一种数据传送方法、发送/接收节点、及数据传送系统,用于提高数据传输的速率。

为达到上述发明目的,一方面,本发明实施例提供了一种报文传输方法,该方法包括:发送节点以预定传输速率向接收节点传输多个数据包,接收节点根据接收到的数据包的序列号检测出一个或多个丢失数据包后,向发送节点发送丢包反馈信息,以请求重传丢失的数据包,发送节点接收到丢包反馈信息后,根据丢包反馈信息中的指示,重传丢失的数据包。与传统TCP尽力发送数据包的机制不同,在本发明实施例的数据传送方法中,数据包是以特定的速率均匀发送的,可以减少缓数据包瞬时注入网络造成网络拥塞的情况,同时也不会像TCP一样,由于发送窗口、拥塞窗口等限制而造成有包不能发的现象,可以显著提高数据传输速率和带宽利用率。

在第一种可能的实现方式中,发送节点发送的数据包携带有一个随机序列号(SEQ)和一个滚动序列号(PKT.SEQ);接收节点可以根据接收到的数据包中的滚动序列号来检测丢失数据包。由于PKT.SQE是用来指示数据包传输次序的,且只与数据包传输的次序相关,因此接收节点可以根据前后到达包的PKT.SEQ来迅速的判断丢包。双SEQ机制可以在一个RTT(Round Trip Time,往返时间)内发现任意丢失数据包,相对于TCP使用的超时重传,时延更小。

根据第一方面第一种可能的实现方式,在第二种可能的实现方式中,发送节点传输的多个数据包的滚动序列号与该多个数据包的传输次序对应。

根据第一方面的第一种或第二种可能的实现方式,在第三种可能的实现方式中,重传的数据包携带有新的滚动序列号。

根据第一方面的第一种或第二种可能的实现方式,在第四种可能的实现方式中,重传的数据包携带的随机序列号与首次传输该数据包时携带的随机序列号相同,重传的数据包携带的滚动序列号与首次传输该数据包时携带的滚动序列号不同。

根据第一方面或以上实现方式种的任意一种,在第五种可能的实现方式中,丢包反馈信息包含有丢失数据包的序列号信息,该序列号信息具体可以为 随机序列号或滚动序列号。或者在第六种可能的实现方式中,丢包反馈信息包含有接收节点已接收的数据包的序列号信息,比如随机序列号或滚动序列号。

根据第一方面或第一方面的以上实现方式种的任意一种,在第七种可能的实现方式中,接收节点发送的丢包反馈信息为包含丢包指示字段的NACK控制包,该丢包指示字段用于携带丢失数据包的滚动序列号;相应地,发送节点接收到NACK控制包之后,基于NACK控制包所携带的滚动序列号,以及发送节点已发送的数据包的随机序列号和滚动序列号之间的映射关系,确定丢失数据包的随机序列号,并给确定出丢失数据包赋予新的滚动序列号后重传。或者在第八种可能的实现方式中,NACK控制包的丢包指示字段也可以用于携带丢失数据包的随机序列号,接收节点可以根据丢失数据包的滚动序列号,查询数据包随机序列号与滚动序列号的映射关系表,确定丢失数据包的随机序列号,将确定出的序列号携带在丢失指示字段,反馈给发送节点。

根据第一方面第五种或第七种可能的实现方式,在第九种可能的实现方式中,NACK控制包的丢包指示字段包括:丢包开始字段(START)和丢包结束字段(END),其中,所述丢包开始字段和丢包结束字段分别用于指示多个连续的丢失数据包中首包和尾包的滚动序列号。相应地,发送节点在接收到NACK控制包后,可以根据NACK控制包中的丢包开始字段和丢包结束字段,确定连续的多个丢失数据包,并重传该多个连续的丢失数据包。接收节点用一个NACK控制包向发送节点反馈连续丢失的多个数据包,从而可以减少NACK控制包的个数,节省网络资源,提高重传效率。

根据第一方面或第一方面的以上任意一种可能的实现方式,在第十种可能的实现方式中,数据包的随机序列号和滚动序列号的映射关系以映射表的形式存储在所述发送节点。进一步地,在第十一种可能的实现方式中,发送节点在传输数据包的过程中,将已发送的数据包的随机序列号和滚动序列号的映射关系添加到该映射表,从而可以实现映射表动态更新。

根据第一方面或或第一方面的以上任意一种可能的实现方式,在第十二种可能的实现方式中,NACK控制包包含:释放字段(Release SEQ),该释放字段用于携带接收节点当前已接收到的数据包的随机序列号或滚动序列号。相应 地,发送节点在接收到NACK控制包后,可以根据释放字段的指示,从发送缓存中释放接收节点已接收到的数据包所占用的空间。进一步地,接收节点也可以及时释放已接收到的数据包所占用的接收缓存。

根据第一方面或或第一方面的以上任意一种可能的实现方式,在第十三种可能的实现方式中,接收节点还周期性发送PACK控制包,该PACK控制包携带有HOL包的随机序列号,其中,HOL包包括:未被所述发送节点感知的丢失数据包,和/或重传后再次丢失的数据包;相应地,发送节点接收到PACK控制包之后,会重传与所述PACK控制包携带的随机序列号对应的数据包。通过周期性发送PACK控制包,并在PACK控制包中携带HOL包的随机序列号(SEQ),可以有效解决由于NACK控制包丢失或者重传的数据包再次丢失导致的接收内存阻塞的问题。

进一步地,根据第一方面的第十三种可能的实现方式,在第十四种可能的实现方式中,PACK控制包还可以包括数据包接收速率和数据包丢失率中的至少一种。进一步地,在第十五种可能的实现方式中,发送节点根据PACK包含的数据包接收速率和/或数据包丢失率,调整初始传输速率,使其与数据包接收速率相适应。通过周期性发送的PACK控制包,可以发送节点可以实现传输速率的动态调整,使得发送节点和接收节点的配合更加有效,进而可以提高数据传输的效率。可选地,接收节点也可以将数据包接收速率和/或数据包丢失率等信息携带在另一个单独的控制包中,反馈给发送节点。

根据第一方面的第十三种至第十五种可能的实现方式中的任一种,在第十六种可能的实现方式中,接收节点发送PACK的周期可以由max(RTT/a,threshold),(1<a<6)来计算。

根据第一方面的第十三种至第十六种可能的实现方式中的任一种,在第十七种可能的实现方式中,接收节点在接收到首个数据包后会启动一个PACK定 时器,如果PACK定时器时间到,则发送PACK。

根据第一方面或第一方面的任意一种可能的实现方式,在第十八种可能的实现方式中,发送节点和接收节点建立UDP连接,并基于该UDP连接进行数据传送。

本发明实施例第二方面还提供一种发送节点,包括协议栈,以及通过总线连接的处理器、存储器和通信接口;其中,协议栈用于在处理器的控制下,执行第一方面或第一方面的任一可能的实现方式中发送节点的流程。

本发明实施例第三方面还提供一种节点,包括协议栈,以及通过总线连接的处理器、存储器和通信接口;其中,协议栈用于在处理器的控制下,执行第一方面或第一方面的任一可能的实现方式中接收节点的流程。在第三方面和第四方面的第一种可能的实现方式中,通信接口包括发射电路和接收电路,协议栈具体用于通过发射电路传输数据包,并通过接收电路接收数据包。在第三方面和第四方面的第二种可能的实现方式中,协议栈由以可执行程序的形式存储在存储器中,被处理器执行以实现发送节点和接收节点的功能。

本发明实施例第四方面还提供一种数据传送系统,包括第二方面的发送节点和第三方面的接收节点。

本发明实施例第五方面还提供一种数据传送系统,包括发送节点和接收节点,其中发送节点包括实现第一方面或第一方面的任一可能的实现方式中发送节点的功能的一个或多个功能单元;接收节点包括实现第一方面或第一方面的任一可能的实现方式中接收节点的功能的一个或多个功能单元。

本发明实施例第六方面还提供一种计算机可读存储介质,该存储介质存储程序代码,该程序代码用于执行以上任一方面或任一方面的可能的实现方式中所描述的方法步骤。

在本发明实施例任一方面或任一方面的任一种实现方式中,数据包接收速率用于表示接收节点接收数据包的速率,或者接收节点从接收缓存读取数据包的速率,或者所述接收节点从接收缓存读取数据包的速率,或者接收节点接收有效数据包的速率,这里的有效数据包时指非冗余的数据包。发送缓存和接收缓存分别位于发送节点和接收节点的内存中。随机序列号标识数据包的身份或 数据部分的信息,用于确保数据在发送缓存中按序排列;滚动序列号用于指示发送节点传输数据包的次序。随机序列号与数据包的数据部分相关,而滚动序列号只与数据包的传输次序相关,与数据包的数据部分无关。

本发明实施例提供的数据传送方法、装置及数据传送系统中,发送器以一定的发送速率向接收器推送数据包,接收器在检测到有丢失包的时候,通过快速的流中重传,迅速的‘拉’回丢失包,并释放已接收到的按序连续数据包所占用的内存。从而能够可以在高延迟,高丢包率的网络中提高网络吞吐率/传输速率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例的一种典型应用场景示意图;

图2是本发明实施例提供的一种数据传送系统示意图;

图3是本发明实施例提供的协议栈工作原理图;

图4是本发明实施例提供的数据传送方法示意图;

图5是本发明实施例提供的协议栈工作原理图;

图6是本发明实施例提供的双序列号机制的示意图;

图7是本发明实施例的数据传送方法流程图;

图8是本发明实施例提供的NACK控制包的结构示意图;

图9是本发明实施例提供的PACK控制包的结构示意图;

图10是本发明实施例提供的发送节点的工作流程图;

图11是本发明实施例提供的接收节点的工作流程图

图12是本发明实施例提供的数据传送系统的数据交互流程示意图;

图13是本发明实施例提供的另一种数据传送系统结构图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

本发明实施例描述的网络架构以及业务场景是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。

图1为本发明方案的适用的一个典型的应用场景示意图。如图1所示,在一种场景下,UE(user equipment,用户设备)通过因特网服务提供商(Internet Service Provider,简称“ISP”)接入互联网,并基于传输协议与服务器进行数据传输,比如,从服务器下载内容,或者备份UE本地的内容至服务器,等等。通常,UE与服务器之间数据传输可能跨越多个地域,多个ISP,高延迟和高丢包率不可避免。在另一些场景下,UE之间,或者服务器之间也可以通过有线或无线链路传输数据,因为链路等因素,同样也存在数据包丢失的情况。因此为了保证数据的可靠传输,TCP(Transmission Control Protocol,传输控制协议)成为不同设备之间传输协议的首选。但是TCP为了保障数据传输可靠性而 引入的基于窗口的发送机制,拥塞控制、超时重传等机制会极大的限制数据的传送速率,降低链路利用率。本申请旨在保证数据可靠传输的前提下,进一步提高数据的传输速率,提高链路利用率。可以理解的是,任何基于TCP/IP(Internet Protocol)参考模型的通信系统都适用于本发明实施例的提供的技术方案,其中,TCP/IP参考模型是一个抽象的分层模型,它通常也被通称为TCP/IP协议栈,这个模型中,所有的网络协议都被归类到5个抽象的"层"中:物理层、链路层、网络层、传输层以及应用层,关于各层的定义均为现有技术,本发明实施例不再赘述。

本申请所涉及到的用户设备UE可以包括图1所示的PC(个人电脑)、智能手机、笔记本电脑、平板电脑、DC(数字相机)等各种具有通信功能的手持设备、车载设备、可穿戴设备、计算设备以及各种形式的用户设备(User Equipment,简称UE),移动台(Mobile station,简称MS),终端(terminal),终端设备(Terminal Equipment)等等。为方便描述,本申请中,上面提到的设备统称为用户设备或UE。本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

图2是本发明实施例提供的一种数据传送系统100的简化框图,根据图2,该数据传送系统100包括发送节点110、接入点10、无线接入网关12、广域网14、以及接收节点20。所属领域的技术人员可以理解一个数据传送系统通常可包括 比图2中所示的部件更少或更多的部件,或者包括与图2中所示部件不同的部件,图2仅仅示出了与本发明实施例所公开的多个实现方式的更加相关的部件。

另外,发送节点110和接收节点可以独立的物理设备,也可以是虚拟机。在一种场景下,发送节点110可以是图1中描述的用户设备,接收节点20也可以是图1中描述的服务器。在另一种场景下,用户设备和服务器的角色也可以互换,即服务器作为发送节点,而用户设备作为接收节点。当然,发送节点110和接收节点20也可以均为用户设备,或者均为服务器,本发明不做特别限制。广域网14可包括公用网络、专用网络、因特网的一部分和/或其任何组合。无线接入网关12和接入点10可包括在一个无线网络中,出于简洁之目的,该无线网络的其它部分并未进行阐述。另外还需要说明的是,本发明实施例主要是对发送节点和接收节点上的部署的网络协议进行优化,以提升数据传输速率,与发送节点和接收节点之间的网络类型无关。图2所描述的发送节点和接收节点基于无线网络传输数据只是本发明实施例的一种典型应用场景,可以理解的是,不同的设备之间通过有线或无线网络传输数据,例如,图1中不同UE之间通过无线网络(如Wi-Fi网络、蜂窝网络),或者服务器之间通过有线或无线方式传输数据的场景下,均可使用本发明实施例提供的方法。

根据图2,发送节点110包括处理器120、通信接口140和存储器150。相应地,接收节点20也包括处理器、通信接口和存储器(图2中未示出)。发送节点110和接收节点20还分别包括协议栈130和协议栈21。其中,协议栈130和21的 功能可由软件、硬件和/或固件的适当组合执行。此外,所属领域的技术人员可以理解发送节点110和接收节点20可包括比图2中所示部件更少或更多的部件,图2仅示出了与本发明实施例所公开的多个实现方式的更加相关的部件。

发送节点110的存储器150中存储有应用程序121(也可以称为发送应用程序),例如,应用程序121可以是用于上传内容至接收节点20的备份程序,也可以是用于从接收节点20请求内容的浏览器,本发明实施例不做特别限定。应用程序通常属于应用层,处理器120可以读取存储器150中的应用程序121并执行,以实现特定的功能。相应地,接收节点20上也运行有应用程序22(也可称为接收应用程序)。应用程序121和22可以基于协议栈130和21进行数据传送。其中,参见图3,发送节点110以及接收节点20的协议栈至少包括:网络层协议(IP)和传输层协议(本发明实施例优选UDP)。

进一步地,如图3所示,本发明实施例的数据传送系统中发送节点和接收节点的协议栈还包括加速协议Fillp,用于提供数据传输加速能力。其中,如图4所示,发送节点上的Fillp主要用于将上层应用程序的数据包封装后以稳定的传输速率持续从内存中‘推送’至接收节点;接收节点上的Fillp主要用于检测丢失数据包,并发送‘拉’请求以指示发送节点重传丢失数据包。其中,Fillp可以典型地承载与UDP之上,数据包经发送节点上的Fillp处理之后,会依次传递给底层的UDP和IP进行封装处理,并最终通过物理层的链路发送出去。相应地,接收节点从物理链路接收到数据包后,IP和UDP会对数据包解封装,然后 传递给Fillp处理后,写入接收节点内存,最终提交给上层应用程序。其中,发送节点110以及接收节点20的协议栈对报文封装和解封装的过程如图5所示,从图5可以看出,报文封装的过程实质上是根据协议栈各层协议规范对报文添加报头和/或帧尾的过程,而报文解封装的过程实质上是根据协议栈各层协议规范对报文去除报头和/或帧尾的过程。

更具体地,根据图3,在发送节点侧,Fillp协议主要实现:应用层数据包封装、基于特定速率的数据包传输、基于接收节点的丢包反馈信息进行重传;在接收节点侧,Fillp协议主要实现:数据包解封装、丢包检测以及丢失包处理功能。可选地,Fillp协议还可以包括如下功能中的至少一种:基于接收节点反馈信息的传输速率控制、数据包加/解密,网络环境初始化,以及前向纠错编码(FEC)。关于加速协议Fillp的功能的实现细节请见后续实施例。可以理解的是,在一个实施例中,如图3所示,Fillp可以位于传输层之上;在另一个实施例中,Fillp的加速能力也可以作为传输层协议(如UDP)的扩展,集成到传输层协议中,或者也可以在应用层以应用程序或应用程序插件的形式实现,甚至也可以介于物理层(网卡)和网络层(IP)之间,本发明实施例不做特别限制。

如图3所示,在一个实施例中,发送节点和接收节点完成网络环境初始化之后,建立连接(本发明实施例以UDP连接为例进行说明);发送节点上运行的应用程序将数据写入发送缓存,发送缓存通常是发送节点的内存或内存的部 分区域。Fillp采用双序列号机制来封装应用程序的数据包,并将数据包传递给底层UDP协议和IP协议封装处理之后通过物理层的物理链路发送给接收节点。具体地,如图6所示,每个数据包包含头部(Header)和数据部分(data),其中,头部包含两个序列号:一个随机序列号(用SEQ表示)和一个滚动序列号(用PKT.SEQ表示);其中,随机序列号的作用和TCP数据包头部中的序列号(sequence number)一样,都是用于标识数据包的身份(数据部分的信息),确保数据在发送缓存中按序排列;例如,随机系列号可以与TCP报文头部的序列号类似,为一个32字节的无符号值;在连接建立后,发送节点发送的首个数据包的随机序列号通常是发送节点随机产生的,后续的数据包的随机序列号可以在首个数据包的随机序列号的基础上,根据数据包数据部分的长度(占用的字节数)增加或减少;或者数据包的随机序列号也可以根据数据包数据部分的内容,采用特定算法(比如哈希算法,或消息摘要算法等)生成。滚动序列号与发送节点传输数据包的次序(也可以等同于发送节点已发送数据包的个数)对应,例如,如果发送节点当前已发送n个数据包,则发送节点发送的下一个数据包的滚动序列号可以为n+1,n+2,或者其它与n呈线性关系或者单调函数关系的数值。在同一连接或同一会话中,发送节点传输的每个数据包的滚动序列号都是唯一的,发送节点连续发送的多个数据包的滚动序列号应该是单调递增序列、单调递减序列、或等比序列。需要说明的是,在本发明实施例中,随机序列号是与数据包数据部分相关的,如果两个数据包的数据部分相同,则其 随机序列号也相同,比如一个数据包的随机序列号为N,则无论是首次传输,还是重传该数据包,其随机序列号均不变;而滚动序列号只与数据包的传输次序相关,与数据包的数据部分无关,即在同一连接或同一会话中,每个数据包的滚动序列号都是唯一的,且数据包的滚动序列号与传输次序构成具有单调性的函数。这样,一个数据包在首次传输和重传时,随机序列号保持不变,但滚动序列号发生了变化。同时,接收节点侧的Fillp可以根据接收到的数据包的滚动序列号,快速检测出丢失的数据包,并反馈丢包信息给发送节点,以请求发送节点快速重传丢失的数据包。在一个实施例中,以上描述的双序列号机制可以用用到现有TCP中,以解决TCP中的丢包检测问题,特别是丢失包重传后再丢失的检测问题。进一步地,在另一个实施例中,接收节点侧的Fillp还可以将接收速率,数据包丢失率等信息反馈给发送节点,以便发送节点进行传输速率的调整。

在本发明实施例的数据传送系统中,不采用传统的TCP中基于“窗口”的发送机制,以及丢失包超时重传机制,而是使用发送节点的内存作为发送缓存,发送节点匀速从内存中‘推’送数据包至接收节点;接收节点及时释放已接收到的按序连续数据包所占用的发送缓存,并在检测到丢失包的时候,发送‘拉’请求,以使发送节点重传丢失包。这种发送节点主动‘推’数据包以及接收节点根据‘推’送过来的数据‘拉’丢失包的机制可以容忍链路的一定丢包,从而避免拥塞速率调整,做到链路的高吞吐和高传输率。

基于上述实施例描述的加速协议Fillp的基本框架和原理,下面描述本发明实施例的数据传送系统在部署Fillp协议后进行数据传送的方法,如图7所示,该方法主要包括以下步骤:

步骤703:基于发送节点和接收节点之间建立的连接(本发明实施例优选UDP连接),发送节点以初始传输速率向接收节点传输多个数据包,其中,每个数据包都携带有两个序列号,分别为随机序列号和滚动序列号;关于随机序列号和滚动序列号的定义及实现可以参见图5和图6相关实施例的描述,不再赘述。需要说明书的是,TCP是基于窗口发送数据包的,只要在窗口内的数据包都会全力发送,这样很容易导致大量的数据包瞬时拥挤到网络上,造成瞬时拥堵的问题。而在本发明实施例的数据传送方法中,数据包是以特定的速率均匀发送的,可以减缓数据包包瞬时注入网络,同时也不会像TCP一样,由于发送窗口、拥塞窗口等限制而造成有包不能发的现象,可以显著提高数据传输速率和带宽利用率。

在一个实施例中,发送节点的初始传输速率可以由用户通过用户界面、脚本或配置文件配置;在另一个实施例中,初始传输速率可以由发送节点根据其与接收节点之间的网络带宽自动配置。只要发送节点的发送缓存中有待发送的数据包,发送节点就一直以该初始传输速率传输发送缓存中的数据包,除非接收到传输速率调整指令。

步骤705:接收节点接收多个数据包;

在一个实施例中,接收节点接收数据包的速率与发送节点的初始传输速率相匹配,比如两者相等,或者近似等。在一个实施例中,若接收节点的接收速率大于或小于发送节点的初始传输速率时,可以反馈控制信息给发送节点,使发送节点调整该初始发送速率,使其与接收节点的接收速率向匹配。

步骤706:接收节点根据接收到的一个或多个数据包携带的序列号,检测出一个或多个丢失数据包,并根据检测出的丢失数据包的信息生成丢包反馈信息发给发送节点。

在一个实施例中,接收节点可以根据接收到的数据包的滚动序列号PKT.SEQ来快速检测丢包。例如,接收节点接收到滚动序列号PKT.SEQ=3的数据包后,如果PKT.SEQ=1的数据包已收到,但PKT.SEQ=2的数据包还未收到,则判定PKT.SEQ=2丢失。与传统TCP需要通过多个ACK才能判定丢包相比,本发明实施例的方法更高效。

在一个实施例中,接收节点将检测出的丢失数据包的随机序列号或滚动序列号携带在ACK包中,发送给发送节点。

在另一个实施例中,接收节点将检测出的丢失数据包的序列号携带在NACK(Negative Acknowledge)控制包(以下简称NACK)中,发送给发送节点。具体地,在一种可能的实现方式中,NACK包含丢包指示字段,该字段用于携带丢失数据包的滚动序列号;例如,如果接收节点根据当前接收到的数据包的序列号,判定PKT.SEQ=2的数据包丢失,则随即将NACK的丢包指示字段 填充为2,发送给发送节点。在另一种可能的实现方式中,如图8所示,NACK可以包括:丢包开始字段START和丢包结束字段END,其中,所述丢包开始字段START和丢包结束字段分别用于携带多个连续的丢包中首包和尾包的滚动序列号。可以理解的是,由于数据包的滚动序列号是按传输顺序递增的,因此如果接收节点检测到多个连续的丢包,则丢包开始字段和丢包结束字段分别指示了这多个连续的丢失数据包中滚动序列号数值最小和最大的数据包。如果接收节点当前只检测到单个丢失的数据包,则构造的NACK中START和END字段值相同,均为该丢失的数据包的滚动序列号。如图8所示的,当接收节点收到PKT.SEQ=1的数据包,接着又收到PKT.SEQ=5的数据包,则判定连续丢失PKT.SEQ=2~4的3个数据包,并构造START=2,END=4的NACK,以请求发送节点重传这几个连续丢失的数据包。当接收节点继续接收到PKT.SEQ=7的数据包之后,判定PKT.SEQ=6的数据包丢失,因此构造START=6,END=6的NACK发送给发送节点。可以看出,通过START和END字段,可以用一个NACK控制包向发送节点反馈连续丢失的多个数据包,从而可以减少NACK控制包的个数,节省网络资源,提高重传效率。在另一种可能的实现方式中,NACK包含的丢包指示字段也可以携带丢失数据包的随机序列号;例如,如果接收节点根据当前接收到的数据包的滚动序列号(PKT.SEQ),判定PKT.SEQ=2的数据包丢失,则接收节点根据数据包的随机序列号与滚动序列号的映射关系,确定该丢失数据包对应的随机序列号,并 将确定出的随机序列号填充到NACK的丢包指示字段,发送给发送节点,使得发送节点根据NACK的丢失指示字段的指示,重传对应的数据包。

步骤707:发送节点根据接收到的丢包反馈信息的指示,重传丢失的数据包。

在一个实施例中,发送节点基于接收到的NACK所携带的滚动序列号,以及发送节点已传输的数据包的随机序列号和滚动序列号之间的映射关系,确定丢失数据包的随机序列号,然后根据确定出的随机序列号,从发送缓存中查找到对应的数据包并重传;其中,重传的数据包携带有原始的随机序列号和新的滚动序列号。在这种情形下,发送节点通常会记录数据包的随机序列号和滚动序列号的映射关系,比如,发送节点会将已传输和/或待传输的数据包的随机序列号与滚动序列号之间的映射关系以哈希表的形式存储,便于后续收到NACK后,根据NACK携带的滚动序列号,确定对应的丢失数据包。

在另一个实施例中,发送节点可以根据接收节点已接收到的ACK包携带的接收节点已接收的数据包的序列号,确定丢失数据包,并重传丢失数据包。

进一步地,在一个实施例中,NACK还包含:释放字段(Release SEQ),释放字段用于指示接收节点当前已接收到的数据包的随机序列号和/或滚动序列号。如图8所示,当接收节点收到PKT.SEQ=5的数据包,判定PKT.SEQ=2~4的3个数据包丢失,并且在丢包之前已接收的数据包的最大PKT.SEQ=1,因此Release SEQ字段的值填充为1,以指示发送节点将PKT.SEQ=1对应的数据包所 占用的发送缓存释放。进一步地,假设接收节点检测到PKT.SEQ=6的数据包丢失时,若重传的PKT.SEQ=2~4(之前被判定为丢失的3个数据包)已经收到,则会构造Release SEQ字段值为5的NACK,以指示发送节点将PKT.SEQ=2~5对应的数据包所占用的发送缓存释放。相应地,在本实施例中,发送节点还执行步骤709:根据接收到的NACK中的Release SEQ字段,从发送缓存中释放Release SEQ字段所指示的数据包所占用的空间。发送缓存通常为发送节点的内存,或内存的部分区域。

需要说明的是,本发明所有实施例中的丢失数据包,是指接收节点根据已接收数据包的信息判定为丢失的数据包,因为网络传输的不确定因素,接收节点判定出的丢失数据包并不一定真正发生了丢失,即接收节点有一定概率为“误判”,但这种误判并不是实质影响本发明的效果。可选的,发送节点接收到丢包反馈信息后并不一定马上重发丢失数据包,可以等待一段时间,减少由包乱序接收导致的‘误判’带来的影响,这个等待时间可以由用户配置。

从以上描述可以看出,本发明上述实施例通过数据包的滚动序列号来快速检测丢失数据包,同时在检测到丢失数据包后发送丢包反馈信息给发送节点,以请求及时重传丢失数据包。由于数据包发送以及提交给至上层应用程序时的保序要求,如果某个数据包未被接收节点接收,那么该数据包后续的数据包被接收后必须保存在接收缓存,直至该数据包被重发并到达接收节点之后,才会提交给应用程序,同时其占用的接收缓存才会被释放,即如果接收缓存中的数 据不连续(即接收缓存中存在缺失的数据包),就无法及时释放接收缓存。但在某些情形下,例如由于链路拥塞等原因,接收节点发送的丢包反馈信息在传输的过程中丢失,或者发送节点重传的丢失数据包再次发生丢失,接收节点都就会长时间接收不到丢失数据包,接收缓存中该数据包的缺失会导致的数据不连续,从而使得接收缓存中的其它数据包长时间无法释放,阻塞接收缓存。这种接收缓存中缺失的数据包,即造成接收缓存阻塞的数据包(典型代表为接收节点未接收到,但未被发送节点感知为丢失的数据包,以及重传后再次丢失的数据包),通常也称为HOL(Head of Line,队首)包,这种因为HOL包造成的接收缓存阻塞的现象通常也称为HOL效应。为解决HOL包阻塞接收缓存的问题,本发明实施例的数据传送的方法进一步还包括:

步骤713:接收节点周期性地向发送节点发送PACK(Period ACK)控制包(以下简称为PACK);其中,如图9所示,PACK中包含HOL SEQ字段,该字段用于携带HOL包的随机序列号信息。具体地,接收节点检测出丢失数据包,并向发送节点发送丢包反馈信息后,如果在一定的时间间隔内或者在PACK定时器时间到的时候仍未接收到丢失数据包,则判定该丢失数据包为HOL包,并在下一次发送的PACK中携带该HOL包的随机序列号信息。其中,这里的时间间隔可以为一个RTT,或者用户根据实际需求设置的值。接收节点将HOL包的随机序列号填充在PACK的HOL SEQ字段,这样,发送节点在接收到PACK后,可以根据HOL SEQ字段的指示,重传HOL包,并且由于PACK是周期性发送的, 即便一个PACK发生丢失,仍能通过后续的PACK中将HOL包的信息反馈给发送节点,从而很好地解决了上述HOL包导致接收缓存阻塞的问题。在一个实施例中,接收节点发送PACK的周期可以由max(RTT/a,threshold),(1<a<6)来计算,其中,RTT全称为Round Trip Time,是指一个数据包在发送节点和接收节点之间往返传输一次的时间,另外,这里的Threshold可以是由用户来设置的一个阈值,本发明实施例优选设置为15ms。当然这里的计算公式只是一个典型示例,这个周期可以由本领域技术人员根据实际需求定义,不局限于该公式。进一步地,接收节点在接收到第一个数据包之后,可以开启一个PACK定时器,该定时器的周期可以根据以上描述的方法来设置,当定期器时间到,接收节点就发送一个PACK,并将定时器清零,重新开始计时。

可选地,如图9所示,在一个实施例中,每个PACK携带有数据包接收速率和/或数据包丢失率中;其中数据包接收速率用于表示接收节点接收数据包的速率,或者接收节点从接收缓存读取数据包的速率,或者接收节点接收有效数据包的速率,这里的有效数据包时指非冗余的数据包。数据包丢失率是由接收节点统计出的数据包丢失的比率,用于体现一段时间内的网络状况。相应地,本发明实施例的数据传送的方法进一步还包括:

步骤715:发送节点根据接收到的PACK,调整初始传输速率,使其与PACK指示的数据包接收速率相适应。

步骤717:发送节点基于调整之后的传输速率,继续向接收节点传输数据 包;

步骤719:接收节点接收数据包,并重复以上步骤706-715。

可选地,如图9所示,在一个实施例中,PACK还包含:释放字段(Release SEQ),该字段的具体含义与NACK中的Release SEQ字段一样,均是为了指示发送节点及时释放接收节点已接收的数据包所占用的发送缓存。可选地,基于以上描述的任一实施例,在另一个实施例中,在步骤703之前,发送节点和接收节点还执行步骤701:初始化网络环境,以建立通信连接。

可选地,基于以上描述的任一实施例,在另一个实施例中,发送节点会记录已发送的数据包的随机序列号和滚动序列号的映射关系,比如,可以采用哈希表,或其它形式的映射表来存储该映射关系。进一步地,在一个实施例中,发送节点还执行步骤711:将已发送的数据包的随机序列号和滚动序列号的映射关系添加到所述映射表,以实现映射表的动态更新。

本发明实施例提供的数据传送方法及系统中,发送节点以相对固定的传输速率连续向接收节点传输数据包,接收节点检测到丢失数据包后即时发送丢包反馈信息给发送节点,以请求发送节点重传丢失数据包。这种发送节点主动‘推’数据包以及接收节点根据‘推’送过来的数据‘拉’丢失包的机制,在内存足够的情况下,不会像TCP一样,由于发送窗口、拥塞窗口等限制而造成有数据包不能发的现象,可以显著提高数据传输速率和带宽利用率,同时,由于数据包是以一定的速率发送的,可以减缓数据包瞬时注入网络。进一步地, 基于双序列号传输数据包,使得接收节点可以快速检测丢失数据包;进一步地,通过在NACK中携带Release SEQ字段来快速释放可以释放的协议栈内存。进一步地,通过周期性的PACK控制包来解决HOL包导致接收缓存阻塞的问题。

下面结合图10来描述本发明一个优选的实施例中发送节点的工作流程,根据图10,发送节点将从上层应用程序接收到数据封装后写入发送缓存,其中,发送节点在封装数据包的时候会在数据包头部中添加前述实施例所描述的随机序列号和滚动序列号。如果发送节点当前接收到接收节点发送的NACK,则根据NACK中的丢包指示字段和释放字段,释放可释放的发送缓存,并把丢失包加入丢失包序列;如果发送节点当前接收到接收节点发送的PACK,则根据PACK携带的数据包接收速率和/或数据包丢失率,调整传输速率;如果发送节点当前既未接收到PACK,又未接收到NACK,则判断丢失序列是否为空,该丢失序列用于存放被接收节点判定为丢失的数据包,若丢失序列非空,则发送丢失序列中的丢失数据包;若丢失序列为空,则继续判断发送缓存是否为空,如果发送缓存非空,则按照特定传输速率从发送缓存发送数据包,如果发送缓存为空,则继续判断上层应用程序是否传输完毕,如果是,则关闭与接收节点之间建立的连接(如UDP连接),释放发送缓存,如果否,则继续等待从上次应用程序接收数据并执行上述流程。

相应地,下面结合图11来描述本发明一个优选的实施例中接收节点的工作流程,根据图11,接收节点接收到数据包后,判断当前已接收到的数据包是否 可以提交给应用程序的连续数据包,如果是,则提交连续数据包给应用程序,并释放已提交的数据包所占用的发送/接收缓存,如果否,则接收节点判定有数据包丢失,发送NACK至发送节点,同时把当前接收到的数据包放入接收缓存,这里的连续数据包是指传输次序连续的数据包。进一步地,接收节点会启动一个PACK定时器(通常在接收到首个数据包后启动),如果定时器时间到,则会触发接收节点发送PACK,并将定时器清零,重新开始计时。如果应用程序完成了全部的数据包接收,则接收节点关闭与发送节点之间建立的连接(如UDP连接),释放接收缓存。

在本发明的一个实施例中,以上描述的图10和图11的流程可以分别由发送节点和接收节点的协议栈来实现。更具体地,在一个实施例中,图10和图11的流程可以由分别部署在发送节点和接收节点的加速协议(Fillp)来实现,从协议层级来看,Fillp可以在任何一层实现,比如在一个实施例中,Fillp可以介于网络层和物理层之间,或者在传输层协议之上(Fillp优选承载在UDP之上)。在另一个实施例中,以上描述的流程也可以直接由发送节点和接收节点的协议栈中的传输层协议(比如UDP)来实现,当然,需要对现有的传输层协议做功能扩展。在另一个实施例中,以上描述的流程也可以分别由部署在发送节点和接收节点的一个应用程序或应用程序插件来实现。

下面通过图12所示的示例来展示本发明实施例的数据传送系统中数据包发送和接收的详细流程,根据图12,该流程主要包括以下步骤:

步骤1:发送节点确定初始传输速率,并通过与接收节点之间建立的连接(优选UDP连接)以初始传输速率传输多个数据包,其中,发送节点会在每个数据包的包头里添加双序列号(随机序列号和滚动序列号PKT.SEQ,以下为描述简便,随机序列号用SEQ表示,滚动序列号用PKT表示),比如数据包1中的:SEQ=1,PKT=1;数据包中SEQ=2,PKT=2等。需要说明的是,为了便于理解,图12中我们假设每个数据包只带1byte的数据,因此相邻的数据包的随机序列号只相差1。可选地,发送节点会建立一个PKT.SEQ->SEQ的哈希(Hash)表。

步骤2:当接收节点收到第一个数据包(PKT=1)后,PACK计时器开始计时。

步骤3:由于链路原因,PKT=2,3,4的数据包丢失。SEQ=5,PKT=5的数据包被接收到,这时接收节点马上返回NACK,NACK中携带可释放内存release SEQ=1(PKT=1的数据包已经接收到),丢失指示字段NPKT=2~4(START=2,END=4)。这里接受节点可以根据滚动序列号更快的发现丢失的数据包,相比TCP来说,这时候TCP还无法做出判断丢包。

步骤4:发送节点继续传输数据包,SEQ=6,PKT=6的数据包又丢失。

步骤5:SEQ=7,PKT=7数据包被接收到,:接收节点马上发出NACK(release SEQ=1,NPKT=6)通知PKT=6的数据包丢失。

步骤6:接收节点之前发出的NACK(NPKT=2~4)被发送节点接收到,根据发送节点已经建立的PKT.SEQ->SEQ映射表,确定SEQ=2,3,4的数据包丢 失,发送节点马上进入重传阶段:取出SEQ=2,3,4的数据,并赋予新的PKT.SEQ,重传。注意,这里SEQ=2,3,4的数据包对应的PKT已经变成了8,9,10,并且PKT.SEQ->SEQ映射表更新。进一步地,发送节点根据NACK中带的release SEQ=1,释放SEQ=1的数据包占用的发送缓存。

步骤7:接收节点接收到重传的SEQ=2,3,4,PKT=8,9,10的数据包。对比于TCP来说,TCP是不能一次性的把丢失包全部重发的,只是会重传序列号紧挨ACK number的一个丢失包,而本发明实施例的数据传送系统中,发送节点可以把确认的丢失包在某一时刻全部重发,重传的效率更高。

步骤8:发送节点接收到NACK(NPKT=6),和上面处理NACK方式一样,重发SEQ=6的数据包,重传的该数据包的SEQ不变,但是PKT更新成11。

步骤9:发送节点继续发送SEQ=8,PKT=12的数据包,假设由于链路问题,重传的SEQ=6,PKT=11的数据包又再次丢失。

步骤10:当收到SEQ=8,PKT=12的数据包时候,接收节点发出NACK(release SEQ=5,NPKT=11)来通知发送节点PTK=11的数据包又丢失了(这里是SEQ=6的重传包又丢失)。

步骤11:发送节点继续发送SEQ=9,10,PKT=13,14的数据包,并被接收方接收到。

步骤12:接收节点收到NACK(release SEQ=5,NPKT=11),通过映射表查询,发现重传的SEQ=6又丢失了,再次重传,PKT更新为PKT=15。同时根据 release SEQ=5,释放掉SEQ=2~5的数据包占用的发送缓存。

步骤13:接受节点接收到SEQ=6,PKT=15的数据包(SEQ=6的数据包一共重传了2次)。

步骤14:发送节点发送SEQ=11,PKT=16和SEQ=12,PKT=17数据包,由于链路质量,SEQ=11的数据包丢失。

步骤15:接收节点接收到SEQ=12,PKT=17的数据包后判断出PKT=16的数据包丢失,发送NACK(release SEQ=10,NPKT=16)。

步骤16:发送节点发送SEQ=13,PKT=18和SEQ=14,PKT=19的数据包。

步骤17:接收节点接收到SEQ=13,PKT=18的数据包。这时候,由于PACK计时器到时,接收节点发送PACK,由于在接收缓存中SEQ=11的数据包缺失,导致接收缓存中的数据不连续,无法及时提交给应用程序并释放接收缓存,所以在PACK中Nseq=11,通知发送方SEQ=11的数据包没有收到,这个SEQ就是HOL包的SEQ。PACK发送结束后,PACK计时器归0,重新计时。

步骤18:发送节点收到NACK(release SEQ=10,NPKT=16),查询映射表,得知SEQ=11的数据包丢失,重传SEQ=11的数据包,重传的数据包PKT更新为20。释放SEQ=6~10的数据包占用的发送缓存。

步骤19:发送节点接收到PACK(release SEQ=10,Nseq=11),发现SEQ=11的包丢失,成为阻塞接收缓存的HOL包,重发SEQ=11,PKT=21的数据包。进一步地,发送节点根据PACK中携带的接收速率和/或数据包丢失率信息,调整 传输速率。

步骤20:接收节点接收到SEQ=11,PKT=20的数据包,又接收到SEQ=11,PKT=21的数据包,丢弃。

从以上流程可以看出,发送节点的发包速率是固定的,属于匀速发送,对比与TCP的窗口发送,不会造成瞬时注入网络的数据包过多而导致的拥塞问题。进一步地,双序列号机制可以在一个RTT内发现任意丢失数据包,相对于TCP来说,判断方法也比较简单,相对于TCP使用的超时重传,节约了更多时间。

下面描述本发明的装置实施例,如图2所示,本发明实施例一方面提供一种发送节点110,包括:处理器120、协议栈130、通信接口140和存储器150,其中,处理器120具体可以包括通用处理器,数字信号处理器(DSP),专用集成电路(ASIC),现场可编程门阵列(FPGA)或其它可编程逻辑组件。存储器150可以包括计算机可读存储介质,如磁存储设备(例如,硬盘,软盘,磁条),光存储介质(例如,数字多功能盘(DVD)),智能卡,闪存设备,随机存取存储器(RAM),只读存储器(ROM),可编程ROM(PROM),可擦除PROM(EPROM),寄存器,以及它们的任意组合。通信接口140具体包括:发射电路142和接收电路146;用户设备110的存储器150中存储有应用程序121,应用程序121可被处理器执行,以实现特定业务功能。协议栈130通常由软件实现,例如以可执行程序的形式存储在存储器150中,被处理器执行以实 现数据处理、发送和接收。在某些场景下,协议栈130也可以由现场可编程门阵列(Field Programmable Gata Array,FPGA)或特定用途集成电路(Application Specific Integrated Circuit,ASIC)等硬件电路或专用芯片来实现。具体地,在一个实施例中,应用程序121在被处理器执行的过程中,一方面可以调用应用程序编程接口(API)将数据传递给协议栈130,协议栈130在接收到数据后,根据协议规范对数据进行封装等处理,然后通过系统函数调用内核中的硬件驱动程序,以驱动相关的硬件,比如发射电路142将数据包发送出去。另一方面接收电路146在接收到数据包之后,在硬件驱动程序的作用下会将接收事件上报给内核,内核会调用协议栈130对数据进行处理。其中,协议栈130的传输、接收及处理数据的过程请参见图3至图12所示实施例中发送节点的工作流程,不再赘述。进一步地,存储器150包括内存,该内存的全部或部分空间作为协议栈130的发送缓存。

另一方面,参见图2,本发明实施例还提供一种接收节点20,包括:协议栈21、处理器、通信接口和存储器(图中未示出),其中,通信接口具体包括:发射电路和接收电路;其中协议栈21、处理器、通信接口和存储器的具体形态与用户设备110的协议栈、处理器、通信接口和存储器类似,相关工作过程可以参照前述实施例的描述。进一步地,服务器20的协议栈21发送/接收、处理数据包的过程请参见图3至图12所示实施例中接收节点的工作流程,不再赘述。

本发明实施例还提供一种数据传送系统,如图13所示,包括:发送节点13 和接收节点23,其中,发送节点13和接收节点33上分别运行有应用程序131和应用程序22。

其中,发送节点13包括:发送单元133、处理单元132和接收单元131,其中,处理单元132用于将发送节点13上运行的应用程序的数据封装成多个数据包,发送单元133用于以初始传输速率通过向接收节点传输多个数据包,接收单元131用于接收来自接收节点23的丢包反馈信息,发送单元133还用于,基于接收到的丢包反馈信息重传丢失数据包;其中,重传的数据包携带有新的滚动序列号。接收节点23包括:发送单元231、处理单元232以及接收单元233,其中,接收单元233用于接收发送节点13以初始传输速率传输的多个数据包,处理单元232用于实现根据接收单元233接收到的数据包的滚动序列号检测出至少一个丢失数据包后,通过发送单元231向发送节点13发送丢包反馈信息,以指示发送节点13重传丢失数据包。需要说明的是,发送单元133、处理单元132和接收单元131还用于配合实现上述各方法实施例中发送节点的功能;发送单元133在处理单元132的控制下进行数据包的发送,接收单元131在处理单元132的控制下进行数据包的接收,处理单元132还用于根据接收到的控制包确定丢失数据包,并控制发送单元进行数据包重传,可选地,处理单元还可以根据接收单元131收到的控制包进行数据传输速率的调整。相应地,发送单元231、处理单元232以及接收单元233还用于配合实现上述各方法实施例中接收节点的功能,各单元的功能划分与发送节点13类似,或者采用其他本领域技术人员通 用的划分方式。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件(例如处理器)来完成,该程序可以存储于计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。本发明实施例所使用的术语“程序”应被广泛地解释为包括但不限于:指令,指令集,代码,代码段,子程序,软件模块,应用,软件包,线程,进程,函数,固件,中间件等。

以上对本发明实施例所提供的报文传输方法、系统及用户设备和服务器进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1