使用HTTP与P2P相结合实现数据传输或流媒体传输的方法转让专利

申请号 : CN200710133926.8

文献号 : CN101141459B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 季鹏程王彬李崴

申请人 : 南京远古科技有限公司

摘要 :

本发明涉及使用HTTP与P2P相结合实现数据传输或流媒体传输的方法,协议对数据分块进行传输,本客户端采用HTTP协议与P2P协议相结合的方式传输数据,一边下载一边播放,当前需要使用的数据采用HTTP方式传输或使用下载的P2P存储的数据,而暂时使用不到的数据即后续需要的数据采用P2P方式传输。本发明具有:播放请求响应快、时延小,节省服务器网络流量,节省网络区域间的数据流量,P2P节点可管理性好,不完全依赖于P2P节点的数据等优点。

权利要求 :

1.使用HTTP与P2P相结合实现数据传输或流媒体传输的方法,其特征是使用HTTP与P2P协议相结合实现数据传输或流媒体传输,所述协议对数据分块进行传输的方法是,本地客户端采用HTTP协议与P2P协议相结合的方式传输数据,一边下载一边播放,本地客户端当前需要使用的数据采用HTTP方式传输或使用存储的P2P下载的数据,而暂时使用不到的数据即后续需要的数据采用P2P方式传输,包括以下步骤:

1)本地客户端启动后首先通过HTTP协议向流媒体服务器请求节目数据的起始部分;

2)本地客户端通过HTTP协议从服务器接收到数据后在本地一边缓存一边播放,在缓存到一定数据量后连接断开;

3)在开始播放以后,本地客户端向P2P服务器请求拥有当前播放节目数据的其它客户端地址列表;

4)P2P服务器根据本地客户端请求的节目和本地客户端所在的网络区域,向本地客户端返回与本地客户端在同一网络区域并且拥有当前播放节目数据的其它客户端地址列表;

5)本地客户端根据地址列表开始使用穿透方法,依次连接其它客户端,向其它客户端询问其拥有的数据块;

6)其它客户端返回拥有该节目的数据块的情况;

7)如果某个其它客户端拥有本地客户端需要但本地没有的后续数据块;本地客户端则向某个其它客户端请求这些数据块;

8)某个其它客户端向本地客户端返回所请求的后续数据块;本地客户端将此后续数据块放入传输或播放序列;

9)在即将使用或流媒体快要播放到后续某个位置的数据块,即位于正在使用或播放的数据块后面几秒至十几秒钟播放时间的数据块,如果该位置的数据块还没有获取到,则本地客户端向流媒体服务器发起HTTP连接,根据本地客户端拥有的数据块情况,请求该数据块;

10)流媒体服务器通过HTTP协议返回请求的数据块,本地客户端缓存到本地后准备播放;

11)每隔一定的时间,本地客户端会再次向P2P服务器请求拥有当前播放节目数据的客户端地址列表;

12)P2P服务器再次根据本地客户端所请求的节目和本地客户端所在的网络区域,向本地客户端返回拥有当前播放节目数据的其它客户端地址列表;优先返回与本地客户端在同一网络区域的其他客户端地址列表;

13)在播放过程中,其它客户端会主动连接到本地客户端,向本地客户端询问拥有的数据块;

14)本地客户端向其它客户端返回拥有该节目的数据块的情况;

15)如果本地客户端拥有其它客户端需要的数据块,则其它客户端向本地客户端请求这些数据块;

16)本地客户端向其它客户端返回所请求的数据块。

2.如权利要求1所述的使用HTTP与P2P相结合实现数据传输或流媒体传输的方法,其特征是数据采用P2P方式传输时采用以下方法:最少优先,选择客户端需要的数据块时的判断条件是,在网络上拥有该数据块的客户端数量越少,这个块将越优先被下载。

