CN103428240B - 数据传输方法和数据传输终端 - Google Patents

数据传输方法和数据传输终端 Download PDF

Info

Publication number
CN103428240B
CN103428240B CN201210156136.2A CN201210156136A CN103428240B CN 103428240 B CN103428240 B CN 103428240B CN 201210156136 A CN201210156136 A CN 201210156136A CN 103428240 B CN103428240 B CN 103428240B
Authority
CN
China
Prior art keywords
tcp
packet loss
congestion window
data transmission
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201210156136.2A
Other languages
English (en)
Other versions
CN103428240A (zh
Inventor
王中飞
陈志武
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Tencent Computer Systems Co Ltd
Original Assignee
Shenzhen Tencent Computer Systems Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Tencent Computer Systems Co Ltd filed Critical Shenzhen Tencent Computer Systems Co Ltd
Priority to CN201210156136.2A priority Critical patent/CN103428240B/zh
Publication of CN103428240A publication Critical patent/CN103428240A/zh
Application granted granted Critical
Publication of CN103428240B publication Critical patent/CN103428240B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

一种数据传输方法,包括以下步骤:建立TCP连接;获取与所述TCP连接对应的接收端具有同源网络地址(IP)的TCP连接的网络特性数据;根据所述网络特性数据计算TCP拥塞窗口;根据所述TCP拥塞窗口与所述接收端进行数据传输。该数据传输方法可根据网络特性数据定制不同的拥塞策略,从而提高了数据传输速度。此外,还提供了一种数据传输终端。

Description

数据传输方法和数据传输终端
技术领域
本发明涉及数据传输技术领域,特别是涉及一种数据传输方法和数据传输终端。
背景技术
TCP(TransmissionControlProtocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。基于TCP的数据传输过程大概可以分为慢启动、拥塞避免、快速恢复和超时重传几个阶段。
具体的,TCP连接刚建立时处于慢启动状态,此时TCP的拥塞窗口以一个特定的值为初始值,每收到一个ACK(确认),则拥塞窗口就加一,这样,TCP的拥塞窗口会以指数的速度很快的增长到一个比较大的值。当拥塞窗口超过了设定的拥塞阈值,则TCP进入拥塞避免状态,在拥塞避免状态中,发送窗口中的所有包都收到ACK,则拥塞窗口加一,则拥塞窗口会以一个线性的速度缓慢增长。当在某一时刻出现了重复的ACK,意味着有些发送的包丢失,没能达到接收端,则TCP进入快速恢复状态,重传丢失的包,同时倍数降低TCP的拥塞窗口的值。当发出的全部的包在一定时间内都收到不到ACK的话,则认为进入了极度拥塞,TCP进入超时重传状态,则将TCP的拥塞窗口降为一,重传所有发出的包。
对于TCP短连接来说,整个连接一般会在慢启动阶段就结束;对于TCP长连接来说,整个数据传输过程会不断在以上几个阶段往复进行。
为了提高TCP数据传输的速度,传统的方法通常是增大拥塞窗口的初始值,或加快慢启动中拥塞窗口的增长速度,使得TCP能够更加快速的达到网络的最大容量。然而,传统的这种方法仅考虑拥塞窗口如何增长,比较单一。且对于一些下载类的长连接(如视频播放服务中,客户端需从视频服务器下载视频数据),仅仅加快慢启动中的拥塞窗口的增长速度并不能很好的提高TCP数据传输的速度。
发明内容
基于此,有必要提供一种能提高数据传输速度的数据传输方法。
一种数据传输方法,包括以下步骤:建立TCP连接;获取与所述TCP连接对应的接收端具有同源网络地址的TCP连接的网络特性数据;根据所述网络特性数据计算TCP拥塞窗口;根据所述TCP拥塞窗口与所述接收端进行数据传输。
在其中一个实施例中,所述获取与所述TCP连接对应的接收端具有同源网络地址的TCP连接的网络特性数据的步骤为:获取所述TCP连接对应的接收端的网络地址;从缓存中查询与所述网络地址对应的网络特性数据。
在其中一个实施例中,所述方法还包括:在所述TCP连接结束时获取所述TCP连接的网络特性数据和对应的接收端的网络地址,将所述获取的网络特性数据和所述网络地址对应更新至缓存中。
在其中一个实施例中,所述网络特性数据为丢包率和/或往返时延。
在其中一个实施例中,所述网络特性数据为丢包率,所述在所述TCP连接结束时获取所述TCP连接的网络特性数据和对应的接收端的网络地址,将所述获取的网络特性数据和所述网络地址对应更新至缓存中的步骤为:在所述TCP连接结束时获取所述TCP连接的丢包率和所述对应的接收端的网络地址,根据所述丢包率和历史丢包率,计算出新的丢包率并将其和对应的网络地址更新至缓存中。
在其中一个实施例中,所述网络特性数据为丢包率;所述根据网络特性数据计算TCP拥塞窗口的步骤包括:根据所述丢包率计算拥塞阈值,根据所述拥塞阈值和丢包率计算快速恢复阶段的TCP拥塞窗口;和/或,根据所述丢包率计算超时重传阶段的TCP拥塞窗口的初始值;和/或,根据所述丢包率计算拥塞阈值,根据所述丢包率和拥塞阈值计算慢启动阶段的TCP拥塞窗口的初始值。
在其中一个实施例中,所述拥塞阈值、所述快速恢复阶段的TCP拥塞窗口的下降速度、所述超时重传阶段的TCP拥塞窗口的初始值和所述慢启动阶段的TCP拥塞窗口的初始值分别与所述丢包率成反比。
此外,还有必要提供一种能提高数据传输速度的数据传输终端。
一种数据传输终端,包括:TCP连接建立模块,用于与接收端建立TCP连接;数据获取模块,用于获取与所述TCP连接对应的接收端具有同源网络地址的TCP连接的网络特性数据;数据处理模块,用于根据所述网络特性数据计算TCP拥塞窗口;数据传输模块,用于根据所述TCP拥塞窗口与所述接收端进行数据传输。
在其中一个实施例中,所述数据传输终端为视频服务器,所述接收端为视频客户端;所述数据传输模块用于根据所述TCP拥塞窗口与所述视频客户端进行视频数据的传输。
在其中一个实施例中,所述数据获取模块包括:网络地址获取模块,用于获取与所述TCP连接对应的接收端的网络地址;数据查询模块,用于从缓存中查询与所述网络地址对应的网络特性数据。
在其中一个实施例中,所述数据传输终端还包括:缓存更新模块,用于在所述TCP连接结束时获取所述TCP连接的网络特性数据和对应的接收端的网络地址,将所述获取的网络特性数据和所述网络地址对应更新至缓存中。
在其中一个实施例中,所述网络特性数据为丢包率和/或往返时延。
在其中一个实施例中,所述网络特性数据为丢包率,所述缓存更新模块用于在所述TCP连接结束时获取所述TCP连接的丢包率和所述对应的接收端的网络地址,根据所述丢包率和历史丢包率,计算出新的丢包率并将其和对应的网络地址更新至缓存中。
在其中一个实施例中,所述网络特性数据为丢包率;所述数据处理模块包括:拥塞阈值计算模块,用于根据所述丢包率计算拥塞阈值;和第一拥塞窗口计算模块,用于根据所述拥塞阈值和丢包率计算快速恢复阶段的TCP拥塞窗口;和/或,第二拥塞窗口计算模块,用于根据所述丢包率计算超时重传阶段的TCP拥塞窗口的初始值;和/或,第三拥塞窗口计算模块,用于根据所述丢包率和拥塞阈值计算慢启动阶段的拥塞窗口的初始值。
在其中一个实施例中,所述拥塞阈值、所述快速恢复阶段的TCP拥塞窗口的下降速度、所述超时重传阶段的TCP拥塞窗口的初始值和所述慢启动阶段的TCP拥塞窗口的初始值分别与所述丢包率成反比。
上述数据传输方法和数据传输终端,通过获取TCP连接对应的接收端具有同源网络地址的TCP连接的网络特性数据,根据该网络特性数据计算TCP拥塞窗口,以及根据计算的TCP拥塞窗口进行数据传输,实现了针对不同的TCP连接的网络特性定制不同的拥塞策略,对于拥有不同网络质量的TCP连接,可以按照不同的拥塞策略进行数据传输,因此能够有效提高数据传输速度。
附图说明
图1为一个实施例中的数据传输方法的流程示意图;
图2为一个实施例中的数据传输终端的结构框图;
图3为一个实施例中的数据获取模块的结构框图;
图4为一个实施例中的数据处理模块的结构框图;
图5为另一个实施例中的数据处理模块的结构框图;
图6为又一个实施例中的数据处理模块的结构框图;
图7为一个实施例中的数据传输终端的应用示意图。
具体实施方式
如图1所示,在一个实施例中,一种数据传输方法,包括以下步骤:
步骤S102,建立TCP连接。
步骤S104,获取与所述TCP连接对应的接收端具有同源网络地址(IP)的TCP连接的网络特性数据。
进行数据传输的两个终端(发送端和接收端)之间建立TCP连接。当发送端需将数据发送到接收端时,发送端与接收端建立TCP连接后,获取对应的接收端的网络特性数据。具体的,网络特性数据为与接收端具有同源网络地址(IP)的TCP连接的历史网络特性数据。
在一个实施例中,步骤S104的具体过程为:获取TCP连接对应的接收端的网络地址(IP),从缓存中查询与网络地址(IP)对应的网络特性数据。
本实施例中,缓存中预先存储了与网络地址对应的网络特性数据,该网络特性数据为与接收端具有同源网络地址(IP)的历史网络特性数据,也是缓存中上一次更新的接收端的网络特性数据。由于具有同源网络地址(IP)的TCP连接尽管是来自不同的接收端,在短时间内网络不会产生较大波动,因此具有同源网络地址(IP)的TCP连接网络特性基本一致,可表征当前的TCP连接的网络特性。
步骤S106,根据网络特性数据计算TCP拥塞窗口。
步骤S108,根据计算的TCP拥塞窗口与接收端进行数据传输。
具体的,所计算的TCP拥塞窗口包括TCP传输的不同阶段的TCP拥塞窗口。优选的,可计算快速恢复阶段的TCP拥塞窗口,使得快速恢复阶段的TCP拥塞窗口可以根据网络特性进行不同比例的下降,相对于传统的按照固定比例下降快速恢复阶段的TCP拥塞窗口的方式,可以更有效提高数据传输速度。
本实施例中,根据网络特性数据计算计算TCP拥塞窗口,以及根据计算的TCP拥塞窗口进行数据传输,实现了针对不同的TCP连接的网络特性定制不同的拥塞策略,对于拥有不同网络质量的TCP连接,可以按照不同的拥塞策略进行数据传输,因此能够有效提高数据传输速度。
在一个实施例中,所述的网络特性数据可以为丢包率和/或往返时延。由于丢包率和/或往返时延可以很好的反应网络质量的好坏,根据丢包率和/或往返时延来计算TCP拥塞窗口,可以实现根据不同的网络特性定制TCP传输中不同的拥塞策略。
在一个实施例中,网络特性数据为丢包率。本实施例中,上述步骤S106具体可包括:根据丢包率计算拥塞阈值;根据该拥塞阈值和丢包率计算快速恢复阶段的TCP拥塞窗口。
优选的,所计算的拥塞阈值和快速恢复阶段的TCP拥塞窗口的下降速度分别与丢包率成反比。
进一步的,可按照如下公式计算拥塞阈值:
ssthresh=max(old_ssthresh,(MAX_SSTHRESH-loss_rate<<1))
其中,ssthresh为本次计算得到的拥塞阈值,old_ssthresh是上一次计算得到的拥塞阈值,MAX_SSTHRESH为预设的最大拥塞阈值,loss_rate为从缓存中查询得到的丢包率,loss_rate<<1表示将loss_rate向右移动1位,max表示取其中的最大值。优选的,可预先设定最大拥塞阈值为60。
从上述公式可知,拥塞阈值在计算过程中是一个动态变化的值,根据该拥塞阈值和丢包率来计算快速恢复阶段的TCP拥塞窗口,可使得快速恢复阶段的TCP拥塞窗口与丢包率成反比,并可按照一定的计算结果进行下降。
进一步的,可按照如下公式计算快速恢复阶段的TCP拥塞窗口:
snd_cwnd=max(ssthresh*(100-(loss_rate<<2<80?loss_rate<<2:80))/100,packets_in_flight+1)
其中,snd_cwnd为本次计算得到的TCP拥塞窗口,ssthresh为本次计算得到的拥塞阈值,loss_rate为从缓存中查询得到的丢包率,packets_in_flight为在网络中传输但并未真正到达对端的数据包的个数,loss_rate<<2<80?loss_rate<<2:80表示判断将loss_rate向右移动2位后的值是否小于80,若是,则为loss_rate<<2(即将loss_rate向右移动2位后的值),否则为80。
传统的数据传输方法在进入快速恢复阶段后,往往会按照某个固定比例(如0.5、0.7的比例)倍数降低TCP拥塞窗口,这种方式会使得TCP拥塞窗口很快下降到很低,从而影响了数据包的发送速度和数据包发送速度的恢复。
本实施例中,快速恢复阶段的TCP拥塞窗口可以根据每次计算得到的拥塞阈值进行动态下降,而快速恢复阶段的TCP拥塞窗口又参考了丢包率进行计算,使得快速恢复阶段的TCP拥塞窗口的下降比例不会按照某个固定比例突然下降到很低,而是拥有不同丢包率的TCP连接会按照不同的比例合理的下降TCP拥塞窗口。这种TCP拥塞窗口的下降方式对数据包的发送速度影响非常小,且能更加快速地恢复数据包的发送速度,因此能够有效提高数据传输速度。
在一个实施例中,上述步骤S106具体还可包括:根据丢包率计算超时重传阶段的TCP拥塞窗口的初始值。
优选的,所计算的超时重传阶段的TCP拥塞窗口的初始值与丢包率成反比。
进一步的,可按照如下公式计算超时重传阶段的TCP拥塞窗口的初始值:
loss_cwnd=min(MAX_LOSS_CWND,max(MIN_LOSS_CWND,(10-loss_rate)))
其中,loss_cwnd为超时重传阶段的TCP拥塞窗口的初始值,MIN_LOSS_CWND为预设的最小初始值,MAX_LOSS_CWND为预设的最大初始值,loss_rate为从缓存中查询得到的丢包率。优选的,可预先设定最小初始值为4,最大初始值为10。
传统的数据传输方法,在进入超时重传阶段后,TCP拥塞窗口的初始值通常降至为一,这样,重传所有发出去的数据包时,TCP拥塞窗口需要从一开始增长,影响了数据包发送速度的恢复。
本实施例中,超时重传阶段的TCP拥塞窗口的初始值可根据每次在缓存中更新的丢包率进行动态调整,所计算得到的超时重传阶段的TCP拥塞窗口的初始值并不都为一,而是适应不同的接收端的网络特性。因此在数据传输过程中的超时重传阶段,TCP拥塞窗口会从一个较大的值进行增长,从而加快了数据包发送速度的恢复。
在一个实施例中,上述步骤S106还可包括:根据丢包率和拥塞阈值计算慢启动阶段的TCP拥塞窗口的初始值。
优选的,慢启动阶段的TCP拥塞窗口的初始值与丢包率成反比。
进一步的,可按照如下公式计算慢启动阶段的TCP拥塞窗口的初始值:
init_cwnd=max(MIN_INIT_CWND,min(MAX_INIT_CWND,ssthresh>>1))
其中,MIN_INIT_CWND是预设的最小初始值,MAX_INIT_CWND是预设的最大初始值,ssthresh是上述计算得到的拥塞阈值,ssthresh>>1表示将ssthresh向左移动1位。优选的,可预先设定最小初始值为1,最大初始值为20。
本实施例中,根据丢包率和拥塞阈值计算慢启动阶段的TCP拥塞窗口的初始值,使得慢启动的TCP拥塞窗口的初始值可以适应不同的网络质量,使得进入慢启动阶段后的TCP拥塞窗口更够以一个更合理的值进行增长,相对于传统的以固定的预设值进行增长的方式,能够提高数据包的发送速度。
应当说明的是,上述数据传输方法,可以按照上述方式同时计算快速恢复阶段的TCP拥塞窗口、超时重传阶段的TCP拥塞窗口的初始值和慢启动阶段的TCP拥塞窗口的初始值。也可以仅计算其中的一种或两种。
在一个实施例中,上述数据传输方法还包括:在TCP连接结束时获取TCP连接的网络特性数据和对应的接收端的网络地址,将获取的网络特性数据和网络地址对应更新至缓存中。
进一步的,网络特性数据为丢包率,在根据丢包率计算得到上述拥塞阈值、快速恢复阶段的TCP拥塞窗口、超时重传阶段的TCP拥塞窗口的初始值和/或慢启动阶段的TCP拥塞窗口的初始值之后,可将丢包率和接收端的网络地址对应更新至缓存中,替换上一次存储的丢包率,以便下一次查询与该网络地址对应的最新的丢包率。
在一个实施例中,网络特性数据为丢包率,还可在所述TCP连接结束时获取所述TCP连接的丢包率和所述对应的接收端的网络地址,根据所述丢包率和历史丢包率,计算出新的丢包率并将其和对应的网络地址更新至缓存中。
具体的,可对当前从缓存中查询到的丢包率进行变换后再与网络地址对应更新至缓存中。优选的,可按照如下公式对丢包率进行变换:
new_loss_rate=0.8*loss_rate+0.2*current_loss_rate
其中,new_loss_rate为变换后的应更新到缓存中的丢包率,loss_rate为从缓存中查询到的上一次存储的丢包率,current_loss_rate为本次整个TCP连接完成时获取的本次TCP连接的丢包率。
本实施例中,将缓存中存储的丢包率进行变换后再更新至缓存中,可以确保缓存中存储的丢包率能够正确表达最近的丢包率,使得下一次计算拥塞窗口时更能符合当前的网络特性。
上述数据传输方法特别适用于视频播放应用中,在视频播放应用中,视频服务器和视频客户端进行数据交互。当视频客户端播放一个视频时,视频服务器通常会将视频切成多段较短的视频。当视频客户端播放完上一段视频后,则会马上发起一个新的TCP连接,从视频服务器下载下一段视频。由于具有同源网络地址(IP)的TCP连接来自同一台视频客户端设备,短时间内网络播放不会太大,所以网络地址相同,则TCP连接网络特性基本一致。
在视频服务器中设有缓存用于存储每次TCP连接完成后更新的丢包率。视频服务器与视频客户端建立TCP连接后,视频服务器会获取该TCP连接对应的视频客户端具有同源网络地址的TCP连接的网络特性数据。具体的,可从缓存中获取对应视频客户端的网络地址的丢包率,根据该丢包率计算TCP拥塞窗口,然后根据计算的TCP拥塞窗口与视频客户端进行数据传输。
由于丢包率能够很好的反映视频服务器与视频客户端之间的网络质量的好坏,根据丢包率计算的TCP拥塞窗口能够以更加合理的在快速恢复阶段下降拥塞窗口,且可拥有更适应网络特性的慢启动阶段的TCP拥塞窗口的初始值和超时重传阶段的TCP拥塞窗口的初始值,因此能够提高视频服务器向视频客户端发送视频数据的速度以及视频数据发送速度的恢复,也即提高了视频客户端下载视频的速度。
如图2所示,在一个实施例中,一种数据传输终端,包括TCP连接建立模块100、数据获取模块200、数据处理模块300和数据传输模块400,其中:
TCP连接建立模块100用于与接收端建立TCP连接。
数据获取模块200用于获取与TCP连接对应的接收端具有同源网络地址(IP)的TCP连接的网络特性数据。
数据处理模块300用于根据网络特性数据计算TCP拥塞窗口。
数据传输模块400用于根据TCP拥塞窗口与接收端进行数据传输。
本实施例中,数据传输终端作为发送端与接收端建立TCP连接,上述获取的网络特性数据可为与接收端具有同源网络地址(IP)的TCP连接的历史网络特性数据。
本实施例中,根据网络特性数据计算计算TCP拥塞窗口,以及根据计算的TCP拥塞窗口进行数据传输,实现了针对不同的TCP连接的网络特性定制不同的拥塞策略,对于拥有不同网络质量的TCP连接,可以按照不同的拥塞策略进行数据传输,因此能够有效提高数据传输速度。
在一个实施例中,如图3所示,数据获取模块200包括网络地址获取模块210和数据查询模块220,其中:
网络地址获取模块210用于获取与TCP连接对应的接收端的网络地址。
数据查询模块220用于从缓存中查询与网络地址对应的网络特性数据。
本实施例中,数据传输终端设有缓存(图中未示出),缓存中预先存储了与网络地址(IP)对应的网络特性数据,该网络特性数据为与接收端具有同源网络地址(IP)的历史网络特性数据,也是缓存中上一次更新的接收端的网络特性数据。由于具有同源网络地址(IP)的TCP连接尽管是来自不同的接收端,在短时间内网络不会产生较大波动,因此具有同源网络地址(IP)的TCP连接网络特性基本一致,可表征当前的TCP连接的网络特性。
在一个实施例中,所述的网络特性数据可以为丢包率和/或往返时延。由于丢包率和/或往返时延可以很好的反应网络质量的好坏,根据丢包率和/或往返时延来计算TCP拥塞窗口,可以实现根据不同的网络特性定制TCP传输中不同的拥塞策略。
在一个实施例中,网络特性数据为丢包率。如图4所示,数据处理模块300可包括拥塞阈值计算模块310和第一拥塞窗口计算模块320,其中:
拥塞阈值计算模块310用于根据丢包率计算拥塞阈值。
第一拥塞窗口计算模块320用于根据拥塞阈值和丢包率计算快速恢复阶段的TCP拥塞窗口。
优选的,拥塞阈值和快速恢复阶段的TCP拥塞窗口的下降速度分别与丢包率成反比。
进一步的,拥塞阈值计算模块310可用于按照如下公式计算拥塞阈值:
ssthresh=max(old_ssthresh,(MAX_SSTHRESH-loss_rate<<1))
其中,ssthresh为本次计算得到的拥塞阈值,old_ssthresh是上一次计算得到的拥塞阈值,MAX_SSTHRESH为预设的最大拥塞阈值,loss_rate为从缓存中查询得到的丢包率,loss_rate<<1表示将loss_rate向右移动1位,max表示取其中的最大值。优选的,可预先设定最大拥塞阈值为60。
进一步的,第一拥塞窗口计算模块320可用于按照如下公式计算快速恢复阶段的TCP拥塞窗口:
snd_cwnd=max(ssthresh*(100-(loss_rate<<2<80?loss_rate<<2:80))/100,packets_in_flight+1)
其中,snd_cwnd为本次计算得到的TCP拥塞窗口,ssthresh为本次计算得到的拥塞阈值,loss_rate为从缓存中查询得到的丢包率,packets_in_flight为在网络中传输但并未真正到达对端的数据包的个数,loss_rate<<2<80?loss_rate<<2:80表示判断将loss_rate向右移动2位后的值是否小于80,若是,则为loss_rate<<2(即将loss_rate向右移动2位后的值),否则为80。
本实施例中,快速恢复阶段的TCP拥塞窗口可以根据每次计算得到的拥塞阈值进行动态下降,而快速恢复阶段的TCP拥塞窗口又参考了丢包率进行计算,使得快速恢复阶段的TCP拥塞窗口的下降比例不会按照某个固定比例突然下降到很低,而是拥有不同丢包率的TCP连接会按照不同的比例合理的下降TCP拥塞窗口。这种TCP拥塞窗口的下降方式对数据包的发送速度影响非常小,且能更加快速地恢复数据包的发送速度,因此能够有效提高数据传输速度。
在另一个实施例中,如图5所示,数据处理模块300还可包括第二拥塞窗口计算模块330,其中:
第二拥塞窗口计算模块330用于根据丢包率计算超时重传阶段的TCP拥塞窗口的初始值。
优选的,该超时重传阶段的TCP拥塞窗口的初始值与丢包率成反比。
进一步的,第二拥塞窗口计算模块330可用于按照如下公式计算超时重传阶段的TCP拥塞窗口的初始值:
loss_cwnd=min(MAX_LOSS_CWND,max(MIN_LOSS_CWND,(10-loss_rate)))
其中,loss_cwnd为超时重传阶段的TCP拥塞窗口的初始值,MIN_LOSS_CWND为预设的最小初始值,MAX_LOSS_CWND为预设的最大初始值,loss_rate为从缓存中查询得到的丢包率。优选的,可预先设定最小初始值为4,最大初始值为10。
本实施例中,超时重传阶段的TCP拥塞窗口的初始值可根据每次在缓存中更新的丢包率进行动态调整,所计算得到的超时重传阶段的TCP拥塞窗口的初始值并不都为一,而是适应不同的接收端的网络特性。因此在数据传输过程中的超时重传阶段,TCP拥塞窗口会从一个较大的值进行增长,从而加快了数据包发送速度的恢复。
在另一个实施例中,如图6所示,数据处理模块300还可包括第三拥塞窗口计算模块340,其中:
第三拥塞窗口计算模块340用于根据丢包率和拥塞阈值计算慢启动阶段的拥塞窗口的初始值。
优选的,慢启动阶段的TCP拥塞窗口的初始值与丢包率成反比。
进一步的,第三拥塞窗口计算模块340可用于按照如下公式计算慢启动阶段的TCP拥塞窗口的初始值:
init_cwnd=max(MIN_INIT_CWND,min(MAX_INIT_CWND,ssthresh>>1))
其中,MIN_INIT_CWND是预设的最小初始值,MAX_INIT_CWND是预设的最大初始值,ssthresh是上述计算得到的拥塞阈值,ssthresh>>1表示将ssthresh向左移动1位。优选的,可预先设定最小初始值为1,最大初始值为20。
本实施例中,根据丢包率和拥塞阈值计算慢启动阶段的TCP拥塞窗口的初始值,使得慢启动的TCP拥塞窗口的初始值可以适应不同的网络质量,使得进入慢启动阶段后的TCP拥塞窗口更够以一个更合理的值进行增长,相对于传统的以固定的预设值进行增长的方式,能够提高数据包的发送速度。
在其他实施例中,数据处理模块300还可仅包括拥塞阈值计算模块310、第一拥塞窗口计算模块320和第三拥塞窗口计算模块340。可以理解的,数据处理模块300还可仅包含第二拥塞窗口计算模块330,或者仅包含拥塞阈值计算模块310和第三拥塞窗口计算模块340。
在一个实施例中,上述数据传输终端还可包括缓存更新模块(图中未示出),该缓存更新模块用于在TCP连接结束时获取TCP连接的网络特性数据和对应的接收端的网络地址,将获取的网络特性数据和网络地址对应更新至缓存中。
进一步的,网络特性数据为丢包率,在数据处理模块300计算得到上述拥塞阈值、快速恢复阶段的TCP拥塞窗口、超时重传阶段的TCP拥塞窗口的初始值和/或慢启动阶段的TCP拥塞窗口的初始值之后,缓存更新模块可将丢包率和接收端的网络地址对应更新至缓存中,替换上一次存储的丢包率,以便数据查询模块220下一次查询与该网络地址对应的最新的丢包率。
在一个实施例中,网络特性数据为丢包率,缓存更新模块用于在所述TCP连接结束时获取所述TCP连接的丢包率和所述对应的接收端的网络地址,根据所述丢包率和历史丢包率,计算出新的丢包率并将其和对应的网络地址更新至缓存中。
具体的,缓存更新模块用于对当前从缓存中查询到的丢包率进行变换后再与网络地址对应更新至缓存中。优选的,缓存更新模块可用于按照如下公式对丢包率进行变换:
new_loss_rate=0.8*loss_rate+0.2*current_loss_rate
其中,new_loss_rate为变换后的应更新到缓存中的丢包率,loss_rate为从缓存中查询到的上一次存储的丢包率,current_loss_rate为本次整个TCP连接完成时获取的本次TCP连接的丢包率。
本实施例中,缓存更新模块将缓存中存储的丢包率进行变换后再更新至缓存中,可以确保缓存中存储的丢包率能够正确表达最近的丢包率,使得数据处理模块300下一次计算拥塞窗口时更能符合当前的网络特性。
在一个实施例中,上述数据传输终端可适用于视频播放应用中。如图7所示,本实施例中,数据传输终端为视频服务器,接收端为视频客户端,数据传输模块400用于根据数据处理模块300计算的TCP拥塞窗口与视频客户端进行视频数据的传输。
本实施例中,视视频服务器用于向视频客户端提供视频数据,供视频客户端下载并播放。视频服务器通常会将某个视频且成多段较短的视频。当视频客户端播放完上一段视频后,则会马上发起一个新的TCP连接,从视频服务器下载下一段视频。由于具有同源网络地址(IP)的TCP连接来自同一台视频客户端设备,短时间内网络播放不会太大,所以网络地址相同,则TCP连接网络特性基本一致。
在视频服务器中设有缓存用于存储每次TCP连接完成后更新的丢包率。视频服务器包含上述TCP连接建立模块100、数据获取模块200、数据处理模块300和数据传输模块400。视频服务器通过TCP连接建立模块100与视频客户端建立TCP连接后,视频服务器通过数据获取模块200获取该TCP连接对应的视频客户端的网络特性数据。具体的,数据获取模块200可从缓存中获取对应视频客户端的网络地址的丢包率,则数据处理模块300根据该丢包率计算TCP拥塞窗口,然后数据传输模块400根据计算的TCP拥塞窗口与视频客户端进行数据传输。
由于丢包率能够很好的反映视频服务器与视频客户端之间的网络质量的好坏,根据丢包率计算的TCP拥塞窗口能够以更加合理的在快速恢复阶段下降拥塞窗口,且可拥有更适应网络特性的慢启动阶段的TCP拥塞窗口的初始值和超时重传阶段的TCP拥塞窗口的初始值,因此能够提高视频服务器向视频客户端发送视频数据的速度以及视频数据发送速度的恢复,也即提高了视频客户端下载视频的速度,可以实现拥有不同网络质量的视频客户端具有不同的视频下载速度和在线播放速度,更加符合用户的体验需求。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (13)

1.一种数据传输方法,包括以下步骤:
建立TCP连接;
获取与所述TCP连接对应的接收端的网络地址,从缓存中查询与所述网络地址对应的网络特性数据,所述网络特性数据为与接收端具有同源网络地址的TCP连接的历史网络特性数据,所述历史网络特性数据包括缓存中上一次更新的接收端的网络特性数据;
根据所述网络特性数据计算TCP拥塞窗口;
根据所述TCP拥塞窗口与所述接收端进行数据传输。
2.根据权利要求1所述的数据传输方法,其特征在于,所述方法还包括:在所述TCP连接结束时获取所述TCP连接的网络特性数据和对应的接收端的网络地址,将所述获取的网络特性数据和所述网络地址对应更新至缓存中。
3.根据权利要求1或2所述的数据传输方法,其特征在于,所述网络特性数据为丢包率和/或往返时延。
4.根据权利要求3所述的数据传输方法,其特征在于,所述网络特性数据为丢包率,所述在所述TCP连接结束时获取所述TCP连接的网络特性数据和对应的接收端的网络地址,将所述获取的网络特性数据和所述网络地址对应更新至缓存中的步骤为:在所述TCP连接结束时获取所述TCP连接的丢包率和所述对应的接收端的网络地址,根据所述丢包率和历史丢包率,计算出新的丢包率并将其和对应的网络地址更新至缓存中。
5.根据权利要求3所述的数据传输方法,其特征在于,所述网络特性数据为丢包率;所述根据网络特性数据计算TCP拥塞窗口的步骤包括:
根据所述丢包率计算拥塞阈值,根据所述拥塞阈值和丢包率计算快速恢复阶段的TCP拥塞窗口;
和/或,
根据所述丢包率计算超时重传阶段的TCP拥塞窗口的初始值;
和/或,
根据所述丢包率计算拥塞阈值,根据所述丢包率和拥塞阈值计算慢启动阶段的TCP拥塞窗口的初始值。
6.根据权利要求5所述的数据传输方法,其特征在于,所述拥塞阈值、所述快速恢复阶段的TCP拥塞窗口的下降速度、所述超时重传阶段的TCP拥塞窗口的初始值和所述慢启动阶段的TCP拥塞窗口的初始值分别与所述丢包率成反比。
7.一种数据传输终端,其特征在于,包括:
TCP连接建立模块,用于与接收端建立TCP连接;
网络地址获取模块,用于获取与所述TCP连接对应的接收端的网络地址;
数据查询模块,用于从缓存中查询与所述网络地址对应的网络特性数据,所述网络特性数据为与接收端具有同源网络地址的TCP连接的历史网络特性数据,所述历史网络特性数据包括缓存中上一次更新的接收端的网络特性数据;
数据处理模块,用于根据所述网络特性数据计算TCP拥塞窗口;
数据传输模块,用于根据所述TCP拥塞窗口与所述接收端进行数据传输。
8.根据权利要求7所述的数据传输终端,其特征在于,所述数据传输终端为视频服务器,所述接收端为视频客户端;
所述数据传输模块用于根据所述TCP拥塞窗口与所述视频客户端进行视频数据的传输。
9.根据权利要求7所述的数据传输终端,其特征在于,所述数据传输终端还包括:
缓存更新模块,用于在所述TCP连接结束时获取所述TCP连接的网络特性数据和对应的接收端的网络地址,将所述获取的网络特性数据和所述网络地址对应更新至缓存中。
10.根据权利要求7至9任一项所述的数据传输终端,其特征在于,所述网络特性数据为丢包率和/或往返时延。
11.根据权利要求10所述的数据传输终端,其特征在于,所述网络特性数据为丢包率,所述缓存更新模块用于在所述TCP连接结束时获取所述TCP连接的丢包率和所述对应的接收端的网络地址,根据所述丢包率和历史丢包率,计算出新的丢包率并将其和对应的网络地址更新至缓存中。
12.根据权利要求10所述的数据传输终端,其特征在于,所述网络特性数据为丢包率;所述数据处理模块包括:
拥塞阈值计算模块,用于根据所述丢包率计算拥塞阈值;和
第一拥塞窗口计算模块,用于根据所述拥塞阈值和丢包率计算快速恢复阶段的TCP拥塞窗口;
和/或,
第二拥塞窗口计算模块,用于根据所述丢包率计算超时重传阶段的TCP拥塞窗口的初始值;
和/或,
第三拥塞窗口计算模块,用于根据所述丢包率和拥塞阈值计算慢启动阶段的拥塞窗口的初始值。
13.根据权利要求12所述的数据传输终端,其特征在于,所述拥塞阈值、所述快速恢复阶段的TCP拥塞窗口的下降速度、所述超时重传阶段的TCP拥塞窗口的初始值和所述慢启动阶段的TCP拥塞窗口的初始值分别与所述丢包率成反比。
CN201210156136.2A 2012-05-18 2012-05-18 数据传输方法和数据传输终端 Active CN103428240B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210156136.2A CN103428240B (zh) 2012-05-18 2012-05-18 数据传输方法和数据传输终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210156136.2A CN103428240B (zh) 2012-05-18 2012-05-18 数据传输方法和数据传输终端

Publications (2)

Publication Number Publication Date
CN103428240A CN103428240A (zh) 2013-12-04
CN103428240B true CN103428240B (zh) 2016-06-22

Family

ID=49652414

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210156136.2A Active CN103428240B (zh) 2012-05-18 2012-05-18 数据传输方法和数据传输终端

Country Status (1)

Country Link
CN (1) CN103428240B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105207949B (zh) * 2014-06-12 2018-06-26 中国移动通信集团内蒙古有限公司 一种tcp优化方法和系统、sp服务器
CN105988948B (zh) * 2015-02-13 2019-02-12 浙江大华技术股份有限公司 一种数据传输的方法及设备
CN107872820B (zh) * 2016-11-22 2020-12-04 中国移动通信集团湖南有限公司 Epc网络数据处理方法、装置及epc网络
CN107302533A (zh) * 2017-06-19 2017-10-27 网宿科技股份有限公司 流媒体直播方法、系统及装置
CN108111430B (zh) * 2017-12-22 2022-02-25 北京百度网讯科技有限公司 一种tcp初始窗口优化方法和系统
CN108199814B (zh) * 2018-01-17 2020-08-07 中车青岛四方机车车辆股份有限公司 数据传输方法及装置
CN108306828A (zh) * 2018-01-24 2018-07-20 广东睿江云计算股份有限公司 一种利用拥塞控制数据列表优化tcp连接的方法及装置
CN108965150B (zh) * 2018-07-27 2021-11-16 广东电网有限责任公司 具有直接加速框架的数据传输系统
CN114007246B (zh) * 2021-10-29 2024-02-02 北京天融信网络安全技术有限公司 减少网络拥塞的方法、装置、计算机设备和介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101867512A (zh) * 2010-04-15 2010-10-20 华为技术有限公司 数据传输控制方法和装置
CN101982951A (zh) * 2010-11-19 2011-03-02 华为技术有限公司 数据传输控制方法和中间节点

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101867512A (zh) * 2010-04-15 2010-10-20 华为技术有限公司 数据传输控制方法和装置
CN101982951A (zh) * 2010-11-19 2011-03-02 华为技术有限公司 数据传输控制方法和中间节点

Also Published As

Publication number Publication date
CN103428240A (zh) 2013-12-04

Similar Documents

Publication Publication Date Title
CN103428240B (zh) 数据传输方法和数据传输终端
US10367922B2 (en) Method and apparatus for sending transmission control protocol TCP data packet and system
CN105357592B (zh) 一种流媒体自适应传输选择性丢帧方法
JP5020076B2 (ja) 低頻度ackのシステムに適した高性能tcp
CN106385374B (zh) 一种局域网发送端的缓解网络拥塞的传输控制方法及系统
US8843654B2 (en) Data packet transfer over wide area network in fast and reliable manner
KR102061772B1 (ko) 데이터 전송 방법 및 장치
US9325628B2 (en) Packet handling method, forwarding device and system
US20210067457A1 (en) Transmission control method and apparatus
CN109698797B (zh) 一种tcp拥塞控制方法和装置
CN103269260A (zh) 数据传输方法、数据接收端、数据发送端和数据传输系统
CN103929370A (zh) 一种用于带宽预留网络的tcp拥塞控制方法
CN112821992B (zh) 数据传输方法、装置、电子设备和存储介质
WO2017114231A1 (zh) 一种报文发送方法、tcp代理以及tcp客户端
JP2015057890A (ja) コンテンツ配信システム、コンテンツ配信方法及びプログラム
CN111131179B (zh) 业务处理方法、装置、网络设备及存储介质
CN101969432B (zh) 基于随机回退的tcp拥塞窗口的控制方法
JP4504972B2 (ja) ネットワークにおけるサービスの品質を保証する方法
CN113424578A (zh) 一种传输控制协议加速方法和装置
CN115189809B (zh) 基于qoe的异构网络实时视频传输arq与fec模式选择方法
Sjani et al. Reducing multimedia transmission delay by shortening TCP acknowledgement route
Choi RATE CONTROL OF REALTIME STREAMING APPLICATIONS IN WIRELESS NETWORKS
Hindawi et al. A proposed method for TCP congestion control using AIMD approach
CN116131923A (zh) 一种基于卫星通信的数据传输方法、装置及存储介质
Tanaka et al. Pulsed ACK: Improving robustness of TCP for asymmetric bandwidth

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant