CN101951370B - 基于udp的文件可靠传输方法 - Google Patents

基于udp的文件可靠传输方法 Download PDF

Info

Publication number
CN101951370B
CN101951370B CN 201010284120 CN201010284120A CN101951370B CN 101951370 B CN101951370 B CN 101951370B CN 201010284120 CN201010284120 CN 201010284120 CN 201010284120 A CN201010284120 A CN 201010284120A CN 101951370 B CN101951370 B CN 101951370B
Authority
CN
China
Prior art keywords
data packets
small data
buffering area
transmission
confirmation
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
CN 201010284120
Other languages
English (en)
Other versions
CN101951370A (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.)
Beijing Shenzhou Taiyue Software Co Ltd
Original Assignee
Beijing Shenzhou Taiyue Software 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 Beijing Shenzhou Taiyue Software Co Ltd filed Critical Beijing Shenzhou Taiyue Software Co Ltd
Priority to CN 201010284120 priority Critical patent/CN101951370B/zh
Publication of CN101951370A publication Critical patent/CN101951370A/zh
Application granted granted Critical
Publication of CN101951370B publication Critical patent/CN101951370B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

本发明公开了一种基于UDP的文件可靠传输方法,包括:发送方将要发送的数据包分割成大小相同的若干小数据包;将所述小数据包放入发送缓冲区,并发送;接收方接收到小数据包后向发送方发送对该小数据包的确认应答;发送方接收所述确认应答后将该确认应答对应的小数据包从所述发送缓冲区中删除,若未接收到所述确认应答,则向接收方重发该确认应答对应的小数据包,还公开了一种基于UDP的文件可靠传输系统,包括:数据包分割模块、发送模块、接收模块、重发模块和发送缓冲区判断模块。本发明使得在UDP传输过程中不丢包,提高了传输的效率和传输稳定性。

Description