3.如权利要求2所述的使用HTTP与P2P相结合实现数据传输或流媒体传输的方法,其特征是数据采用P2P方式传输时,采用以下判断方法:随机取块,用来弥补最少优先算法的不足;在最少优先条件下,有可能造成很多客户端同时向拥有该数据块的客户端请求靠前的一个比较稀有的块,反而会造成资源的浪费,随机在稀有的块中选择,可以避免这个情况;随机在稀有的块中选择的方法是:把需要下载的稀有数据块以自增长编号后排入任务队列,在此队列中随机选取任务号进行下载。

4.如权利要求3所述的使用HTTP与P2P相结合实现数据传输或流媒体传输的方法,其特征是数据采用P2P方式传输时,采用就近优先判断方法:就近优先,位于当前播放位置后面,靠近播放位置的块将获得比较高的优先权。

5.如权利要求4所述的使用HTTP与P2P相结合实现数据传输或流媒体传输的方法,其特征是数据采用P2P方式传输,采用以下判断方法:逆向顺序优先,这种算法是就近优先算法的一种补充,是用于点播观看方式下,靠近播放缓冲区尾部的块优先级比较高,使得P2P反向下载能够和HTTP正向下载相互辅助,提高下载速度。

6.如权利要求1所述的使用HTTP与P2P相结合实现数据传输或流媒体传输的方法,其特征是P2P服务器根据请求客户端所请求的节目和客户端所在的网络区域,向请求客户端返回拥有当前播放节目数据的其它客户端地址列表,即优先返回与本地客户端在同一网络区域的其他客户端地址列表的步骤如下:在P2P服务器上建立一张区域宽带服务商分组表和相对应的一张IP范围表,根据请求客户的IP地址所在的区域宽带服务商分组,优先将该区域宽带服务商分组的其它拥有请求节目的客户端IP地址返回给请求客户端。

7.如权利要求5所述的使用HTTP与P2P相结合实现数据传输或流媒体传输的方法,其特征是下载线程的优先级按照“HTTP下载”高于“P2P就近优先和逆向顺序优先”高于“P2P最少优先和随机取块”的方法进行。

说明书 :

技术领域

本发明属于网络通讯传输技术领域和流媒体播放领域,涉及基于HTTP传输协议和P2P传输协议的数据传输控制方法,包括HTTP和P2P的传输控制算法、IP地址区域优先算法以及数据缓存算法,尤其是使用HTTP与P2P相结合实现数据传输或流媒体传输。

背景技术

