基于多协议的文件传输方法及装置的制作方法

文档序号:7716197阅读:219来源:国知局
专利名称:基于多协议的文件传输方法及装置的制作方法
技术领域
本发明涉及网络通信技术,尤其涉及点对点技术。
背景技术
传统的网络文件下载采用客户端-服务器架构,通常基于超文本传输协议(HTTP) 或者文件传输协议(FTP),下载的速度受到服务器数据处理能力的制约,如果活跃用户数量 很多,用户平均下载速度会急剧下降,严重的影响用户体验。

发明内容
近年来,通过点对点技术提供文件下载的服务得到越来越广泛的应用。常用的基 于点对点技术的协议包括bt协议、ed2k协议、kad协议、等。通过采用点对点技术,可以获 得比服务器-客户端模式更高的下载速度。为了克服现有技术中存在的问题,本发明提供了一种基于多协议的用于文件下载 的技术方案。根据本发明的一个方面,提供了一种在用户节点中用于文件下载的方法,包括以 下步骤·Λ.截获来自一个应用功能实体的、基于第一协议的、用于请求一个文件的请求消 息;B.至少基于第二协议,下载所述文件;C.将下载的所述文件提供给所述应用功能实体。根据本发明的文件下载方法的一个实施例,其中所截获的请求消息包括所请求的 文件的定位信息;步骤B进一步包括Β1.根据所述文件的定位信息,向第一服务器进行查 询,以确定所述文件的标识信息;Β2.根据所述文件的标识信息,基于点对点技术在点对点 网络中下载所述文件。根据本发明的文件下载方法的一个实施例,其中步骤Β2进一步包括Β21.根据所 述文件的标识信息,向第二服务器进行查询,以获取拥有所述文件的其他节点的寻址信息; Β22.如果存在拥有所述文件的其他点对点节点,根据所述寻址信息、基于点对点技术从所 述其他点对点节点下载所述文件。根据本发明的文件下载方法的一个实施例,其中第一协议包括超文本传输协议或 文件传输协议,第二协议包括基于点对点技术的协议。上述方法在许多情况下可以提高文件下载速度,使得用户感受大大提升。而且,给 用户的感受是下载是由发起请求的应用功能实体完成的。对于深受“盗链”技术之苦的服 务商而言,这是值得赞赏的。根据本发明的另一个方面,提供了一种在用户节点中用于文件下载的下载装置, 包括第一获取装置,用于截获来自一个应用功能实体的、基于第一协议的、用于请求一个 文件的请求消息;第一装置,用于至少基于第二协议,下载所述文件;第一提供装置,用于 将下载的所述文件提供给所述应用功能实体。根据本发明的另一个方面,提供了一种客户端软件程序,其包括用于实现上述方 法的各步骤的指令代码。
根据本发明的另一个方面,提供了一种存储介质,其存储了用于实现上述方法的 各步骤的指令代码。通过使用本发明提供的方法、装置、软件、存储介质,客户端基于第一协议从网络 中下载文件时可以获得较传统服务器-客户端架构下更快的下载速度,从而提高了用户体验。