基于UDP的文件可靠传输方法
技术领域
本发明涉及计算机通信技术领域,特别涉及一种基于UDP的文件可靠传输方法。
背景技术
计算机网络技术是通信技术与计算机技术相结合的产物。近年来,计算机网络通信在人们的日常生活中有着越来越重要的地位,用户可以在计算机网络上进行文字、声音和视频的交流,共享文件、图片和视频信息等,从而方便用户的生活、工作和学习。在使用计算机网络进行沟通交流的过程中,服务器压力非常巨大,为了降低服务器的压力,文件传输及音视频传输常采用点对点(peer to peer,P2P)的传输方式。如果两个节点间存在网络地址转换(Network AddressTranslation ,Nat)设备,就会给传输造成很大障碍,因此需要在Nat设备之间建立通路。通路建立成功后,需要用用户数据报协议(UserDatagram Protocol,UDP)传输数据,众所周知,UDP协议本身是不可靠的,在传输过程中会发生丢包现象,使传输不稳定,效率低。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何在Nat设备之间建立通路后,使用该通路的UDP传输过程不丢包,传输更稳定、更高效。
(二)技术方案
为解决上述技术问题,本发明提出了一种基于UDP的文件可靠传输方法,在网络地址转换Nat设备之间建立通路后,所述方法包括以下步骤:
S1:发送方将要发送的数据包分割成大小相同的若干小数据包;
S2:将所述小数据包存入发送缓冲区,并发送;
S3:接收方接收到小数据包后向发送方发送对该小数据包的确认应答;
所述步骤S3中接收方将接收的小数据包放入接收缓冲区中,若接收缓冲区满,则通知发送方暂停发送,并将接收缓冲区中的数据转移到用户内存;其中用户内存指的是应用程序上层用来存储从接收缓冲区返回的内存;
S4:发送方接收所述确认应答后将该确认应答对应的小数据包从所述发送缓冲区中删除,若发送小数据包后超过3秒未接收到所述确认应答,则向接收方重发该小数据包;
其中所述将所述小数据包存入发送缓冲区时,实时判断所述发送缓冲区是否满,若不满,执行步骤S2;若所述发送缓冲区满或不够放入全部要发送的小数据包,则等待所述发送缓冲区释放空间后再执行步骤S2;
所述步骤S4中接收到所述确认应答后还包括:
统计从发送小数据包到收到对应的确认应答的平均时间,若重发次数小于预定次数,则增大所述发送缓冲区,若重发次数大于所述预定次数,则缩小所述发送缓冲区。
其中,所述预定次数为10次。
其中,所述步骤S4中,若重发次数超过10次,则认为网络断开,停止传输。
其中,所述小数据包的大小为1KB。
一种基于UDP的文件可靠传输系统,在网络地址转换Nat设备之间建立通路后,所述系统包括:
数据包分割模块,用于发送方将要发送的数据包分割成大小相同的若干小数据包;
发送模块,用于将所述小数据包放入发送缓冲区,并发送;
接收模块,用于接收方接收到小数据包后向发送方发送对该小数据包的确认应答;接收方将接收的小数据包放入接收缓冲区中,若接收缓冲区满,则通知发送方暂停发送,并将接收缓冲区中的数据转移到用户内存;其中用户内存指的是应用程序上层用来存储从接收缓冲区返回的内存;
重发模块,用于发送方接收所述确认应答后将该确认应答对应的小数据包从所述发送缓冲区中删除,若发送小数据包后超过3秒未接收到所述确认应答,则向接收方重发该确认应答对应的小数据包;用于统计从发送小数据包到收到对应的确认应答的平均时间,若重发次数小于预定次数,则增大所述发送缓冲区,若重发次数大于所述预定次数,则缩小所述发送缓冲区;
发送缓冲区判断模块,用于所述将所述小数据包存入发送缓冲区时,实时判断所述发送缓冲区是否满的步骤,若不满,则执行所述发送模块;若所述发送缓冲区满或不够放入全部要发送的小数据包,则等待所述发送缓冲区释放空间后再执行所述发送模块。
(三)有益效果
本发明采用小数据包传送,丢包后快速重发,使在UDP数据传输过程中不丢失数据包,传输过程中根据传输情况实时动态调整发送缓冲区的大小,提高了传输数据的效率,并使传输更稳定。
附图说明
图1是本发明实施例的一种基于UDP的文件可靠传输方法流程图;
图2是本发明实施例的一种基于UDP的文件可靠传输系统结构示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
如图1所示,为本发明实施例的基于UDP的文件可靠传输方法流程图,包括:
步骤S101,发送方将要发送的数据包分割成大小相同的若干小数据包,优选大小为1KB。由于传输的文件可能很大,如视频或音频文件,由于交换机,路由器等设备,发送的数据不能超过最大传输单元(Maximum Transmission Unit,MTU),这个值通常比较小,如果发送大数据包的话,硬件设备会把大于MTU以上的数据全部丢弃,造成丢包,所以将该数据包分割为较小的数据包有利于网上传输和快速重发。
步骤S102,将小数据包存入发送缓冲区,并将发送缓冲区中的小数据包发送。由于发送缓冲区中可能还有待发送的其它小数据包,因此在将小数据包放入发送缓冲区时会实时判断发送缓冲区是否满,当不满时,将要发送的小数据包放入发送缓冲区,若发送缓冲区满或不够放入全部要发送的小数据包,则等待发送缓冲区释放空间后再放入。
步骤S103,接收方接收到小数据包后,向发送方发送对该小数据包的确认应答(ack)。接收方将接收的小数据包放入接收缓冲区中,若接收缓冲区满,则通知发送方暂停发送并将接收缓冲区中的数据转移到用户内存,每个小数据包都有编号,到达接收方的时间顺序有可能不同,接收方会按编号对小数据包进行整理,当接收缓冲区中存在连续编号的小数据包时,才会返回给用户程序,然后继续接收其它数据包,以保证数据的连续完整。用户内存指的是应用程序上层用来存储从接收缓冲区返回的内存。
步骤S104,发送方接收确认应答后将该确认应答对应的小数据包从发送缓冲区中删除,若发送小数据包后超过3秒未接收到确认应答,则向接收方重发该确认应答对应的小数据包,设置发送缓冲区的目的就是方便丢包后重发。发送方未接收到确认应答,则认为丢包,包括两种情况:1、发送的小数据包在发送中丢失,2、接收方的ack确认应答丢失。对于第2种情况,接收方会丢弃发送方重发的小数据包,并发送ack确认应答。为了提高传输数据的效率和传输的稳定性,当发送方接收到ack确认应答后,统计从发送小数据包到收到对应的确认应答的平均时间,若重发次数小于预定次数,优选为10次,表明网络拥塞小、带宽有余,则增大发送缓冲区,若重发次数大于该预定次数,表明网络拥塞大、带宽不足,则缩小发送缓冲区。
由于存在网络连接断开的情况,所以当发送方连续重发10次以上,则可认为网络断开,停止数据传输。
本发明还提出了一种基于UDP的文件可靠传输系统,包括:数据包分割模块,用于发送方将要发送的数据包分割成大小相同的若干小数据包;发送模块,用于将所述小数据包放入发送缓冲区,并发送;接收模块,用于接收方接收到小数据包后向发送方发送对该小数据包的确认应答;重发模块,用于发送方接收所述确认应答后将该确认应答对应的小数据包从所述发送缓冲区中删除,若发送小数据包后超过3秒未接收到所述确认应答,则向接收方重发该确认应答对应的小数据包。
其中,所述重发模块包括:发送缓冲区调整单元,用于统计从发送小数据包到收到对应的确认应答的平均时间,若重发次数小于预定次数,则增大所述发送缓冲区,若重发次数大于所述预定次数,则缩小所述发送缓冲区。
其中,系统还包括:发送缓冲区判断模块,用于实时判断发送缓冲区是否满的步骤,若不满,则执行发送模块,直到小数据包全部放入发送缓冲区,否则等待发送缓冲区不满再执行所述发送模块。
本发明广泛用于计算机网络中大量交互数据的情形,尤其用于即时通信软件在传输视频、音频等文件时保证文件顺利传输而不丢包。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。