流媒体是指采用流式传输的方式在Internet/Intranet播放的媒体格式,如音频、视频或多媒体文件。流媒体实现的关键技术之一就是流式传输,流式传输主要指将音频和视频及三维媒体等多媒体节目经过特定的方式分解成一个个数据包,由视频服务器向用户计算机实时传送。在采用流式传输方式的系统中,用户不必像采用下载方式那样等到整个节目全部下载完毕,而是只需经过一定的数据缓存后即可在用户的计算机上对多媒体数据解码后进行播放和观看,此时多媒体节目的剩余部分将在后台继续下载。与单纯的下载方式相比,这种对多媒体节目边下载边播放的流式传输方式不仅使启动延时大幅度地缩短,而且极大地减少用户等待的时间。
目前商用流媒体平台的主要方式就是通过流媒体服务器向用户计算机实时发送数据,使用服务器端客户端网络模型,采用这种方式时,所有的流媒体节目数据都存放在流媒体服务器上,服务器根据客户端请求实时地将数据发送给客户端计算机。采用这种数据传输方式的缺点是流媒体数据全部集中存放在服务器上,服务器的负载能力有限,如果用户并发量增大则需要不停的增加服务器数量,同时随着用户并发量的增加,服务器网络出口带宽也会变得不足,需要同时增加服务器网络带宽,从而增大投资成本。
P2P是peer-to-peer的缩写,同时也有point to point点对点下载的含义,在一个用户下载数据的同时,他自己的电脑还要继续作为主机为其它下载者上传数据,采用这种下载方式,下载的计算机越多,可以提供上传的主机就越多,速度就越快。
目前市面上也出现了一些采用P2P做为传输方式的流媒体系统,采用P2P方式的流媒体系统也有一些P2P固有的缺点:首先,P2P数据传输前首先要向Tracker服务器(种子文件服务器)请求拥有自己需要的数据文件的其它计算机列表,然后根据列表向其它计算机分别请求数据,这样就造成启动速度比较慢;其次,P2P的数据是分为一个个数据块,一般从64K~256K不等,每下载一个数据块就要向其它的计算机请求数据,而每台计算机的网络上传速度不等,同时播放用户群不稳定(用户可能观看结束就不提供数据上传),这样会造成数据块不是按照顺序获得,并且不一定能够及时获得,这样就会导致播放暂停或者不连续,用户体验效果不佳。CN1688132公开了一种均匀分布时P2P网络的动态资源勘探方法,节点在利用局部性原理将可能的目标资源所在节点的地址缓存起来时,需要维护一个Caching表。这个Caching表记录着节点所请求资源在P2P网络中的分布,因此这个Caching表就是资源分布表,而维护这个Caching表的方法就是P2P网络资源的动态勘探。均匀分布是描述稀有资源最简单也是最重要的一种资源分布形式,此时的P2P网络采用随机资源勘探方法。CN101018201是一种P2P流媒体直播技术的平行扩展方法,流媒体发布源分别向若干个流媒体缓冲服务器注册节目信息后向流媒体缓冲服务器定时发送流媒体数据,流媒体缓冲服务器登陆到主管理服务器后将流媒体信息列表进行注册;主管理服务器保存所有流媒体缓冲服务器列表,定时更新流媒体缓冲服务器信息,P2P管理服务器定时和主管理服务器进行通信,汇报本服务器种子信息;客户端首先登陆到登陆服务器,登陆服务器根据当前所有P2P管理服务器的负载情况,选择一个人数未满的P2P管理服务器并陆到该P2P管理服务器。CN101009568公开了一种P2P网络中实现数据下载的方法及系统,所述方法包括下述步骤:A.设置数据缓存设备;B.通过所述数据设备下载缓存网络上的数据,供用户设备下载。在现有的P2P网络中设置了数据缓存设备为用户设备提供数据缓存服务。
再者,P2P数据传输时,有可能交换同一数据文件的各台计算机不在同一个网络区域内,这样会造成数据传输速度下降,并且对于网络运营商来说会增加不同网络间数据流量,从而增加数据流量结算成本。

发明内容