参考下面的图和说明,将更好地理解该系统。图中的元件不一定按比例绘制,而是 重点用于说明典型模型的原理。在图中,贯穿不同的示图,类似的参考标号表示对应的特 征。图1示出了根据本发明一个实施例的网络架构;图2示出了根据本发明一个实施例的在用户节点中用于文件下载的方法流程图;图3示出了根据本发明的一个实施例的文件下载方法的一个步骤的流程图;图4示出了根据本发明的一个实施例的文件下载方法的一个子步骤的流程图;图5示出了根据本发明的一个实施例的文件下载过程中的信号穿越的流程图;图6示出了根据本发明的一个实施例的下载装置的结构框图。
具体实施例方式图1示出了根据本发明一个实施例的网络架构。如图所示,网络中包括第一服务 器群100、第二服务器群200、点对点客户端网络300以及一个提供文件下载的服务器55。 用户终端301也是点对点客户端网络300的一份子。第一服务器群100包括至少一个第一服务器,在本文中,各第一服务器分别用 100 200中的一个自然数表示,例如101、199、等。第二服务器群200包括至少一个第二服务器,在本文中,各第二服务器分别用 200 300中的一个自然数表示,例如201J99、等。点对点客户端网络300由安装并运行本发明所提供的客户端软件的用户终端组 成,每一个这样的用户终端由300 400中的一个自然数表示,例如301、399、等。图2示出了根据本发明一个实施例的在用户节点中用于文件下载的方法流程图。 如图所示,该方法包括三个步骤S1、S2、S3。以下结合图1、图2对该实施例中的方法加以说 明。例如,客户端301中运行两个软件程序55、66(图中未示出)。其中,软件程序55 用于下载并使用网络中的文件,例如但不限于浏览器页面内嵌的媒体播放器,用于下载并 播放网络中的媒体文件。例如但不限于,服务器44提供文件下载、视频文件点播等服务。通 常,采用服务器-客户端架构的文件下载服务都是基于一种第一协议的,所述第一协议可 以是超文本传输协议,也可以是文件传输协议。当使用客户端301的用户通过软件程序55 点播了服务器44中的一个视频文件71 (图中未示出),软件程序55将发出一个基于第一协 议的请求消息,用于请求视频文件71。因为服务器44的带宽、下载负荷等因素的制约,文 件71的下载速度可能较慢。尤其是在视频点播、直播等服务时,容易出现播放中断、等待等 现象,从而影响用户体验。软件程序66为本发明所提供的客户端软件,其可以用于对软件程序55的下载进行加速。该实施例中的文件下载方法,其各步骤均是由客户端301通过运 行软件程序66来执行的。在下文中,如无特别声明,用户终端、终端、客户端、用户节点等术 语均指代安装并运行了本发明所提供的客户端软件66的客户端。在下文中,均以用户终端 301通过运行软件程序66来下载文件71为例进行说明。在步骤Sl中,用户节点301通过运行软件程序66截获来自软件程序55的、基于 第一协议的、用于请求文件71的请求消息。具体地,用户节点301可以对所有向外发出的基于第一协议的请求消息进行侦 测,并将请求的内容满足特定类型,例如视频文件,的请求消息截获。在步骤S2中,用户节点301将至少基于第二协议,下载文件71。这里的第二协议 包括基于点对点技术的协议,也就是说,客户端301将通过软件程序66在点对点客户端网 络300中下载文件71。另外,软件程序66还可以基于第一协议,从服务器44或者其他拥有 文件71的服务器来下载文件71。这样,当点对点客户端网络300中能够提供文件71的下 载时,客户端301下载文件71的速度往往相比于仅基于第一协议从服务器下载文件71的 速度要高,甚至高出几倍。在步骤S3中,用户节点301通过运行软件程序66将所下载的文件71的内容提供 给软件程序55,并被存储于存储器中。例如,所下载的文件71的内容可以被存储在随机接 入存储器(RAM)和/或只读存储器(ROM),软件程序55可以读取存储器中的数据从而播放 得到的文件71的内容。通常,来自软件程序55的用于请求文件71的请求消息包括文件71的定位信息, 例如文件71的统一资源定位符(URL)。在步骤S2中,用户节点301将根据这个统一资源定 位符,到点对点客户端网络300中下载文件71。内嵌了软件程序的55的浏览器的地址栏显 示的仍然是文件71在服务器44的统一资源定位符,因此用户的感受是所下载的文件数据 全部是来自于服务器44。这对拥有服务器44并提供相应服务的服务商而言,不会带来任何 利益的损害。因此,对于各种视频网站或者其他类型的网络文件下载服务商而言,软件程序 66的大量使用也是受欢迎的,或者至少是不排斥的。根据本发明的一个实施例,下载时的文件分割具有以下特点每个文件被根据第 一协议,例如HTTP协议的特点,分割成一个或多个分块(block);每个分块包括多个大小相 同的分片(Piece);各分片包括多个大小相同的子分片(subpiece)。具体地,子分片的大小 可以取为例如1KB(1000字节),基于点对点技术下载时是以子分片为单位的。分片的大小 可以取为例如U8KB,基于第一协议从服务器44或者其他服务器下载文件时是以分片为单 位的。分块包括多个分片,因而其大小为分片大小的整数倍,例如分块的大小可以取为2MB。 通常,对一个文件的划分是从文件开头部分开始逐分块进行划分,因此,该文件的最后一个 分块可能较小,而除了最后一个分块之外的其他分块大小一致。本领域技术人员应能理解, 上述分块、分片、子分片的大小均是示例性而非限制性的。图3示出了根据本发明的一个实施例的文件下载方法的一个步骤的流程图。如图 3所示,在该实施例中,前述步骤S2进一步包括两个子步骤S21和S22。在子步骤S21中,用户节点301将根据文件71的定位信息,例如统一资源定位符, 向第一服务器群100进行查询,以确定文件71的标识信息。在子步骤S22中,用户节点301将根据文件71的标识信息,基于点对点技术在点对点网络300中下载文件71。具体地,这里的标识信息可以包括文件的资源标识符(RID),亦即整个文件的数字 摘要值。通常,一个文件的数字摘要值是采用散列函数,例如MD5函数或SHAl函数,对该文 件进行变换得到的结果。因为数字摘要值与文件内容之间具有良好的一一对应的特性,因 此常被用作点对点技术中的检索条件。第一服务器群100用于文件检索,其存储的索引信息包括以下的一种或多种文 件定位信息(例如URL)至标识信息(例如RID)的索引、文件的标识信息至定位信息的索 引、文件头部预定长度内容的数字摘要值以及文件长度至标识信息的索引。根据本发明的一个实施例,第一服务器群100存储的信息还可能包括一个文件的 各分块的数字摘要值,这些数字摘要值与该文件的标识信息(资源标识符)或定位信息 (统一资源定位符)相关联。在步骤S21中,用户节点301向第一服务器群100查询,不仅确定文件71的标识 信息,还确定文件71的各分块的数字摘要值。在步骤S22中,用户节点301将基于点对点技术在点对点网络300中下载文件71, 其中,用户节点301将根据所确定的各分块的数字摘要值对下载的各分块的准确性进行校 验。如果校验无误,则用户节点301将保存下载的分块,并继续下载直至得到完整的文件 71。随着时间的变化,在服务器44中,文件与定位信息(统一资源定位符)之间的对 应关系可能发生变化,从而第一服务器群100存储的文件的定位信息与文件的标志信息或 各分块的数字摘要值之间的索引信息可能是错误的。这样,在步骤S22中,用户节点301根 据查询到的各分块的数字摘要值对下载的各分块进行校验时将发生错误,亦即根据下载的 分块计算出的数字摘要值与查询到的该分块的数字摘要值不匹配。用户节点301对每一个 下载的分块执行校验,当发生这样的校验错误的分块数达到一个预定数目,例如5个,因为 此时可以判断为第一服务器群100存储的索引信息是错的,用户节点301将放弃继续在点 对点网络中下载。然后,用户节点301将根据文件71的定位信息从服务器44重新下载完 整的文件71,并将根据重新下载的文件71更新其标识信息和各分块的数字摘要值,并将这 些更新的信息报告给第一服务器群100。第一服务器群100将根据这些信息来更新所存储 的索引信息。根据本发明的一个实施例,第一服务器群100存储了文件头部预定长度内容的数 字摘要值以及文件长度至标识信息的索引信息。在用户节点301通过软件程序66执行的 文件下载方法的步骤S2中包括根据文件71的定位信息,从服务器44下载所述预定长度 的头部内容,确定该头部的数字摘要值以及文件长度,并根据该头部的数字摘要值以及文 件长度向第一服务器群进行查询,以确定文件71的标识信息。通常,这样的操作出现在文 件的定位信息与文件内容不匹配或者两者的对应关系发生变化的情况下。根据本发明的一个实施例,第一服务器群100分为多组,各组第一服务器所存储 的索引信息分别与不同的文件相关联。每一组包括至少一个第一服务器。例如,第一服务 器群100包括两个组,第一组包括第一服务器101,第二组包括第一服务器102。一种对索 引信息进行划分的方式如下将文件的数字摘要值对η取模,其中η是第一服务器群100的 分组数量;与模值为0的数字摘要值有关的索引信息存储在第一组第一服务器中;与模值为1的数字摘要值有关的索引信息存储于第二组第一服务器中;以此类推,与模值为n-1的 数字摘要值有关的索引信息存储于第η组第一服务器中。这样,所有文件的相关索引信息 被比较平均地存储于各组第一服务器中,从而可以降低单个第一服务器的负荷,由整个第 一服务器群100来承担索引信息查询工作。本领域技术人员应能理解,上述第一服务器群 100的分组方式、每组的服务器数量、索引信息的分组存储方式均为示例性而非限制性的。根据本发明的一个实施例,由用户节点301中运行的软件程序66所执行的操作还 包括这样一个步骤确定文件71的标识信息及其他相关信息,例如文件71的定位信息、文 件71的预定长度头部内容的数字摘要值以及文件71的长度信息、等,并将这些信息提供给 第一服务器群100。第一服务器群100将根据这些信息建立与文件71有关的各种索引关 系。通常,这一步骤是当用户节点301是第一个请求下载文件71的用户的情况下发生的,因 为此时第一服务器群100中没有任何关于文件71的索引信息。不言而喻地,用户节点301 在执行这一步骤之前还包括根据请求消息中的文件71的定位信息,从服务器下载完整的 文件71。因为在没有现成的索引关系可供检索的情况下,文件71的标识信息及其他相关信 息均需要完整的文件71才能得以确定。图4示出了根据本发明的一个实施例的文件下载方法的一个子步骤的流程图。如 图4所示,在该实施例中,前述子步骤S22进一步包括两个子步骤S221和S222。在子步骤S221中,用户节点301将根据文件71的标识信息,例如整个文件的数字 摘要值,向第二服务器群200进行查询,以获取拥有文件71的全部或部分内容的其他节点 的寻址信息。在子步骤S222中,如果存在拥有文件71的全部或部分内容的其他节点,用户节点 301将根据其寻址信息,基于点对点技术从这些节点下载文件71。第二服务器群200用于用户索引,其存储有与文件有关的用户索引列表。一个文 件的用户索引列表包括该文件的标识信息和拥有该文件全部或部分内容的用户节点的寻 址信息。用户终端301通过第二服务器群200索引处于点对点用户终端网络300之中的拥 有文件71的其他用户节点并根据所引结果进行下载。根据本发明的一个实施例,第二服务器群200分为多组,各组第二服务器分别用 于索引拥有不同文件的用户节点。具体地,第二服务器的分组数量可以与第一服务器的分 组数量相同,每一组第二服务器分别对应于一组第一服务器。第二服务器中的用户索引列 表的划分可以采用与第一服务器中的索引信息相同的划分方式,例如将文件的数字摘要 值对η取模,其中η是第二服务器群200的分组数量;与模值为0的数字摘要值对应的文件 有关的用户索引列表存储在第一组第二服务器中;与模值为1的数字摘要值对应的文件有 关的用户索引列表存储于第二组第二服务器中;以此类推,与模值为η-1的数字摘要值对 应的文件有关的用户索引列表存储于第η组第二服务器中。这样,所有文件的用户索引列 表被比较平均地存储于各组第二服务器中,从而可以降低单个第二服务器的负荷,由整个 第二服务器群200来承担用户索引工作。每一组可以包括多个第二服务器。例如,第一组第二服务器包括服务器201、202、 203,对应于第一组第一服务器;第二组第二服务器包括服务器211、212、213,对应于第二 组第一服务器;第11组第二服务器包括服务器2(11-1)1、2(11-1)2、2(11-1)3;等。对于第一组 第二服务器,其中的各服务器201、202、203可以分别设置于不同的网络区域;则处于某一网络区域的用户节点可以优先地向该区域内的第二服务器查询用户索引列表,以利于节约 整个网络的资源。其余的各组第二服务器亦可以采用类似的设置。因为用户节点所拥有的文件会随着时间变化,相应地,第二服务器群200中的用 户索引列表也需随时间而更新。一种可行的方案是由各用户节点定期地或者周期性地向第二服务器报告所拥有 的文件的标识信息。其中,用户节点中的各文件也根据与第二服务器同样的分组方式进行 分组,用户节点将有关于各组文件的存在、更新的信息分别报告给各组第二服务器。例如, 用户节点301拥有文件71至文件75的全部或部分内容,其中文件71、73、75的用户索引列 表存储于第一组第二服务器,而文件72、74的用户索引列表存储于第二组第二服务器;用 户节点301可以从第一组中选择一个第二服务器,例如201,从第二组中选择一个第二服务 器,例如211,并周期性地向这两个第二服务器报告;报告的内容可以包括用户节点301所 拥有属于该组的文件的标识信息,例如,发往第二服务器201的报告包括文件71、73、75的 数字摘要值,发往第二服务器211的报告包括文件72、74的数字摘要值。第二服务器将根 据接收到的报告来维护及更新所存储的用户索引列表。优选地,各用户节点周期性地向第二服务器报告所拥有的文件的变化信息,也就 是采用增量报告模式。例如,当用户节点301长期拥有文件71、73、75,其发往第二服务器 201的报告只需指示文件没有变化;如果用户节点301中的文件71被删除,在下一次发往 第二服务器201的报告中,只需指示文件71已被删除;如果用户节点301中增加了属于第 一组的文件77,在下一次发往第二服务器201的报告中只需指示增加了文件77 ;上述变化 信息可以包括文件的数字摘要值和一个与其相关联的表示增加/删除的标识符,例如数字 0或1。第二服务器将根据接收到的变化信息以及所存储的用户索引列表来进行维护和更 新。在用户节点所拥有的文件数量比较多的情况下,采用增量报告模式可以显著地降低报 告的开销。当用户节点301向一组第二服务器中的所选择的那一个第二服务器,例如第一组 中的第二服务器201,进行报告时,用户节点301报告的信息与第二服务器201中存储的用 户索引列表的内容可能出现不匹配的现象而发生错误,当连续发生错误超过一个预定时间 后,用户节点301可以从第一组中重新选择一个第二服务器,例如第二服务器202,并开始 向第二服务器202报告所拥有的属于第二组的文件的标识信息或变化信息。本领域技术人员应能理解,上述用户节点的报告方式、第二服务器中用户索引列 表的更新方式均为示例性而非限制性。图5示出了根据本发明的一个实施例的文件下载过程中的信号穿越的流程图。如 图所示,在该实施例中,存在一个第二用户节点302,其是一个内网用户,通过网络地址转换 (NAT)服务器82连接到广域网,服务器88是与用户节点302相关联的穿越服务器。类似 地,用户节点302也是一个内网用户,通过NAT服务器81连接到广域网。Internet最初的地址体系是每个节点有一个唯一不变的全局地址,可以通过该地 址直接与任何其它的节点进行通信,而现如今,该地址体系已经被新的实际上广泛使用的 地址体系所替换,新的地址体系是由全局地址域和通过NAT接入全局地址域的大量私有地 址域组成。在新的地址体系中,只有在全局地址域中的节点可以在网络中很容易地与任何 其它的拥有全局地址的节点通信,因为该节点拥有全局的、唯一的、可路由的地址。在私有网络中的节点,亦即内网用户,可以与在同一个私有网络中的其它节点进行通信,并且在通 常情况下可以向全局地址中的节点发起TCP连接或发送UDP数据包。NAT设备在此扮演的 角色就是为从内网向公网发起的连接的节点分配临时的转发片段(session),将来自内网 的数据包的端点(endpoint,地址和端口)转换为公网的端点,将来自公网的数据包的端点 转换为内网的端点,同时NAT将屏蔽所有未经授权的来自公网的数据包。为了能够允许来自广域网的访问,用户节点302可以选择一个具有全局地址的节 点,例如穿越服务器88,将用户节点302的内网端点(例如10.0.0. 1:7777)、其关联的NAT 服务器82的外网端点(例如222. 0.0. 1:8000)告知该穿越服务器88。用户节点302可以 定期地,例如每隔15秒,向穿越服务器88发送报文;穿越服务器88可以以较低的周期,例 如每隔2分钟,向用户节点302反馈报文;从而使得这一穿越连接得以维持。这样,来自广 域网的对用户节点302的访问就可以经由穿越服务器88的转发而被允许。用户节点302 向第二服务器群200报告并被第二服务器群200存储的寻址信息应包括用户节点302的 内网端点、NAT服务器82的外网端点以及穿越服务器88的端点(例如200. 0. 0.8:9000)。可选地,用户节点302所选择的穿越服务器88是一个具有全局地址的用户节点, 其也安装并运行了本发明所提供的软件程序66。用户节点301运行软件程序66,将使用一个内网端点(例如10. 0.0. 2:7007)与外 界通信。用户节点301通过与该内网端点相关联的NAT服务器81的一个外网端点(例如 233. 0. 0. 1:8000)接入广域网。在前述步骤S221中,用户节点301将从第二服务器群200索引到用户节点302的 寻址信息。用户节点301从点对点网络中下载文件71包括从用户节点302下载文件71的 内容。首先,用户节点301将向穿越服务器88发送用于请求与用户节点302建立点对点 连接的报文511。该报文511应包括用户节点302的内网端点(10. 0. 0.1:7777)以及与其 相关联的NAT服务器的外网端点(222. 0. 0. 1:8000)。然后,穿越服务器88将向用户节点302发送一个报文521。该报文包括用户节点 301的寻址信息。接收到该报文后,用户节点302就得知用户节点301试图与其建立连接。然后,用户节点302将向用户节点301发送一个请求建立连接的报文531。如果用户节点301是一个外网用户,或者与用户节点302的内网端点 10. 0.0. 1:7777相关联的NAT服务器外网端点222. 0.0.1:8000至用户节点301的通道已经 打通,则用户节点301可以收到该报文531。于是,用户节点301与302之间的连接建立,用 户节点301可以从用户节点302下载文件71的内容。在该实施例中,用户节点301是一个内网用户,与用户节点302的内网端点 10. 0. 0. 1:7777相关联的NAT服务器82的外网端点222. 0. 0. 1:8000至用户节点301的通 道可能并未打通,于是NAT服务器81可能丢弃报文531,用户节点301和302仍无法建立连 接。优选地,用户节点301在发送到穿越服务器88的报文511时,将同时向NAT服务器82 发送一个“握手”报文512,该报文521包括NAT服务器82的外网端点222. 0. 0. 1:8000,以 打通该外网端点与用户节点301之间的连接。则当用户节点302通过服务器82的该外网 端点发送报文531时,NAT服务器81将根据已经打通的连接将该报文531转发给用户节点 301。于是,用户节点301与302之间的连接建立,用户节点301可以从用户节点302下载文件71的内容。图6示出了根据本发明一个实施例的下载装置的结构框图。如图所示,下载装置 600包括第一获取装置601、第一装置602、第一提供装置603。以下结合图1、图2、图3对 该实施例中的下载装置加以说明。例如,客户端301中运行了软件程序55,其用于下载并使用网络中的文件,例如但 不限于浏览器页面内嵌的媒体播放器,用于下载并播放网络中的媒体文件。例如但不限于, 服务器44提供文件下载、视频文件点播等服务。通常,采用服务器-客户端架构的文件下 载服务都是基于一种第一协议的,所述第一协议可以是超文本传输协议,也可以是文件传 输协议。当使用客户端301的用户通过软件程序55点播了服务器44中的一个视频文件 71(图中未示出),软件程序55将发出一个基于第一协议的请求消息,用于请求视频文件 71。下载装置600通常设置于各用户终端,例如用户节点301中,其可以用于对软件程序55 的下载进行加速。以下均以用户节点301中的下载装置600下载文件71为例进行说明。第一获取装置601用于截获来自软件程序55的、基于第一协议的、用于请求文件 71的请求消息。具体地,第一获取装置601可以对所有向外发出的基于第一协议的请求消息进行 侦测,并将请求的内容满足特定类型,例如视频文件,的请求消息截获。第一装置602用于至少基于第二协议,下载文件71。这里的第二协议包括基于点 对点技术的协议,也就是说,第一装置602将在点对点客户端网络300中下载文件71。另 外,第一装置602还可以基于第一协议,从服务器44或者其他拥有文件71的服务器来下载 文件71。这样,当点对点客户端网络300中能够提供文件71的下载时,客户端301下载文 件71的速度往往相比于仅基于第一协议从服务器下载文件71的速度要高,甚至高出几倍。第一提供装置603用于将所下载的文件71的内容提供给软件程序55,并被存储于 存储器中。例如,所下载的文件71的内容可以被存储在随机接入存储器(RAM)和/或只读 存储器(ROM),软件程序55可以读取存储器中的数据从而播放得到的文件71的内容。通常,来自软件程序55的用于请求文件71的请求消息包括文件71的定位信息, 例如文件71的统一资源定位符(URL)。用户节点301将根据这个统一资源定位符,到点对 点客户端网络300中下载文件71。内嵌了软件程序的55的浏览器的地址栏显示的仍然是 文件71在服务器44的统一资源定位符,因此用户的感受是所下载的文件数据全部是来自 于服务器44。这对拥有服务器44并提供相应服务的服务商而言,不会带来任何利益的损 害。因此,对于各种视频网站或者其他类型的网络文件下载服务商而言,下载装置600的大 量使用也是受欢迎的,或者至少是不排斥的。根据本发明的一个实施例,下载时的文件分割具有以下特点每个文件被根据第 一协议,例如HTTP协议的特点,分割成一个或多个分块(block);每个分块包括多个大小相 同的分片(Piece);各分片包括多个大小相同的子分片(subpiece)。具体地,子分片的大小 可以取为例如1KB(1000字节),基于点对点技术下载时是以子分片为单位的。分片的大小 可以取为例如U8KB,基于第一协议从服务器44或者其他服务器下载文件时是以分片为单 位的。分块包括多个分片,因而其大小为分片大小的整数倍,例如分块的大小可以取为2MB。 通常,对一个文件的划分是从文件开头部分开始逐分块进行划分,因此,该文件的最后一个 分块可能较小,而除了最后一个分块之外的其他分块大小一致。本领域技术人员应能理解,上述分块、分片、子分片的大小均是示例性而非限制性的。根据本发明的一个实施例,第一装置601包括标识信息查询装置604和第二装置 605。标识信息查询装置604用于根据文件71的定位信息,例如统一资源定位符,向第 一服务器群100进行查询,以确定文件71的标识信息。第二装置605用于根据文件71的标识信息,基于点对点技术在点对点网络300中 下载文件71。根据本发明的一个实施例,第一服务器群100存储的信息还可能包括一个文件的 各分块的数字摘要值,这些数字摘要值与该文件的标识信息(资源标识符)或定位信息 (统一资源定位符)相关联。标识信息查询装置604向第一服务器群100查询,不仅确定文件71的标识信息, 还确定文件71的各分块的数字摘要值。第二装置605将基于点对点技术在点对点网络300中下载文件71。其中,下载装 置600将根据所确定的各分块的数字摘要值对下载的各分块的准确性进行校验。如果校验 无误,则下载装置600将保存下载的分块,并继续下载直至得到完整的文件71。下载装置600对每一个下载的分块执行校验,当发生这样的校验错误的分块数达 到一个预定数目,例如5个,因为此时可以判断为第一服务器群100存储的索引信息是错 的,下载装置600将放弃继续在点对点网络中下载。然后,下载装置600将根据文件71的 定位信息从服务器44重新下载完整的文件71,并将根据重新下载的文件71更新其标识信 息和各分块的数字摘要值,并将这些更新的信息报告给第一服务器群100。第一服务器群 100将根据这些信息来更新所存储的索引信息。根据本发明的一个实施例,第一服务器群100存储了文件头部预定长度内容的数 字摘要值以及文件长度至标识信息的索引信息。第一装置602将根据文件71的定位信息, 从服务器44下载所述预定长度的头部内容,确定该头部的数字摘要值以及文件长度,并根 据该头部的数字摘要值以及文件长度向第一服务器群进行查询,以确定文件71的标识信 息。通常,这样的操作出现在文件的定位信息与文件内容不匹配或者两者的对应关系发生 变化的情况下。根据本发明的一个实施例,第一服务器群100分为多组,各组第一服务器所存储 的索引信息分别与不同的文件相关联。每一组包括至少一个第一服务器。例如,第一服务 器群100包括两个组,第一组包括第一服务器101,第二组包括第一服务器102。一种对索 引信息进行划分的方式如下将文件的数字摘要值对η取模,其中η是第一服务器群100的 分组数量;与模值为0的数字摘要值有关的索引信息存储在第一组第一服务器中;与模值 为1的数字摘要值有关的索引信息存储于第二组第一服务器中;以此类推,与模值为η-1的 数字摘要值有关的索引信息存储于第η组第一服务器中。这样,所有文件的相关索引信息 被比较平均地存储于各组第一服务器中,从而可以降低单个第一服务器的负荷,由整个第 一服务器群100来承担索引信息查询工作。本领域技术人员应能理解,上述第一服务器群 100的分组方式、每组的服务器数量、索引信息的分组存储方式均为示例性而非限制性的。根据本发明的一个实施例,下载装置600还包括一个文件相关信息确定装置,该 装置用于确定文件71的标识信息及其他相关信息,例如文件71的定位信息、文件71的预定长度头部内容的数字摘要值以及文件71的长度信息、等,并将这些信息提供给第一服务 器群100。第一服务器群100将根据这些信息建立与文件71有关的各种索引关系。根据本发明的一个实施例,第二装置605包括节点索引装置606和第三装置607。节点索引装置606将根据文件71的标识信息,例如整个文件的数字摘要值,向第 二服务器群200进行查询,以获取拥有文件71的全部或部分内容的其他节点的寻址信息。第三装置607用于如果存在拥有文件71的全部或部分内容的其他节点,根据其 寻址信息,基于点对点技术从这些节点下载文件71。第二服务器群200用于用户索引,其存储有与文件有关的用户索引列表。一个文 件的用户索引列表包括该文件的标识信息和拥有该文件全部或部分内容的用户节点的寻 址信息。用户终端301通过第二服务器群200索引处于点对点用户终端网络300之中的拥 有文件71的其他用户节点并根据所引结果进行下载。根据本发明的一个实施例,第二服务器群200分为多组,各组第二服务器分别用 于索引拥有不同文件的用户节点。具体地,第二服务器的分组数量可以与第一服务器的分 组数量相同,每一组第二服务器分别对应于一组第一服务器。第二服务器中的用户索引列 表的划分可以采用与第一服务器中的索引信息相同的划分方式,例如将文件的数字摘要 值对η取模,其中η是第二服务器群200的分组数量;与模值为0的数字摘要值对应的文件 有关的用户索引列表存储在第一组第二服务器中;与模值为1的数字摘要值对应的文件有 关的用户索引列表存储于第二组第二服务器中;以此类推,与模值为η-1的数字摘要值对 应的文件有关的用户索引列表存储于第η组第二服务器中。这样,所有文件的用户索引列 表被比较平均地存储于各组第二服务器中,从而可以降低单个第二服务器的负荷,由整个 第二服务器群200来承担用户索引工作。每一组可以包括多个第二服务器。例如,第一组第二服务器包括服务器201、202、 203,对应于第一组第一服务器;第二组第二服务器包括服务器211、212、213,对应于第二 组第一服务器;第11组第二服务器包括服务器2(11-1)1、2(11-1)2、2(11-1)3;等。对于第一组 第二服务器,其中的各服务器201、202、203可以分别设置于不同的网络区域;则处于某一 网络区域的用户节点可以优先地向该区域内的第二服务器查询用户索引列表,以利于节约 整个网络的资源。其余的各组第二服务器亦可以采用类似的设置。因为用户节点所拥有的文件会随着时间变化,相应地,第二服务器群200中的用 户索引列表也需随时间而更新。一种可行的方案是由各用户节点定期地或者周期性地向第二服务器报告所拥有 的文件的标识信息。其中,用户节点中的各文件也根据与第二服务器同样的分组方式进行 分组。用户节点的下载装置600还包括一个报告装置,该报告装置将有关于各组文件的存 在、更新的信息分别报告给各组第二服务器。例如,用户节点301拥有文件71至文件75 的全部或部分内容,其中文件71、73、75的用户索引列表存储于第一组第二服务器,而文件 72,74的用户索引列表存储于第二组第二服务器;用户节点301可以从第一组中选择一个 第二服务器,例如201,从第二组中选择一个第二服务器,例如211,并周期性地向这两个第 二服务器报告;报告的内容可以包括用户节点301所拥有属于该组的文件的标识信息,例 如,发往第二服务器201的报告包括文件71、73、75的数字摘要值,发往第二服务器211的 报告包括文件72、74的数字摘要值。第二服务器将根据接收到的报告来维护及更新所存储的用户索引列表。优选地,各用户节点的下载装置600中的报告装置周期性地向第二服务器报告所 拥有的文件的变化信息,也就是采用增量报告模式。报告装置发往第二服务器201的报告 只需指示相对于上一次报告时发生变化的文件;所报告的变化信息可以包括文件的数字摘 要值和一个与其相关联的表示增加/删除的标识符,例如数字0或1。第二服务器将根据接 收到的变化信息以及所存储的用户索引列表来进行维护和更新。在用户节点所拥有的文件 数量比较多的情况下,采用增量报告模式可以显著地降低报告的开销。当用户节点301中的报告装置向一组第二服务器中的所选择的那一个第二服务 器,例如第一组中的第二服务器201,进行报告时,报告的信息与第二服务器201中存储的 用户索引列表的内容可能出现不匹配的现象而发生错误,当连续发生错误超过一个预定时 间后,用户节点301的下载装置600可以从第一组中重新选择一个第二服务器,例如第二服 务器202,并由报告装置开始向第二服务器202报告所拥有的属于第二组的文件的标识信 息或变化信息。本领域技术人员应能理解,上述用户节点的报告方式、第二服务器中用户索引列 表的更新方式均为示例性而非限制性。为了能够允许来自广域网的访问,用户节点302的下载装置600可以选择 一个具有全局地址的节点,例如穿越服务器88,将用户节点302的内网端点(例如 10.0.0. 1:7777)、其关联的NAT服务器82的外网端点(例如222. 0. 0. 1 8000)告知该穿越 服务器88。用户节点302的下载装置600可以定期地,例如每隔15秒,向穿越服务器88发 送报文;穿越服务器88可以以较低的周期,例如每隔2分钟,向用户节点302反馈报文;从 而使得这一穿越连接得以维持。这样,来自广域网的对用户节点302的访问就可以经由穿 越服务器88的转发而被允许。用户节点302的下载装置600向第二服务器群200报告并 被第二服务器群200存储的寻址信息应包括用户节点302的内网端点、NAT服务器82的 外网端点以及穿越服务器88的端点(例如200. 0. 0.8:9000)。可选地,用户节点302所选择的穿越服务器88是一个具有全局地址的用户节点, 其也设置了下载装置600。用户节点301的下载装置600将使用一个内网端点(例如10. 0. 0. 2:7007)与外 界通信。用户节点301的下载装置600通过与该内网端点相关联的NAT服务器81的一个 外网端点(例如233. 0. 0. 1:8000)接入广域网。用户节点301的节点索引装置606将从第二服务器群200索引到用户节点302的 寻址信息。用户节点301从点对点网络中下载文件71包括从用户节点302下载文件71的 内容。首先,用户节点301的第三装置607将向穿越服务器88发送用于请求与用 户节点302建立点对点连接的报文511。该报文511应包括用户节点302的内网端点 (10. 0. 0. 1:7777)以及与其相关联的NAT服务器的外网端点(222. 0. 0. 1:8000)。然后,穿越服务器88将向用户节点302发送一个报文521。该报文包括用户节点 301的寻址信息。接收到该报文后,用户节点302就得知用户节点301试图与其建立连接。然后,用户节点302将向用户节点301发送一个请求建立连接的报文531。如果用户节点301的第三装置607可以收到该报文531,则用户节点301与302之间的连接建立,用户节点301可以从用户节点302下载文件71的内容。在该实施例中,用户节点301是一个内网用户,与用户节点302的内网端点 10. 0. 0. 1:7777相关联的NAT服务器82的外网端点222. 0. 0. 1:8000至用户节点301的通 道可能并未打通,于是NAT服务器81可能丢弃报文531,用户节点301和302仍无法建立 连接。优选地,用户节点301的第三装置607在发送到穿越服务器88的报文511时,将同 时向NAT服务器82发送一个“握手”报文512,该报文521包括NAT服务器82的外网端点 222. 0. 0. 1:8000,以打通该外网端点与用户节点301之间的连接。则当用户节点302通过 服务器82的该外网端点发送报文531时,NAT服务器81将根据已经打通的连接将该报文 531转发给用户节点301。于是,用户节点301与302之间的连接建立,用户节点301可以 从用户节点302下载文件71的内容。本领域技术人员应能理解,本发明中所称的装置既可以采用软件功能模块来实 现,也可以采用硬件模块来实现,还可以采用软硬件的结合来实现。本领域技术人员应能理解,上述实施例均是示例性而非限制性的。在不同实施例 中出现的不同技术特征可以进行组合,以取得有益效果。本领域技术人员在研究附图、说明 书及权利要求书的基础上,应能理解并实现所揭示的实施例的其他变化的实施例。在权利 要求书中,术语“包括”并不排除其他装置或步骤;不定冠词“一个”不排除多个;术语“第 一”、“第二”用于标示名称而非用于表示任何特定的顺序。权利要求中的任何附图标记均不 应被理解为对保护范围的限制。权利要求中出现的多个部分的功能可以由一个单独的硬件 或软件模块来实现。某些技术特征出现在不同的从属权利要求中并不意味着不能将这些技 术特征进行组合以取得有益效果。
权利要求
1.一种在用户节点中用于文件下载的方法,包括以下步骤A.截获来自一个应用功能实体的、基于第一协议的、用于请求一个文件的请求消息;B.至少基于第二协议,下载所述文件;C.将下载的所述文件提供给所述应用功能实体。
2.根据权利要求1所述的方法,其特征在于,所述请求消息包括所述文件的定位信息;所述步骤B包括Bi.根据所述文件的定位信息,向第一服务器进行查询,以确定所述文件的标识信息;B2.根据所述文件的标识信息,基于点对点技术在点对点网络中下载所述文件。
3.根据权利要求2所述的方法,其特征在于,所述文件被根据第一协议的特点分割为 一个或多个分块,各分块包括多个分片,各分片包括多个子分片;所述步骤B2中以子分片 为单位基于点对点技术进行下载。
4.根据权利要求3所述的方法,其特征在于,所述步骤B还包括-基于第一协议,以分片为单位下载所述文件。
5.根据权利要求2所述的方法,其特征在于,所述步骤B2包括B21.根据所述文件的标识信息,向第二服务器进行查询,以获取拥有所述文件的其他 节点的寻址信息;B22.如果存在拥有所述文件的其他点对点节点,根据所述寻址信息、基于点对点技术 从所述其他点对点节点下载所述文件。
6.根据权利要求1所述的方法,其特征在于,所述第一协议包括超文本传输协议或文 件传输协议,所述第二协议包括基于点对点技术的协议。
7.根据权利要求2至6中任一项所述的方法,其特征在于,所述第一服务器存储的索引 信息包括以下至少一种定位信息至标识信息的索引、文件头部预定长度内容的数字摘要值和文件长度至标识 信息的索引、标识信息至定位信息的索引。
8.根据权利要求7所述的方法,其特征在于,所述第一服务器存储的索引信息包括文 件头部预定长度内容的数字摘要值和文件长度至标识信息的索引;所述步骤B包括-根据所述文件的定位信息,下载所述预定长度的头部内容,确定所述头部的数字摘要 值以及文件长度,并根据所述头部的数字摘要值以及文件长度向第一服务器进行查询,以 确定所述文件的标识信息。
9.根据权利要求2至6中任一项所述的方法,其特征在于,所述第一服务器分为多组, 各组第一服务器所存储的信息分别与不同的文件标识信息相关联。
10.根据权利要求9所述的方法,其特征在于,还包括步骤-确定所述文件的标识信息及其他相关信息,并将这些信息提交给所述第一服务器。
11.根据权利要求5所述的方法,其特征在于,所述第二服务器分为多组,各组第二服 务器分别用于索引拥有不同文件的节点,所述方法还包括步骤-周期性地向各组第二服务器报告所述用户节点所拥有的文件的变化信息或者所拥有 的所有文件的信息。
12.根据权利要求5所述的方法,其特征在于,所述步骤B22包括从一个第二用户节点下载所述文件,所述第二用户节点是一个内网用户,第二用户节点的寻址信息包括其内网 端点、其NAT服务器的公网端点、与其关联的穿越服务器的公网端点,所述步骤B22包括i.向第二用户节点所关联的穿越服务器发送点对点连接请求消息,该请求消息包括第 二用户节点的内网端点、其NAT服务器的外网端点; .接收来自第二用户节点的关于点对点连接的消息,从而建立点对点连接。
13.根据权利要求12所述的方法,其特征在于,所述用户节点是一个内网用户,所述步 骤ii之前还包括一个步骤向第二用户节点的NAT服务器发送点对点连接请求消息,该请求消息包括所述第二用 户节点的NAT服务器的公网端点。
14.根据权利要求5所述的方法,其特征在于,所述用户节点是一个内网用户,所述方 法还包括步骤-选择一个穿越服务器,将所述用户节点的内网端点、所述用户节点的NAT服务器的外 网端点告知该穿越服务器。
15.根据权利要求12至14中任一项所述的方法,其特征在于,所述穿越服务器是一个 用户节点。
16.根据权利要求2至6中任一项所述的方法,其特征在于,所述步骤Bl包括从所述 第一服务器获取所述文件的标识信息和各分块的数字摘要值;所述方法还包括步骤-如果根据下载的分块计算出的数字摘要值与所述从第一服务器所获取的数字摘要值 不匹配的分块数达到预定数目,则根据所述文件的定位信息重新下载完整的所述文件,并 根据重新下载的所述文件更新其标识信息和各分块的数字摘要值,并将更新的所述文件的 标识信息和各分块的数字摘要值报告给所述第一服务器。
17.—种在用户节点中用于文件下载的下载装置,包括第一获取装置,用于截获来自一个应用功能实体的、基于第一协议的、用于请求一个文 件的请求消息;第一装置,用于至少基于第二协议,下载所述文件;第一提供装置,用于将下载的所述文件提供给所述应用功能实体。
18.根据权利要求17所述的下载装置,其特征在于,所述请求消息包括所述文件的定 位信息;所述第一装置包括标识信息查询装置,用于根据所述文件的定位信息,向第一服务器进行查询,以确定所 述文件的标识信息;第二装置,用于根据所述文件的标识信息,基于点对点技术在点对点网络中下载所述 文件。
19.根据权利要求18所述的下载装置,其特征在于,所述文件被根据第一协议的特点 分割为一个或多个分块,各分块包括多个分片,各分片包括多个子分片;所述第二装置以子 分片为单位基于点对点技术进行下载。
20.根据权利要求19所述的下载装置,其特征在于,所述第一装置还用于 -基于第一协议,以分片为单位下载所述文件。
21.根据权利要求17所述的下载装置,其特征在于,所述第二装置包括节点索引装置,用于根据所述文件的标识信息,向第二服务器进行查询,以获取拥有所 述文件的其他节点的寻址信息;第三装置,如果存在拥有所述文件的其他点对点节点,根据所述寻址信息、基于点对点 技术从所述其他点对点节点下载所述文件。
22.根据权利要求17所述的下载装置,其特征在于,所述第一协议包括超文本传输协 议或文件传输协议,所述第二协议包括基于点对点技术的协议。
23.根据权利要求18至22中任一项所述的下载装置,其特征在于,所述第一服务器存 储的索引信息包括以下至少一种定位信息至标识信息的索引、文件头部预定长度内容的数字摘要值和文件长度至标识 信息的索引、标识信息至定位信息的索引。
24.根据权利要求23所述的下载装置,其特征在于,所述第一服务器存储的索引信息 包括文件头部预定长度内容的数字摘要值和文件长度至标识信息的索引;所述第一装置还用于-根据所述文件的定位信息,下载所述预定长度的头部内容,确定所述头部的数字摘要 值以及文件长度,并根据所述头部的数字摘要值以及文件长度向第一服务器进行查询,以 确定所述文件的标识信息。
25.根据权利要求18至M中任一项所述的下载装置,其特征在于,所述第一服务器分 为多组,各组第一服务器所存储的信息分别与不同的文件标识信息相关联。
26.根据权利要求25所述的下载装置,其特征在于,还包括文件相关信息确定装置,用于确定所述文件的标识信息及其他相关信息,并将这些信 息提交给所述第一服务器。
27.根据权利要求21所述的下载装置,其特征在于,所述第二服务器分为多组,各组第 二服务器分别用于索引拥有不同文件的节点,所述下载装置还包括报告装置,用于周期性地向各组第二服务器报告所述用户节点所拥有的文件的变化信 息或者所拥有的所有文件的信息。
28.根据权利要求21所述的下载装置,其特征在于,所述第三装置执行的操作包括从 一个第二用户节点下载所述文件,所述第二用户节点是一个内网用户,第二用户节点的寻 址信息包括其内网端点、其NAT服务器的公网端点、与其关联的穿越服务器的公网端点,所 述第三装置还用于-向第二用户节点所关联的穿越服务器发送点对点连接请求消息,该请求消息包括第 二用户节点的内网端点、其NAT服务器的外网端点;-接收来自第二用户节点的关于点对点连接的消息,从而建立点对点连接。
29.根据权利要求观所述的下载装置,其特征在于,所述用户节点是一个内网用户,所 述下载装置还用于向第二用户节点的NAT服务器发送点对点连接请求消息,该请求消息包括所述第二用 户节点的NAT服务器的公网端点。
30.根据权利要求21所述的下载装置,其特征在于,所述用户节点是一个内网用户,所 述下载装置还用于-选择一个穿越服务器,将所述用户节点的内网端点、所述用户节点的NAT服务器的外 网端点告知该穿越服务器。
31.根据权利要求观至30中任一项所述的下载装置,其特征在于,所述穿越服务器是 一个用户节点。
32.根据权利要求18至22中任一项所述的下载装置,其特征在于,所述标识信息查询 装置还用于从所述第一服务器获取所述文件的标识信息和各分块的数字摘要值;所述下载装置还用于-如果根据下载的分块计算出的数字摘要值与所述从第一服务器所获取的数字摘要值 不匹配的分块数达到预定数目,则根据所述文件的定位信息重新下载完整的所述文件,并 根据重新下载的所述文件更新其标识信息和各分块的数字摘要值,并将更新的所述文件的 标识信息和各分块的数字摘要值报告给所述第一服务器。
33.一种客户端软件,用于实现权利要求1至16中任一项所述的方法,该客户端软件包 括分别用于实现相应方法的各步骤的指令代码。
34.一种存储介质,其存储了用于实现权利要求1至16中任一项所述方法的各步骤的 指令代码。
全文摘要
本发明涉及基于多协议的文件传输方法及装置。根据本发明的一个实施例,提供了一种在用户节点中用于文件下载的方法,包括以下步骤A.截获来自一个应用功能实体的、基于第一协议的、用于请求一个文件的请求消息;B.至少基于第二协议,下载所述文件;C.将下载的所述文件提供给所述应用功能实体。通过使用本发明提供的方法、软件、存储介质,客户端基于第一协议从网络中下载文件时可以获得较传统服务器-客户端架构下更快的下载速度,从而提高了用户体验。
文档编号H04L29/12GK102082807SQ200910199799
公开日2011年6月1日 申请日期2009年12月1日 优先权日2009年12月1日
发明者朱巍, 汪奕菲, 王闻宇 申请人:突触计算机系统(上海)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1