具体实施方式
本发明实施例提供了一种网络资源下载方法,装置及系统,用于提高网络资源下载的可靠性和效率,提升用户的下载体验。
请参阅图1,本发明实施例中网络资源下载方法一个具体实施例包括:
101、通过网络资源数据包获取到用户请求信息和网络资源的大小。
当节点在网络中传输网络资源数据包时,网络资源下载装置能够通过该网络资源数据包获取到用户请求信息(get announce)和网络资源的大小,其中,用户请求信息包括:tracker地址,密钥字段(passkey),info部分的哈希值(info hash),下载字段和剩余字段等,下载字段为用户请求信息中download字段的内容,剩余字段为用户请求信息中left字段的内容。
用户请求信息中的tracker地址是直接从传输控制协议(TCP,TransmissionControl Protocol)包头中提取网络之间互连的协议(IP,Internet Protocol)及端口号而得到,用户请求信息中的info部分的哈希值是对种子文件的info部分进行安全散列算法(SHA-1,Secure Hash Algorithm-1)计算而得到的一个20字节长的数据,用于唯一标识一个BT资源。用户请求信息是一个标准的超文本传输协议(HTTP,Hyper Text Transfer Protocol)get请求。
102、使用用户请求信息与服务器进行交互,获得网络资源的节点列表和分片大小。
在步骤101中,获取到info部分的哈希值,网络资源的大小之后,通过对BT协议的分析,只要再获取到节点列表和分片大小,就能够与节点列表中存储有网络资源的节点进行交互,节点通过与服务器进行交互可以从服务器获取到该网络资源的节点列表。其中,交互具体是指:节点把用户请求信息发送给服务器,服务器收到用户请求信息后,返回节点列表到节点。其中,该服务器可以为运行tracker程序的服务器。
在本步骤102中,通过模拟PT系统中节点与服务器的交互过程,即将用户请求信息发送给服务器,从而能够从服务器获取到节点列表,同时通过分析计算可以获取到网络资源的分片大小,关于分片大小的获取将在后续实施例中介绍。
103、根据网络资源的info部分的哈希值,网络资源的大小和分片大小,与节点列表中的节点进行交互,对网络资源进行下载。
当获取到分片大小后,根据分片大小和节点列表中的任一节点进行交互,向该节点请求下载某个分片,从而能够从该节点返回的分片消息中提取分片数据,完成对网络资源的一个分片的下载,由于已经获取到info部分的哈希值和网络资源的大小,则能够不断地和节点列表中的节点进行交互,完成对网络资源的下载。
在本发明实施例中,通过网络资源数据包获取到网络资源的用户请求信息和网络资源的大小,并使用用户请求信息与服务器进行交互,获得网络资源的节点列表和分片大小,从而根据获取到的上述信息从节点列表中的节点处下载到网络资源,由于在网络资源的下载过程中,不需要用户提供PT账号和种子文件即可以对网络资源进行下载,提高了网络资源下载的可靠性和效率,提升了用户的下载体验。
进一步地,请参阅图2,本发明实施例中网络资源下载方法的另一个具体实施例包括:
201、对网络资源数据包进行抓包,获取到用户请求信息,并通过用户请求信息获取到网络资源的大小。
对节点在网络中传输的网络资源数据包进行抓包,得到用户请求信息,将用户请求信息中的下载字段的值和剩余字段的值进行相加,即可得到网络资源的大小。其中,抓包方法是在传送数据流的传输设备上开辟一个分路,通过传输设备(如网线或光纤)自动将分路后的数据流连接到抓包设备上。需要说明的是,在本发明实施例中通过抓包的方法只是获取到用户请求信息的其中一种实现方式,在实际应用中仍可以采取其他的实现方式,此处不作限定。
在本发明实施例中,网络资源数据包也可以为网络中的上行数据包,或者上行数据包的镜像或分光,网络资源下载装置在对镜像或分光后的数据包进行抓包时,不会对原有网络造成干扰。本实施例的网络资源数据包,可以是真正携带有网络资源的数据包,也可以是在节点发送真正携带有网络资源的数据包之前,该节点为了与其他接收方之间建立连接而发送的交互数据包。
202、判断该网络资源是否满足预置的条件,若是,执行步骤203,若不是,结束整个过程。
该步骤中网络资源下载装置可以实现有选择地下载网络资源,用户可以预置一个条件,对该网络资源进行判断是否满足该预置的条件,若是,再触发后续的步骤,若不是,则直接结束整个过程,以提高下载资源的针对性。
需要说明的是,在本发明实施例中,预置的条件可以为热门资源,即判断该网络资源是否为热门资源,其中,定义被下载的次数超过该预置的数值的网络资源为热门资源,若是,然后再触发后续步骤,以实现下载网络资源的针对性。
其中,热门资源只是其中一种具体的实际情况,在其他实施例中,预置的条件还可以为冷门资源,或者在一定时间范围内下载次数在一定范围内的资源,或者是资源大小在一定范围内的资源。简言之,本步骤是根据资源的信息,满足预置条件的资源进行筛选。
203、将用户请求信息的下载字段的值和剩余字段的值进行重置,获得新的用户请求信息。
当获取到用户请求信息后,通过对用户请求信息中的下载字段的值和剩余字段的值进行重置,作为新的用户请求信息,其中,新的用户请求信息的下载字段的值为零,新的用户请求信息的剩余字段的值为步骤201中计算出的网络资源的大小,新的用户请求信息中的其它字段不作修改,以保证服务器和节点能够识别。
通过对现有的PT下载的分析,重新构造用户请求信息,将下载字段的值设置为零,剩余字段的值设置为网络资源的大小,则网络资源下载装置在与服务器进行交互时,服务器能够判断出下载字段的值为零,会认为该用户还没有进行网络资源下载,不会要求该用户在下载时进行上传,能够节省一定的网络资源。
需要说明的是,本步骤主要介绍下载字段的值可以被重置,具体可以为零只是其中的一种实现方式的举例说明。在特定的情形下,或者根据服务器制定的特定规则,下载字段的值也可以重置为一个非零的数值,比如一个较小的数值也可以。
204、使用新的用户请求信息发送给服务器,接收服务器返回的节点列表。
网络资源下载装置模拟PT系统中节点与服务器的交互过程,将重新构造的用户请求信息发送给服务器,服务器对密钥进行验证成功后,会向网络资源下载装置返回一个网络资源的节点列表,该节点列表中记载了拥有该网络资源的所有节点,网络资源下载装置能够从该节点列表中选择任一节点进行交互。
205、从节点列表中选择任一节点进行交互,获得该节点返回的分片位图消息。
根据节点列表中记载的节点,选择其中任意一个节点进行交互:向该节点发送请求,能够获取到该节点返回的分片位图消息(bit field),与该节点相互通报各自拥有的资源分片,从该消息中可以获得消息长度字段(MessageLength)。
206、通过分片位图消息中的消息长度字段,计算出网络资源的分片数区间。
其中,分片数区间为网络资源的分片数的值所在的数值范围。具体可以采用如下方式计算出分片数区间:首先,得到分片位图消息的数据(data)部分有多少个字节,使用的公式为Message Length-1。通过对BT协议可知,一个数据部分的每一位(bit)表示一个分片,由于1字节=8位,通过分片位图消息的数据部分的长度(nBitfieldBytes)可以确定分片数区间为:
[(nBitfieldBytes*8-7),(nBitfieldBytes*8)],则网络资源的分片数的值必定在该分片数区间内。
207、选取一种试用分片大小,计算出试用分片数。
通过BT协议可知,分片大小为2k+3千字节,k为自然数。对k进行赋值,则首先可以确定一个试用分片大小,然后用网络资源的大小除以选取的试用分片大小,可以计算出一个试用分片数。
208、将计算出的试用分片数的值和步骤206中计算出的分片数区间进行比较,判断计算出的试用分片数的值是否在分片数区间内,若是,转到步骤209,若不是,重新执行步骤207,选取另外一种试用分片大小,再次计算试用分片数。
209、将选取的试用分片大小作为网络资源的分片大小进行存储。
210、根据网络资源的info部分的哈希值,网络资源的大小和分片大小,与节点列表中的节点进行交互,对网络资源进行下载。
当获取到分片大小后,根据分片大小能够和节点列表中的任一节点进行交互,向该节点请求下载某个分片,从而能够从该节点返回的分片消息中提取分片数据,完成对网络资源的一个分片的下载,由于已经获取到info部分的哈希值和网络资源的大小,则能够不断地和节点进行交互,完成对网络资源的下载。
在本发明实施例中,通过网络资源数据包获取到网络资源用户请求信息和网络资源的大小,并重新构造一个新的用户请求信息与服务器进行交互,获得网络资源的节点列表和分片大小,从而根据获取到的上述信息从节点列表中的节点处下载到网络资源,由于重构的用户请求信息中的下载字段的值可以为零,不需要用户在下载的同时进行上传,能够节省网络资源,另外由于在网络资源的下载过程中,不需要用户提供PT账号和种子文件即可以对网络资源进行下载,提高了网络资源下载的可靠性和效率,不需要计算用户的分享率,提升了用户的下载体验。
为了便于理解,下面以一应用场景对本发明实施例中的网络资源下载方法进行介绍,请参阅图3:
网络资源下载装置对第一节点在网络中传输的网络资源数据包进行抓包,获得用户请求信息:get announce?passkey=abc&info_hash=2586b89ch425781e56d8&download=1253265&left=1125124&...,则网络资源的大小为download值和left值之和,即1253265+1125124=2378389字节。
获取到用户请求信息和网络资源的大小后,可以对该网络资源进行判断是否满足一个预置的条件,用户可以预置一个条件,若是,再触发后续的步骤,若不是,则直接结束整个过程,以实现下载网络资源的针对性。
重新构造一个新的用户请求信息,将下载字段的值设置为零,将剩余字段的值设置为该网络资源的大小,该新的用户请求信息为:
get announce?passkey=abc &info_hash=2586b89ch425781e56d8&download=0&left=2378389&...
将新的用户请求信息发送给服务器,接收服务器返回的节点列表,该节点列表如表1所示:
peer |
IP地址 |
端口号 |
peer1 |
10.1.1.1 |
6881 |
peer2 |
10.1.1.5 |
6881 |
peer3 |
10.1.1.3 |
6881 |
peer4 |
10.1.1.7 |
6881 |
从该节点列表中选择任一节点进行交互,在此处选取peer 1进行交互,获得peer 1返回的分片位图消息,相互通报各自拥有的资源分片,从该分片位图消息中可以获得消息长度字段=4,则数据部分的长度(标记为nBitfieldBytes)=3,由分片数区间公式:
[(nBitfieldBytes*8-7),(nBitfieldBytes*8)],可得该网络资源的分片数区间是[17,24]。
通过对BT协议的分析,可获知,分片大小为2k+3千字节,k为自然数,常见的分片大小为:16K,32K,64K,128K,256K,512K,1M,2M,4M...
首先可以从常见的分片大小中选取一个试用分片大小,然后用网络资源的大小除以选取的试用分片大小,可以计算出一个试用分片数,然后,判断计算出的试用分片数的值是否在分片数区间内,若是,将选取的试用分片大小作为网络资源的分片大小进行存储;若不是,则重新选取一种试用分片大小,重复上述方法进行判断,如下表2所示:
网络资源的大小 |
试用分片大小 |
计算出的试用分片数 |
是否在[17,24]区间 |
2378389Bytes |
16KB |
145.1653442 |
不在 |
2378389Bytes |
32KB |
72.58267212 |
不在 |
2378389Bytes |
64KB |
36.29133606 |
不在 |
2378389Bytes |
128KB |
18.14566803 |
在 |
表2中选取了4个试用分片大小,当分片大小为128K时,计算出的试用分片数为18.14566803,则恰好在分片数区间[17,24]内,则将所选取的试用分片大小128K作为该网络资源的分片大小进行存储。
根据获取到的分片大小128K能够和节点列表中的任一节点进行交互,向该节点请求下载某个分片,从而能够从该节点返回的分片消息中提取分片数据,完成对网络资源一个分片的下载。由于已经获取到info部分的哈希值和网络资源的大小,则能够不断地和节点进行交互,完成对网络资源的下载。
以上内容对本发明实施例中的网络资源下载方法进行了描述,下面对网络资源下载装置进行描述,在实际应用中,网络资源下载装置具体可以为BT或PT下载的客户端或缓存系统等,例如可以是HTTP缓存,HTTP在线视频缓存,P2P缓存等缓存系统,该缓存系统可以是缓存服务器或缓存服务器集群等,用于部署在网络出口处,连接交换机等设备,对于网络上的热点资源进行缓存,并将用户对外部网络的访问引导到缓存系统,拦截各区域P2P访问外网的下载请求,并将其重定向,再根据策略调度到各区域内网的缓存服务器上下载。从从而减少网络间流量,提高用户体验。此处只是举出了一些实例,不应理解为对本发明的限定。本发明实施例中的网络资源下载装置可以应用前述各实施例的网络资源下载方法,由于二者之间的对应性,为了内容的简洁,后续不再进行详细的举例。
请参阅图4,本发明实施例的网络资源下载装置的一个例子包括:
获取单元401,用于通过网络资源数据包获取到用户请求信息和网络资源的大小,其中,用户请求信息包括:tracker地址,密钥字段,info部分的哈希值,下载字段和剩余字段;
交互单元402,用于使用用户请求信息与服务器进行交互,获取到网络资源的节点列表和分片大小;
网络资源下载单元403,用于根据info部分的哈希值,网络资源的大小和分片大小,与节点列表中的节点进行交互,对网络资源进行下载。
各单元之间的交互过程如下:交互单元402根据获取单元401的获取到的用户请求信息与服务器进行交互,获取到网络资源的节点列表和分片大小,网络资源下载单元403根据交互单元402获取到的节点列表和分片大小以及获取单元401获取到的info部分的哈希值,能够与节点列表中的节点进行交互,对网络资源进行下载。
在本发明实施例中,网络资源下载装置通过网络资源数据包获取到网络资源的用户请求信息和网络资源的大小,并使用用户请求信息与服务器进行交互,获得网络资源的节点列表和分片大小,从而根据获取到的上述信息从节点列表中的节点处下载到网络资源,由于在网络资源的下载过程中,不需要用户提供PT账号和种子文件即可以对网络资源进行下载,提高了网络资源下载的可靠性和效率,提升了用户的下载体验。
进一步地,下面以另一个实施例对本发明实施例中的网络资源下载装置进行描述,具体请参阅图5,本发明实施例中网络资源下载装置的另一个实施例包括:
获取单元501,具体用于对网络资源数据包进行抓包,获得用户请求信息,其中,用户请求信息包括:tracker地址,密钥字段,info部分的哈希值,下载字段和剩余字段;对用户请求信息中的下载字段的值和剩余字段的值进行相加,得到网络资源的大小;
判断单元502,用于判断网络资源是否满足预置的条件,若是,则触发重置单元503执行;
重置单元503,用于将用户请求信息的下载字段的值和剩余字段的值进行重置,作为新的用户请求信息,其中,新的用户请求信息的下载字段的值为零,新的用户请求信息的剩余字段的值为网络资源的大小;
交互单元504,包括:节点列表获取模块5041,用于将用户请求信息发送给服务器,接收服务器返回的节点列表;分片位图消息获取模块5042,用于从节点列表中选择节点进行交互,获得该节点返回的分片位图消息;分片数区间计算模块5043,用于通过分片位图消息中的消息长度字段,计算出网络资源的分片数区间,分片数区间为网络资源的分片数的值所在的数值范围;分片大小预设模块5044,用于选取一种试用分片大小,计算出试用分片数,试用分片数为网络资源的大小除以所选取的试用分片大小的值;判断模块5045,用于判断计算出的试用分片数的值是否在分片数区间内,若是,则触发存储模块5046执行,若不是,则触发分片大小预设模块5044;存储模块5046,用于将选取的试用分片大小作为网络资源的分片大小进行存储;
网络资源下载单元505,用于根据info部分的哈希值,网络资源的大小和分片大小,与节点列表中的节点进行交互,对网络资源进行下载。
各单元之间的交互过程和图4中所示的各单元之间的交互过程相同,此处不再赘述。
交互单元504中各模块之间的交互过程如下:分片位图消息获取模块5042从节点列表获取模块5041中获取到的节点列表中选择节点进行交互,能够获得分片位图消息,分片数区间计算模块5043根据该分片位图消息能够计算出该网络资源的分片数区间,分片大小预设模块5044选取一种试用分片大小,计算出试用分片数,判断模块5045能够对计算出的试用分片数进行判断,若根据选取的试用分片大小计算出的试用分片数的值在分片数区间内,则存储模块5046将选取的试用分片大小作为网络资源的分片大小进行存储,若根据选取的试用分片大小计算出的试用分片数的值不在分片数区间内,则触发分片大小预设模块5044重新执行。
在本发明实施例中,网络资源下载装置通过对网络资源数据包获取到网络资源的用户请求信息和网络资源的大小,并重构一个新的用户请求信息与服务器进行交互,获得网络资源的节点列表和分片大小,从而根据获取到的上述信息从节点列表中的节点处下载到网络资源,其中,该服务器可以是运行tracker程序的服务器,由于重构的用户请求信息中的下载字段的值可以为零,不需要用户在下载的同时进行上传,能够节省网络资源,另外由于在网络资源的下载过程中,不需要用户提供PT账号和种子文件即可以对网络资源进行下载,不需要计算用户的分享率,提高了网络资源下载的可靠性和效率,提升了用户的下载体验。
以上内容对本发明实施例中的网络资源下载装置进行了介绍,下面以一个实施例对本发明实施例中的网络资源下载系统进行描述,具体请参阅图6,本发明实施例中网络资源下载系统一个实施例包括:
第一节点601,用于在网络中传输网络资源数据包;
网络资源下载装置602,具体如图4或图5中所示的网络资源下载装置;
第二节点603,用于向网络资源下载装置602提供网络资源,使得网络资源下载装置602能够对网络资源进行下载。
网络资源下载系统中的各单元模块的交互过程如下:
网络资源下载装置602从第一节点601传输的网络资源数据包获取到用户请求信息和网络资源的大小,并从第二节点603下载网络资源。
在实际应用中,第一节点601可以具体为网络中的用户,该用户可以是网络中的主机或服务器等,此处不做限定,该用户可以将发送的网络资源数据包在网络中传输,网络资源下载装置602可以具体为网络资源的缓存系统,该缓存系统通过用户传输的网络资源数据包可以获取到用户请求信息和网络资源的大小,并能够从网络中的另一个用户那里下载该网络资源,整个过程不需要该缓存系统提供账号或种子,其中,网络中的另一个用户为第二节点603的一种具体实现方式。
在本发明实施例中,网络资源下载系统通过网络资源数据包获取到网络资源的用户请求信息和网络资源的大小,与服务器进行交互,获得网络资源的节点列表和分片大小,从而能够下载到网络资源,其中,该服务器可以是运行tracker程序的服务器,由于在网络资源的下载过程中,不需要用户提供PT账号和种子文件即可以对网络资源进行下载,提高了网络资源下载的可靠性和效率,提升了用户的下载体验。
在实际的网络应用中,例如针对网络运营商而言,可以在网络出口处安装本发明实施例中的网络资源下载装置,可以将网络中的某些资源如热门资源等预先通过本发明实施例中的网络资源下载装置缓存下来,然后,当用户从外网下载资源时,对用户在网络中传输的用户请求信息进行判断,若本发明实施例中的网络资源下载装置已缓存有该网络资源,将用户请求重定向到内网中的网络资源下载装置,从而使得用户能够从该网络资源下载装置下载网络资源,由于此时在内网中实现了对网络资源的下载,可以加速用户的下载,同时节省网络间流量,即节省网络间结算费用。
本发明实施例也可应用于网络安全领域,通过在网络设备中(例如防火墙)嵌入上述网络资源下载装置或在节点上附加应用该上述网络资源下载装置,来实时监控网络中的热点PT资源,不需要用户提供PT账号和种子文件即可以对网络资源进行下载,分析其是否为非法、暴力、色情、盗版数据,以提升设备的功能与竞争力;或用于版权、安全部门对网络中传播的PT资源进行监控。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上对本发明所提供的一种网络资源下载方法,装置及系统进行了详细介绍,对于本领域的一般技术人员,依据本发明实施例的思想在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。