Claims (5)

1.一种基于UDP的文件可靠传输方法,其特征在于,在网络地址转换Nat设备之间建立通路后,所述方法包括以下步骤:
S1:发送方将要发送的数据包分割成大小相同的若干小数据包;
S2:将所述小数据包存入发送缓冲区,并发送;
S3:接收方接收到小数据包后向发送方发送对该小数据包的确认应答;
所述步骤S3中接收方将接收的小数据包放入接收缓冲区中,若接收缓冲区满,则通知发送方暂停发送,并将接收缓冲区中的数据转移到用户内存;其中用户内存指的是应用程序上层用来存储从接收缓冲区返回的内存;
S4:发送方接收所述确认应答后将该确认应答对应的小数据包从所述发送缓冲区中删除,若发送小数据包后超过3秒未接收到所述确认应答,则向接收方重发该小数据包;
其中所述将所述小数据包存入发送缓冲区时,实时判断所述发送缓冲区是否满,若不满,执行步骤S2;若所述发送缓冲区满或不够放入全部要发送的小数据包,则等待所述发送缓冲区释放空间后再执行步骤S2;
所述步骤S4中接收到所述确认应答后还包括:
统计从发送小数据包到收到对应的确认应答的平均时间,若重发次数小于预定次数,则增大所述发送缓冲区,若重发次数大于所述预定次数,则缩小所述发送缓冲区。
2.如权利要求1所述的基于UDP的文件可靠传输方法,其特征在于,所述预定次数为10次。
3.如权利要求1~2中任一项所述的基于UDP的文件可靠传输方法,其特征在于,所述步骤S4中,若重发次数超过10次,则认为网络断开,停止传输。
4.如权利要求1~2中任一项所述的基于UDP的文件可靠传输方法,其特征在于,所述小数据包的大小为1KB。
5.一种基于UDP的文件可靠传输系统,其特征在于,在网络地址转换Nat设备之间建立通路后,所述系统包括:
数据包分割模块,用于发送方将要发送的数据包分割成大小相同的若干小数据包;
发送模块,用于将所述小数据包放入发送缓冲区,并发送;
接收模块,用于接收方接收到小数据包后向发送方发送对该小数据包的确认应答;接收方将接收的小数据包放入接收缓冲区中,若接收缓冲区满,则通知发送方暂停发送,并将接收缓冲区中的数据转移到用户内存;其中用户内存指的是应用程序上层用来存储从接收缓冲区返回的内存;
重发模块,用于发送方接收所述确认应答后将该确认应答对应的小数据包从所述发送缓冲区中删除,若发送小数据包后超过3秒未接收到所述确认应答,则向接收方重发该确认应答对应的小数据包;用于统计从发送小数据包到收到对应的确认应答的平均时间,若重发次数小于预定次数,则增大所述发送缓冲区,若重发次数大于所述预定次数,则缩小所述发送缓冲区;
发送缓冲区判断模块,用于所述将所述小数据包存入发送缓冲区时,实时判断所述发送缓冲区是否满的步骤,若不满,则执行所述发送模块;若所述发送缓冲区满或不够放入全部要发送的小数据包,则等待所述发送缓冲区释放空间后再执行所述发送模块。
CN 201010284120 2010-09-17 2010-09-17 基于udp的文件可靠传输方法 Active CN101951370B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201010284120 CN101951370B (zh) 2010-09-17 2010-09-17 基于udp的文件可靠传输方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201010284120 CN101951370B (zh) 2010-09-17 2010-09-17 基于udp的文件可靠传输方法