本发明针对现有技术中存在的不足之处,提出一种基于HTTP协议与P2P协议相结合的传输数据的方法。提出支持服务器端客户端和P2P网络混合的模型,客户端采用HTTP协议与P2P协议相结合的方式传输数据,当前需要使用或即将使用到的数据采用HTTP方式传输,而暂时使用不到的数据采用P2P方式传输,客户端请求P2P数据传输时,Tracker服务器优先将与当前请求客户端在同一IP地址区域的并且拥有被请求数据的其它客户端IP地址列表返回给当前请求客户端,这样可以控制P2P数据传输交换在同一个IP地址区域内进行。
使用HTTP与P2P相结合实现数据传输或流媒体传输的方法,协议对数据分块进行传输的方法,本地客户端采用HTTP协议与P2P协议相结合的方式传输数据,一边下载一边播放,当前需要使用的数据采用HTTP方式传输或使用存储的P2P下载的数据,而暂时使用不到的数据即后续需要的数据采用P2P方式传输,包括以下步骤:
1)本地客户端启动后首先通过HTTP协议向流媒体服务器请求节目数据的起始部分(如1-10M,播放10-100秒,可以根据情况设定,亦可超出此范围);
2)本地客户端通过HTTP协议从服务器接收到数据后在本地一边缓存一边播放,在缓存到一定数据量(如1-10M)后连接断开;
3)在开始播放以后,本地客户端向P2P服务器请求拥有当前播放节目数据的其它客户端地址列表;
4)P2P服务器根据本地客户端请求的节目和本地客户端所在的网络区域,向本地客户端返回与本地客户端在同一网络区域并且拥有当前播放节目数据的其它客户端地址列表;
5)客户端根据地址列表开始使用穿透方法,依次连接其它客户端,向其它客户端询问其拥有的数据块;
6)其它客户端返回拥有该节目的数据块的情况;
7)如果某个其它客户端拥有本地客户端需要的后续数据块;则向某个其它客户端请求这些数据块(请求的是如1-10M之后的数据块);
8)某个其它客户端向本地客户端返回所请求的后续数据块;本地客户端将此后续数据块放入传输或播放序列;也可以是如果后面相邻的部分数据块本地没有,则继续使用该HTTP连接请求后面相邻的部分数据块;
9)在即将使用或流媒体快要播放到后续某个位置的数据块(位于正在使用或播放的数据块后面几秒钟播放时间的数据块,如当前正在使用第100秒的数据块,那么该数据块就是位于第105-110秒的数据块(可以根据情况设定,亦可超出此范围))时,如果该位置的数据块还没有获取到,则本地客户端向流媒体服务器发起HTTP连接,根据本地客户端拥有的数据块情况,请求该数据块;
10)流媒体服务器通过HTTP协议返回请求的数据块,本地客户端缓存到本地后准备播放;
11)每隔一定的时间(如30-60秒),本地客户端会再次向P2P服务器请求拥有当前播放节目数据的客户端地址列表;
12)P2P服务器再次根据本地客户端所请求的节目和本地客户端所在的网络区域,向本地客户端返回拥有当前播放节目数据的其它客户端地址列表(优先返回与本地客户端在同一网络区域的其他客户端地址列表);
13)在播放过程中,其它客户端会主动连接到本地客户端,向本地客户端询问拥有的数据块;
14)本地客户端向其它客户端返回拥有该节目的数据块的情况;
15)如果本地客户端拥有其它客户端需要的数据块;则其它客户端向本地客户端请求这些数据块;
16)本地客户端向其它客户端返回所请求的数据块;
本发明的改进包括:数据采用P2P方式传输,客户端会在一定条件下,检查本地拥有的数据块,找到其中未完成的块,根据选块算法按优先程度加入将其编号加入队列,包括以下判断方法:
数据采用P2P方式传输时采用以下方法:最少优先,选择客户端需要的数据块时的判断条件是,在网络上拥有该数据块的客户端数量越少,这个块将越优先被下载。
数据采用P2P方式传输时,还采用以下判断方法:随机取块,用来弥补最少优先算法的不足。在最少优先条件下,有可能造成很多客户端同时向拥有该数据块的客户端请求靠前的一个比较稀有的块,反而会造成资源的浪费。随机在稀有的块中选择,可以避免这个情况。随机在稀有的块中选择的方法是:把需要下载的稀有数据块以自增长编号后排入任务队列,在此队列中随机选取任务号进行下载。
判断方法还包括:就近优先,为能够流畅地播放,并减少延迟。位于当前播放位置后面,靠近播放位置的块将获得比较高的优先权。例如当前播放的数据块编号是1000,编号为1021~1050数据块的优先级比1101~1200数据块高。(如果1001~1020的数据块在本地不存在,则客户端启用HTTP线程进行紧急数据下载,此任务优先级最高,保证观看的连续性。)
逆向顺序优先,这种算法是就近优先算法的一种补充,是用于点播观看方式下,靠近播放缓冲区尾部的块优先级比较高,使得P2P反向下载能够和HTTP正向下载相互辅助,提高下载速度。例如当前播放的数据块编号是1000,客户端启用HTTP线程下载编号为1001~1020的数据块,P2P线程下载编号为1050~1021的数据块,优先级从1050~1021依次降低。
P2P服务器根据请求客户端所在的网络区域返回与请求客户端在同一网络区域的其它客户端地址列表,包括以下算法:
在P2P服务器上建立一张区域分组表(可多级分组)和相对应的一张IP范围表,根据请求客户的IP地址所在的区域分组,将该区域分组的其它拥有请求节目的客户端IP地址返回给请求客户端。
下载线程的优先级按照“HTTP下载”高于“P2P就近优先和逆向顺序优先”高于“P2P最少优先和随机取块”的原则进行安排,在一般情况下客户端通过下载线程以P2P的方式获取数据,但是当播放线程快要播放到某个位置,而该位置的数据还未开始下载或未下载完全,客户端会立即启动HTTP线程从服务器进行下载,保证播放进度不受影响。为了提高HTTP下载的效率,通常客户端不会每次只请求一个数据块,而是会根据缓存情况一次请求几个连续的数据块。
本发明中的P2P服务器根据请求客户端所在的网络区域返回与请求客户端在同一网络区域的其它客户端地址列表的判断方法是,在P2P服务器上建立一张区域宽带服务商分组表(可多级分组)和相对应的一张IP范围表,根据请求客户的IP地址所在的区域宽带服务商分组,优先将该区域宽带服务商分组的其它拥有请求节目的客户端IP地址返回给请求客户端。例如将江苏省分为南京、苏州、无锡等13个地市组(一级),其中各地市组下又分为电信组、网通组、联通组、铁通组、移动组等5个宽带服务商组(二级),例如南京市电信组的IP地址范围为202.102.111.0~202.102.111.255、218.2.225.0~218.2.225.255、222.94.48.0~222.94.52.255等多个段,南京市网通组的IP地址范围为58.240.16.0~58.240.255.255段,那么当一个IP地址为218.2.225.10的客户端向P2P服务器请求具有《少林寺》这个节目的其它客户端地址列表的时候,服务器通过请求的IP地址与IP范围表和区域分组表的对应关系可以查出该用户属于南京市的电信组,则服务器向该用户返回所有IP地址属于南京市电信组的并且拥有《少林寺》节目的其它客户端IP地址列表。如果南京市电信组没有客户端拥有《少林寺》节目,则根据服务器系统设置策略,向请求客户端返回整个南京市所有宽带服务商组的拥有《少林寺》节目的其它客户端IP地址列表,或者向请求客户端返回其它12个地市组的所有电信组的的拥有《少林寺》节目的其它客户端IP地址列表。如果按照以上判断方法都无法找到符合条件的其它客户端,则返回所有地市组的所有宽带服务商组的拥有《少林寺》节目的其它客户端IP地址列表。
本发明的有益效果:播放请求响应快、时延小,节省服务器网络流量,节省网络区域间的数据流量,P2P节点可管理性好,不完全依赖于P2P节点的数据等优点。
本发明综合了HTTP协议和P2P协议的优点,播放请求响应快、时延小,节省服务器网络流量,节省网络区域间的数据流量,P2P节点可管理性好,不完全依赖于P2P节点的数据等。在保证流媒体观看效果的前提下,能够有效的降低运营商的投资成本,减少服务器网络出口带宽,

