CN109729178A - 一种大数据量文件的网络下载方法 - Google Patents
一种大数据量文件的网络下载方法 Download PDFInfo
- Publication number
- CN109729178A CN109729178A CN201910133584.2A CN201910133584A CN109729178A CN 109729178 A CN109729178 A CN 109729178A CN 201910133584 A CN201910133584 A CN 201910133584A CN 109729178 A CN109729178 A CN 109729178A
- Authority
- CN
- China
- Prior art keywords
- data
- terminal
- server
- serial number
- packet serial
- 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.)
- Withdrawn
Links
Landscapes
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种大数据量网络下载的方法,该方法涉及服务器和终端,所述服务器具有控制线程和数据线程,所述终端具有控制线程和数据线程,所述大数据量文件的网络下载方法包括下列步骤:1)服务器和终端运行控制线程进行协议信息交互,完成服务器和终端的控制端口协议间的握手;2)步骤1)结束后,服务器和终端运行数据线程,完成服务器和终端的数据端口的握手;3)通过数据线程在服务器和终端的数据端口之间传输数据文件;4)在数据文件传输完毕后重新运行控制线程。本发明能够高效地可靠地传输数据,特别适合于大数据量网络下载。
Description
技术领域
本发明属于计算机网络技术领域,具体地说,本发明涉及一种大数据量文件的高效网络下载方法。
背景技术
随着计算机技术的发展,数据文件的数据量不断增大,尤其是高清媒体的日益普及,使得人们经常需要下载大数据量文件。而如何在一定网络带宽环境下实现大数据量文件(如高清媒体文件,该类文件平均容量达到4G以上)高效、完整的下载并在本地并进行播放将会是个不小的难题。而目前下载中使用的较为广泛的有TCP(Transmission ControlProtocol)和UDP(User Datagram Protocol)网络协议。
传输控制协议(TCP)协议主要用于在主机间建立一个虚拟连接,以实现高可靠性的数据包交换。IP协议可以进行IP数据包的分割和组装,但是通过IP协议并不能清楚地了解到数据包是否顺利地发送给目标计算机。而TCP协议在其传输模式中,会在将数据包成功发送给目标计算机后要求发送一个确认;如果在某个时限内没有收到确认,那么TCP将重新发送数据包。另外,在传输的过程中,如果接收到无序、丢失以及被破坏的数据包,TCP还可以负责恢复,最常用的方式就是只要不得到确认,就重新发送数据报,直到得到对方的确认为止。
TCP协议可以提供一条可靠的传输途径,所以在目前对传输数据要求较高的一些场合均以TCP协议为主,以保证数据的正确、完整性。但如果在面对大量终端与服务器实现TCP传输时,由于服务器要负责实现全部的容错机制,因此极大地增加了服务器的各种开销,这对于服务器来说将是一个很大的负担。
用户数据报协议(UDP)是TCP/IP协议组的一个组成部分。它的创立是为了向应用程序提供一条访问IP的无连接功能的途径。TCP和UDP都使用IP。UDP的设计允许应用程序创建数据报,以及将它们编址到访问应用程序或进程的端口。UDP 的基本作用就是向一个IP分组增加一个应用程序进程的端口地址。
可以看出UDP较之TCP简单了很多,只要把数据发送出去而不管发送端是否成功收到数据,因此传输速度较快。但是该协议对于可能出现的丢包无容错机制,无法保证数据传输的完整性,即无法保证可靠的数据传输。
考虑到高清媒体容量大的特性,终端与服务器之间的下载就是一个大容量数据传输的过程,在这过程中不仅要考虑到数据传输的完整性还要兼顾到数据传输的速率问题,TCP虽然可靠,但自身的容错特性会造成一定程度上造成数据的重复传输,且过多的协议握手也对速率造成了一定的影响,在面对大量数据传输的时候,服务器负载较重;UDP虽然能比较有效的解决服务器负载问题,拥有较快的数据传输速度,但UDP是面对无连接的,对网络丢包未做容错处理,因此,不能提供可靠的数据传输。
发明内容
本发明的目的是提供一种在保证数据传输可靠的基础上实现大数据量文件高效率传输的网络下载方法。并且,该网络下载方法能够根据网络丢包率自动选择数据下载方式及容错机制,从而进一步保证了数据传输的高效性和正确性,满足各种不同网络丢包率的环境下的需要。
为实现上述发明目的,本发明提供了一种大数据量网络下载的方法,该方法涉及服务器和终端,所述服务器具有控制线程和数据线程,所述终端具有控制线程和数据线程,所述大数据量文件的网络下载方法包括下列步骤:
1)服务器和终端运行控制线程进行协议信息交互,完成服务器和终端的控制端口协议间的握手;
2)步骤1)结束后,服务器和终端运行数据线程,完成服务器和终端的数据端口的握手;
3)通过数据线程在服务器和终端的数据端口之间传输数据文件;
4)在数据文件传输完毕后重新运行控制线程。
采用上述方案,当握手成功,数据端口直接进行数据的下载,控制端口不再干涉,仅当当前文件传输完毕再由控制端口接管并进行下一个文件的下载流程或者进入等待用户触发状态,中间数据传递节省了不必要的握手,从而有效的改善数据传输速率。
上述技术方案中,所述步骤1)中,进行协议信息交互时,当协议信息发起端在发出协议信息后,在预先设定的时间阈值内未收到接收端对所述协议信息的回复,则所述协议信息发起端重发该协议信息。
上述技术方案中,所述时间阈值为200ms。
上述技术方案中,所述步骤3)中,还需要根据网络丢包状况自适应采取重发、补发策略,动态选择相对应的下载方式。当终端所收到数据报文的包序号与该终端进行本次网络下载的应用程序的内部计数器的计数值不匹配时,根据二者之差选择触发重发机制或补发机制获取丢失的数据报文,以保证数据传输的高效性及容错性。
进一步地,所述步骤3)包括下列子步骤:
31)服务器向终端发送数据报文;
32)所述终端接收并解析数据报文,获得所收到数据报文的包序号,并与该终端进行本次网络下载的应用程序的内部计数器做比较,如果所述包序号减去内部计数器计数值为0,则进行数据的存储;如果所述包序号减去内部计数器计数值的差值大于等于3,则进入步骤33);如果所述包序号减去内部计数器计数值的差值小于3,则进入步骤34);
33)所述终端向服务器发送重发请求,重发请求中携带重发起始包序号,所述重发起始包序号等于内部计数器的当前值,同时所述终端对接下来所收到的数据报文一律丢弃,直到所述包序号减去内部计数器计数值的差值为0,所述数据文件的指针根据当前包序号进行位置偏移;
34)所述终端接收当前数据报文,然后文件指针根据包序号进行偏移并存储数据,内部计数器值改为当前接收到的包序号,中间所跳过的包序号作为补发包序号存入补发队列;所述终端向服务器发送补发请求,补发请求携带补发包序号;
35)服务器在收到重发请求后,根据终端传递上来的所述重发起始包序号重新定位内部文件指针并从所述重发起始包序号处起重新发送数据报文;
36)服务器在收到补发请求后,内部文件继续往下顺序偏移,同时服务器在子线程中对传递上来要求补发的包号立即进行补发处理,终端如果收到小于当前计数器的包序号,判断该包序号是否与补发队列中某一补发包序号相等,如果相等,则从补发队列中删除该补发包序号。
上述技术方案中,所述步骤34)中,当补发队列中的补发包序号超过某一极值时,终端向服务器端发送降速命令以减少服务器发送数据包的频率。
上述技术方案中,所述终端每完成一定数目的数据包下载即向服务器发送一个在线接收心跳报文;如果所述服务器连续三次没有收到终端的心跳报文,则服务器停止本次下载。
与现有技术相比,本发明的优点在于:
结合TCP协议与UDP协议的长处,既具有TCP协议下数据传输的可靠性,又具备UDP协议下服务器负载轻,数据传输快的特点,特别值得说明的是终端可根据不同网络的丢包状况,自适应改变数据传输策略,具备各个网络环境下较强的适应能力,尤其是在网络丢包严重(公网环境,丢包率在20%左右)或是数据拥塞的环境下能够表现出较强的数据接收能力。实践证明,本发明的下载速度平均可达网络带宽的70%至80%。
另外,本发明核心代码量仅占18.5KB,代码精简,高效,尤其符合嵌入式平台的代码空间要求。
附图说明
图1是本发明实现大数据量下载的程序流程图。
具体实施方式
下面结合附图1和具体实施方式对本发明作进一步详细描述:
本发明提供的基于嵌入式平台的高清媒体网络下载方法,包括(1)双方约定应用层各个标志位,采用胖客户机模式;(2)功能模块化,采用双线程机制,其中一线程负责控制协议握手,而另一线程负责数据端口握手,两个端口采用不同的容错策略,针对性强,有效提升数据传输速率;(3)双线程的运行方式模拟DMA通道策略,在控制端口成功握手后由数据端口来完全接管数据的传输直至文件传输结束; (4)根据网络丢包率自适应采取重发、补发策略,选择相对应的下载方式,保证数据传输的高效性。
双方在应用层约定各个标志位来进行协议的握手和数据的下载,为有效减轻服务器负载,采用胖客户机模式,终端负责绝大部分的操作,有效减轻服务器负载。
双方根据约定填充报文标志位并发送,接收方同样根据约定解析出数据,固定的,双方约定应用层的第3个字节来唯一确定消息的类型,同时,为方便今后消息类型的扩展,可以采用二级消息类型目录;约定第5,第6个字节为发送数据包的长度(包括包头在内),以检测数据包的完整性,如果解析出来的数据报文长度与头部 Head.length长度不符,则认为所发报文不正确。
分配两个独立的线程分别进行控制端口和数据端口的操作,控制端口在成功进行握手后便由数据端口来接手数据的传输,中间无需控制端口的干涉,较TCP协议而言节省了大量的握手时间,当数据传输完成再由控制端口来接管当前操作(即由控制线程接管CPU)。
控制端口的容错采用超时机制,即当发送端在发送消息200ms后还未收到接收方的回应,便判断信息发送超时,进行重发操作。
数据端口的容错可根据网络丢包率的情况自动选择容错机制,具体如下:
(1)在接收到数据报文后,解析出包号(可以根据约定的应用层中的标志位来判断所收到的包序号),并与文件内部计数器(内部计数器指的是终端进行本次下载的应用程序为当前正在下载的文件所设置的内部计数器)相比较,如果符合,则是所要求的数据包,可进行文件的写操作,如果包号与文件计数器不符,则说明发生丢包,根据网络丢包率进行容错机制选择。
(2)当从数据报文解析出来的包号与内部文件计数器差值大于或等于3时,触发重发机制,终端丢弃已接收到的数据报文直到所需包号的到来,服务器则根据传递上来的包号重新定位文件内部指针并立即推送数据。
(3)当从数据报文解析出来的包号与内部文件计数器差值小于3时,触发补发机制,终端接受已经传递过来的数据报文,文件指针根据解析出来的包号进行偏移存储,同时终端建立补发队列,进行补发请求,服务器收到补发请求后并不改原文件发送指针位置,而是在子线程中利用另一文件指针进行补发包的快速定位和补发。与重发机制所不同的是,补发机制中,终端接收当前数据报文,同时文件指针根据包序号进行偏移并存储数据,内部计数器值改为当前接收到的包序号,这样有效的节省了数据的重复传递,提升了数据传输的效率。
终端在收到比文件计数器小的包号便会判断是否与补发队列中某一包号相符,如果相符,则说明补发成功,该包号做出队操作。进一步地,为避免网络丢包率较高可能造成的补发队列的溢出,当补发队列超过某一极值时,根据约定的补发等级,终端会采用动态调整降速策略向服务器端发送降速命令,以适应目前补发队列的长度并减少服务器发送数据包的频率。
当终端收到尾包,判断当前补发队列是否为空,如果此时补发队列为空,则通过控端口发送下载完成请求,服务器响应并停止传送数据,至此整个传输过程结束;如若补发队列非空则进行补发操作,则重复进行补发队列的判断直至为空,表明数据已下载完整。
进一步地,本实施例中还采用了数据报文智能反馈机制:当终端数据线程每收到服务器100个数据报文(每个报文1316Bytes)时,终端的控制线程则向服务器发送一个在线接收心跳报文,服务器根据接收到的心跳报文判断终端是否正常在线接收;服务器连续三次没有收到终端的心跳报文,服务器认为终端离线,立即终止此次数据下载。这种反馈机制可以有效防止某台网络终端出现故障离线时,导致的数据大量堆积在终端路由器端而造成的网络拥塞现象并且浪费服务器资源。
Claims (6)
1.一种大数据量文件的网络下载方法,该方法涉及服务器和终端,服务器具有 控制线程和数据线程,终端具有控制线程和数据线程,所述大数据量文件的网络下 载方法包括下列步骤:
1)服务器和终端运行控制线程进行协议信息交互,完成服务器和终端的控制端 口协议间的握手;
2)步骤1)结束后,服务器和终端运行数据线程,完成服务器和终端的数据端 口的握手;
3)通过数据线程在服务器和终端的数据端口之间传输数据文件;当终端所收到 数据报文的包序号与该终端进行本次网络下载的应用程序的内部计数器的计数值不 匹配时,根据二者之差选择触发重发机制或补发机制获取丢失的数据报文;
且所述的补发机制为:终端接收当前数据报文,然后文件指针根据包序号进行 偏移并存储数据,内部计数器的计数值改为当前接收到的包序号,中间所跳过的包 序号作为补发包序号存入补发队列;所述终端向服务器发送补发请求,补发请求携 带补发包序号;服务器收到补发请求后并不改原文件指针位置,而是在子线程中利 用另一文件指针进行补发包的快速定位和补发;当终端收到尾包,判断当前补发队 列是否为空,如果此时补发队列为空,则通过控制端口发送下载完成请求,服务器 响应并停止传送数据,至此整个传输过程结束;如若补发队列非空则进行补发操作, 则重复进行补发队列的判断直至为空,表明数据已下载完整;
4)在数据文件传输完毕后重新运行控制线程。
2.根据权利要求1所述的大数据量文件的网络下载方法,其特征在于,所述步 骤1)中,进行协议信息交互时,当协议信息发起端在发出协议信息后,在预先设定 的时间阈值内未收到接收端对所述协议信息的回复,则所述协议信息发起端重发该 协议信息。
3.根据权利要求2所述的大数据量文件的网络下载方法,其特征在于,所述时 间阈值为200ms。
4.根据权利要求1所述的大数据量文件的网络下载方法,其特征在于,所述步 骤3)中,包括下列子步骤:
31)服务器向终端发送数据报文;
32)所述终端接收并解析数据报文,获得所收到数据报文的包序号,并与该终 端进行本次网络下载的应用程序的内部计数器做比较,如果所述包序号减去内部计 数器计数值为0,则进行数据的存储;如果所述包序号减去内部计数器计数值的差值 大于等于3,则进入步骤33);如果所述包序号减去内部计数器计数值的差值小于3, 则进入步骤34);
33)所述终端向服务器发送重发请求,重发请求中携带重发起始包序号,所述 重发起始包序号等于内部计数器的当前值,同时所述终端对接下来所收到的数据报 文一律丢弃,直到所述包序号减去内部计数器计数值的差值为0,所述数据的文件指 针根据当前包序号进行位置偏移;
34)所述终端接收当前数据报文,然后文件指针根据包序号进行偏移并存储数 据,内部计数器计数值改为当前接收到的包序号,中间所跳过的包序号作为补发包 序号存入补发队列;所述终端向服务器发送补发请求,补发请求携带补发包序号;
35)服务器在收到重发请求后,根据终端传递上来的所述重发起始包序号重新 定位内部文件指针并从所述重发起始包序号处起重新发送数据报文;
36)服务器在收到补发请求后,内部文件继续往下顺序偏移,同时服务器在子 线程中对传递上来要求补发的包号立即进行补发处理,终端如果收到小于当前计数 器的包序号,判断该包序号是否与补发队列中某一补发包序号相等,如果相等,则 从补发队列中删除该补发包序号。
5.根据权利要求4所述的大数据量文件的网络下载方法,其特征在于,所述步 骤34)中,当补发队列中的补发包序号超过某一极值时,终端向服务器端发送降速 命令以减少服务器发送数据包的频率。
6.根据权利要求1所述的大数据量文件的网络下载方法,其特征在于,所述终 端每完成一定数目的数据包下载即向服务器发送一个在线接收心跳报文;如果所述 服务器连续三次没有收到终端的心跳报文,则服务器停止本次下载。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910133584.2A CN109729178A (zh) | 2019-02-22 | 2019-02-22 | 一种大数据量文件的网络下载方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910133584.2A CN109729178A (zh) | 2019-02-22 | 2019-02-22 | 一种大数据量文件的网络下载方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109729178A true CN109729178A (zh) | 2019-05-07 |
Family
ID=66301581
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910133584.2A Withdrawn CN109729178A (zh) | 2019-02-22 | 2019-02-22 | 一种大数据量文件的网络下载方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109729178A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112187667A (zh) * | 2020-09-16 | 2021-01-05 | 深圳希施玛数据科技有限公司 | 数据下载方法、装置、设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050272366A1 (en) * | 2002-06-21 | 2005-12-08 | Josef Eichinger | Method and communication station for transmitting data |
CN101651676A (zh) * | 2009-09-01 | 2010-02-17 | 北京中科智网传媒技术有限公司 | 一种大数据量文件的网络下载方法 |
CN101729222A (zh) * | 2008-10-21 | 2010-06-09 | 英业达股份有限公司 | 网络封包的发送方法 |
CN103067301A (zh) * | 2013-01-17 | 2013-04-24 | 广东石油化工学院 | 基于用户数据报协议的快速可靠的拥塞控制改进算法 |
EP2680508A1 (en) * | 2011-06-21 | 2014-01-01 | Huawei Technologies Co., Ltd. | Error recovery method, access point equipment, site equipment and system thereof |
CN104394234A (zh) * | 2014-12-15 | 2015-03-04 | 无锡中电科物联网创新研发中心 | 一种应用于环境监测的多窗口udp无线传输方法 |
CN107241446A (zh) * | 2017-07-31 | 2017-10-10 | 广州优视网络科技有限公司 | 应用程序的文件传输方法、装置和终端设备及存储介质 |
-
2019
- 2019-02-22 CN CN201910133584.2A patent/CN109729178A/zh not_active Withdrawn
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050272366A1 (en) * | 2002-06-21 | 2005-12-08 | Josef Eichinger | Method and communication station for transmitting data |
CN101729222A (zh) * | 2008-10-21 | 2010-06-09 | 英业达股份有限公司 | 网络封包的发送方法 |
CN101651676A (zh) * | 2009-09-01 | 2010-02-17 | 北京中科智网传媒技术有限公司 | 一种大数据量文件的网络下载方法 |
EP2680508A1 (en) * | 2011-06-21 | 2014-01-01 | Huawei Technologies Co., Ltd. | Error recovery method, access point equipment, site equipment and system thereof |
CN103067301A (zh) * | 2013-01-17 | 2013-04-24 | 广东石油化工学院 | 基于用户数据报协议的快速可靠的拥塞控制改进算法 |
CN104394234A (zh) * | 2014-12-15 | 2015-03-04 | 无锡中电科物联网创新研发中心 | 一种应用于环境监测的多窗口udp无线传输方法 |
CN107241446A (zh) * | 2017-07-31 | 2017-10-10 | 广州优视网络科技有限公司 | 应用程序的文件传输方法、装置和终端设备及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112187667A (zh) * | 2020-09-16 | 2021-01-05 | 深圳希施玛数据科技有限公司 | 数据下载方法、装置、设备及存储介质 |
CN112187667B (zh) * | 2020-09-16 | 2022-09-13 | 深圳希施玛数据科技有限公司 | 数据下载方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8537664B2 (en) | Method and system for accelerating transmission of data between network devices | |
Postel | DoD standard transmission control protocol | |
US7899925B2 (en) | System and method for fast, reliable byte stream transport | |
US6141785A (en) | Error control method for multiparty multimedia communications | |
CN101651676B (zh) | 一种大数据量文件的网络下载方法 | |
CN101510816B (zh) | 基于路径关联化的多路径并行传输方法 | |
US8605578B1 (en) | System and method for handling of destination host side congestion | |
CN101436978A (zh) | 使用udp协议进行可靠数据传输的方法 | |
CN104854836A (zh) | 增加数据流传输的方法和系统 | |
CN108964849A (zh) | 数据传输方法、电子设备及存储介质 | |
CN111970092B (zh) | 一种支持可靠性调节的多协议冗余网络异步通信方法 | |
CN107360177A (zh) | 一种基于udp的报文传输方法及装置 | |
CN108337242A (zh) | 传输数据的方法、存储介质及处理器 | |
CN109981385A (zh) | 一种实现丢包检测的方法、装置和系统 | |
JP4384676B2 (ja) | データ通信装置の制御方法 | |
CN109729178A (zh) | 一种大数据量文件的网络下载方法 | |
CN101695067B (zh) | 基于tcp的数据处理方法、装置、数字电视接收终端和系统 | |
CN111092907B (zh) | 基于udp协议的数据流快速传输方法、系统及介质 | |
JP4364763B2 (ja) | データ通信装置 | |
CN112953687A (zh) | 基于统计预测的丢包重传机制 | |
CN106302426A (zh) | 一种基于fpga的带重发机制的udp协议栈实现方法 | |
US8418017B2 (en) | Adaptive acknowledgment mechanism for network communication | |
Anand et al. | Pgtp: Power aware game transport protocol for multi-player mobile games | |
Postel | RFC0761: DoD standard Transmission Control Protocol | |
CN113852445A (zh) | 一种提高数据传输可靠性的方法、系统、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20190507 |