Publications (2)

Publication Number Publication Date
CN101951370A CN101951370A (zh) 2011-01-19
CN101951370B true CN101951370B (zh) 2013-11-06

Family

ID=43454731

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201010284120 Active CN101951370B (zh) 2010-09-17 2010-09-17 基于udp的文件可靠传输方法

Country Status (1)

Country Link
CN (1) CN101951370B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102957719B (zh) 2011-08-23 2016-08-17 腾讯科技(深圳)有限公司 数据传输的方法和装置
CN103036904B (zh) * 2012-12-27 2015-10-21 东方通信股份有限公司 一种在通信网络中使用udp协议进行数据可靠传输的方法
CN103051436A (zh) * 2012-12-27 2013-04-17 青岛飞鸽软件有限公司 提高udp连接可靠性的系统及方法
CN103685243A (zh) * 2013-11-28 2014-03-26 许继电气股份有限公司 一种基于udp协议的故障录波数据的传输方法
CN105554054A (zh) * 2015-09-29 2016-05-04 深圳市美贝壳科技有限公司 一种终端之间文件传输保存的方法
US20170099350A1 (en) * 2015-10-05 2017-04-06 Tobesoft Co., Ltd Apparatus and method for transmitting mass data
CN105634692A (zh) * 2015-12-24 2016-06-01 天津交控科技有限公司 基于udp协议的数据包发送方法和接收方法
CN105871513B (zh) * 2016-05-12 2020-06-12 深圳市智美达科技股份有限公司 数据发送、接收方法及装置
CN106452689A (zh) * 2016-11-28 2017-02-22 畅捷通信息技术股份有限公司 客户端和服务端的数据传输装置和方法
CN107204936A (zh) * 2017-06-21 2017-09-26 北京畅游天下网络技术有限公司 一种数据的传输方法、装置及设备
CN111818063A (zh) * 2020-07-10 2020-10-23 陕西领航软件技术有限公司 一种用于施工车辆定位设备的新型数据传输协议
CN112769939B (zh) * 2021-01-13 2023-03-21 北京机电工程总体设计部 一种用于实时通讯的大数据可靠传输方法
CN113965959A (zh) * 2021-10-27 2022-01-21 重庆臻链汇物联网科技有限公司 一种车载智能数据无连接可靠传输方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1756230A (zh) * 2004-09-30 2006-04-05 华为技术有限公司 降低实时业务时延及时延抖动的方法
CN1921364A (zh) * 2005-08-25 2007-02-28 中兴通讯股份有限公司 基于消息的可靠传输层的并包发送和自适应窗口缩放方法
CN101262321A (zh) * 2008-02-03 2008-09-10 杭州华三通信技术有限公司 媒体数据处理方法、编码设备及媒体平台
CN101436922A (zh) * 2008-12-17 2009-05-20 烽火通信科技股份有限公司 一种基于udp协议传输大量数据的方法
CN101645883A (zh) * 2008-08-08 2010-02-10 比亚迪股份有限公司 数据传输方法、数据发送方法及数据接收方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1756230A (zh) * 2004-09-30 2006-04-05 华为技术有限公司 降低实时业务时延及时延抖动的方法
CN1921364A (zh) * 2005-08-25 2007-02-28 中兴通讯股份有限公司 基于消息的可靠传输层的并包发送和自适应窗口缩放方法
CN101262321A (zh) * 2008-02-03 2008-09-10 杭州华三通信技术有限公司 媒体数据处理方法、编码设备及媒体平台
CN101645883A (zh) * 2008-08-08 2010-02-10 比亚迪股份有限公司 数据传输方法、数据发送方法及数据接收方法
CN101436922A (zh) * 2008-12-17 2009-05-20 烽火通信科技股份有限公司 一种基于udp协议传输大量数据的方法