附图说明

图1是本发明的组网结构示意图。
图2是本发明的数据传输流程图。
图3是本发明的客户端数据处理示意图。

具体实施方式

本发明从网络分布上分为四个部分(图1):
流媒体服务器;P2P服务器;客户端;连接这三个部分的网络;上述客户端指任何一个客户端即上述提及的本地客户端。流媒体服务器负责存储流媒体节目数据并以HTTP传输方式向客户端提供所请求数据。
P2P服务器负责为客户端提供拥有所请求的节目数据的其它客户端的IP地址列表和提供穿透服务。
客户端向流媒体服务器和其它客户端请求并下载节目数据,缓存到本机后进行播放,同时向其它客户端提供缓存的节目数据。
本发明中的数据传输流程如图2所示,图2中的实线代表HTTP数据传输、虚线代表P2P节点信息获取,点划线代表客户端之间的P2P数据传输。
1)本地客户端启动后首先通过HTTP协议向流媒体服务器请求节目数据的起始部分(如1-10M,播放10-100秒,可以根据情况设定,亦可超出此范围);
2)通过HTTP协议从服务器接收到数据后在本地一边缓存一边播放,在缓存到一定数据量(如1-10M)后连接断开;
3)在开始播放以后,本地客户端向P2P服务器上报自己当前正在播放的节目,同时向P2P服务器请求拥有当前播放节目数据的其它客户端地址列表;
4)P2P服务器根据本地客户端请求的节目和本地客户端所在的网络区域,向本地客户端返回与本地客户端在同一网络区域并且拥有当前播放节目数据的其它客户端地址列表;
5)客户端根据地址列表开始使用穿透方法,依次连接其它客户端,向其它客户端询问其拥有的数据块;
6)其它客户端返回拥有该节目的数据块的情况;
7)如果某个其它客户端拥有本地客户端需要的数据块;则向某个其它客户端请求这些数据块(请求的是如1-10M之后的数据块);
8)某个其它客户端向本地客户端返回所请求的数据块;
9)在即将使用或流媒体快要播放到后续某个位置的数据块(位于正在使用或播放的数据块后面几秒钟播放时间的数据块,如当前正在使用第100秒的数据块,那么该数据块就是位于第105-110秒的数据块(可以根据情况设定,亦可超出此范围))时,如果该位置的数据块还没有获取到,则本地客户端向流媒体服务器发起HTTP连接,根据本地客户端拥有的数据块情况,请求该数据块;
10)流媒体服务器通过HTTP协议返回请求的数据块,本地客户端缓存到本地后准备播放。
11)每隔一定的时间(如30-60秒),本地客户端会再次向P2P服务器请求拥有当前播放节目数据的客户端地址列表;
12)P2P服务器再次根据本地客户端所请求的节目和本地客户端所在的网络区域,向本地客户端返回拥有当前播放节目数据的其它客户端地址列表(优先返回与本地客户端在同一网络区域的其他客户端地址列表);
13)在播放过程中,其它客户端会主动连接到本地客户端,向本地客户端询问拥有的数据块;
14)本地客户端向其它客户端返回拥有该节目的数据块的情况;
15)如果本地客户端拥有其它客户端需要的数据块;则其它客户端向本地客户端请求这些数据块;
16)本地客户端向其它客户端返回所请求的数据块;
本发明的客户端数据处理如图3所示,客户端会在一定条件下,检查本地拥有的数据块,找到其中未完成的块,根据选块算法按优先程度加入将其编号加入队列,选块算法有以下几种:
1)最少优先,选块算法最主要的一个判断条件,在网络上拥有该数据块的客户端数量越少,这个块将越优先被下载。这样自己下载完后,就可以向其它节点提供此块的下载。
2)随机取块,用来弥补最少优先算法的不足。在最少优先条件下,有可能造成很多客户端同时向拥有该数据块的客户端请求靠前的一个比较稀有的块,反而会造成资源的浪费。随机在稀有的块中选择,可以避免这个情况。随机在稀有的块中选择的方法是:把需要下载的稀有数据块以自增长编号后排入任务队列,在此队列中随机选取任务号进行下载。
3)就近优先,为能够流畅地播放,并减少延迟。位于当前播放位置后面,靠近播放位置的块将获得比较高的优先权。例如当前播放的数据块编号是1000,编号为1021~1050数据块的优先级比1101~1200数据块高。(如果1001~1020的数据块在本地不存在,则客户端启用HTTP线程进行紧急数据下载,此任务优先级最高,保证观看的连续性。)
4)逆向顺序优先,这种算法是就近优先算法的一种补充,是用于点播观看方式下,靠近播放缓冲区尾部的块优先级比较高,使得P2P反向下载能够和HTTP正向下载相互辅助,提高下载速度。例如当前播放的数据块编号是1000,客户端启用HTTP线程下载编号为1001~1020的数据块,P2P线程下载编号为1050~1021的数据块,优先级从1050~1021依次降低。
下载线程的优先级按照“HTTP下载”高于“P2P就近优先和逆向顺序优先”高于“P2P最少优先和随机取块”的原则进行安排,在一般情况下客户端通过下载线程以P2P的方式获取数据,但是当播放线程快要播放到某个位置,而该位置的数据还未开始下载或未下载完全,客户端会立即启动HTTP线程从服务器进行下载,保证播放进度不受影响。为了提高HTTP下载的效率,通常本地客户端不会每次只请求一个数据块,而是会根据缓存情况一次请求几个连续的数据块。