Also Published As

Publication number Publication date
CN101951370A (zh) 2011-01-19

Similar Documents

Publication Publication Date Title
CN101951370B (zh) 基于udp的文件可靠传输方法
JP4495515B2 (ja) マルチキャスト会議データの信頼性の高い配信
EP1747644B1 (en) Method and apparatus for group communication with end-to-end reliability
EP1002408B1 (en) Communication method and system
CN102075417A (zh) 组播剪枝方法及协议无关组播路由器、二层交换机
CN103036904A (zh) 一种在通信网络中使用udp协议进行数据可靠传输的方法
CN101304302A (zh) 视频数据的传输方法及其系统
CN101677292A (zh) 一种流控传输协议中数据分片的方法
CN104023006A (zh) 一种基于应用层中继的多径传输系统及方法
CN101212401B (zh) 面向网格的可配置数据传输方法及系统
GB2513345A (en) Data communication system and method
CN101778093A (zh) 基于udp协议的数据传输方法
CN101026478A (zh) 网络设备内部节点可靠组播的方法、系统及设备
CN105490773B (zh) 传输多媒体数据的方法和装置
CN104270344A (zh) 万兆网闸
CN102752184A (zh) 用于实时多播业务的数据通信系统及其方法
CN104168273A (zh) 一种瘦ap模式下实现tcp代理的方法及系统
CN105227276A (zh) 一种基于udt的对等网络数据传输方法
CN102457986A (zh) 终端的上行数据传输方法及终端
CN102904764A (zh) 一种数据传输装置及其传输方法
CN101188555B (zh) 一种提高非可靠通讯环境下单向通讯可靠性的方法
CN110719228A (zh) 基于实时数据分发服务的大数据包传输方法及装置
CN109586931A (zh) 组播方法及终端设备
Fisher Multicast issues for collaborative virtual environments
JP2003124875A (ja) 情報配信方法及びシステム、並びにマルチキャストサーバ、プログラム、及び記録媒体

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
CP02 Change in the address of a patent holder
CP02 Change in the address of a patent holder

Address after: Room 818, 8 / F, 34 Haidian Street, Haidian District, Beijing 100080

Patentee after: BEIJING ULTRAPOWER SOFTWARE Co.,Ltd.

Address before: 100089 Beijing city Haidian District wanquanzhuang Road No. 28 Wanliu new building A block 5 layer

Patentee before: BEIJING ULTRAPOWER SOFTWARE Co.,Ltd.