发明内容:
本发明的目的在于提出一种方法,使一个(些)伪客户端——即本发明,进入对应的P2P文件共享网络,通过与该网络中的索引服务器和对等节点进行数据通信,来进行该网络中某关注文件的对等节点的发现。并且通过优化过的数据通信流程来达到最大限度的对等节点的发现。
本发明的特征在于:
所述基于中心索引的P2P文件共享网络是以至少一个索引服务器为中心的星形网络,所述方法是在支持所述索引服务器进行检索服务的这种P2P网络中依次按以下步骤实现的:步骤(1),伪客户端,所述伪客户端是指按照特定协议通信的、旨在进行对等节点发现的客户端,逐个地通过向索引服务器发送登录请求以登录每个所述索引服务器,获得尽可能多的索引服务器信息,所述索引服务器信息包括索引服务器的IP地址和端口,步骤如下:
步骤(1.1),伪客户端从所有未连接过的所述索引服务器中任选一个进行连接:若连接成功,标志该索引服务器为活跃的索引服务器;若连接失败,则标志该索引服务器为非活跃的索引服务器;重复步骤(1.1),直到标志完所有未连接过的所述索引服务器为止;
步骤(1.2),向所连接成功的索引服务器发送登录请求:若得到登录成功确认,则标志该索引服务器为可访问索引服务器,发送请求以获得更多索引服务器,将返回的索引服务器信息保存到已构筑的索引服务器列表中;若得到拒绝登录的回复,则标记该索引服务器为不可访问索引服务器;关闭连接并重复步骤(1.2),直到遍历完所有连接成功的所述的活跃的索引服务器为止;
步骤(1.3),伪客户端编制所述可访问的索引服务器列表,并标记其中全部索引服务器为未搜索;
步骤(2),伪客户端通过文件搜索,选择自己关注的大量文件信息,其步骤如下:
步骤(2.1),从步骤(1.3)所述的索引服务器列表中选择一个被标志为未搜索的索引服务器进行连接并标志其为已搜索,执行步骤(2.2);
步骤(2.2),向步骤(2.1)中所述的索引服务器发送登录请求并等待确认回复;
步骤(2.3),向所述索引服务器发送空的共享文件列表,并执行以下步骤;
步骤(2.3.1),客户端通过读取数据库,或读取文件,或读取IO输入的方式中的任何一种方式获得客户端自己关注的关键字集合;
步骤(2.3.2),对于从步骤(2.3.1)所获得的关键字向所述索引服务器发送一个或一些关键字搜索的请求,等待回应;
步骤(2.3.3),收到所述索引服务器对关键字搜索请求的回应信息,其中至少会包含文件名,文件大小以及文件的唯一标识符;
步骤(2.3.4),伪客户端等到所有关键字的搜索请求都被回应后,保存结果;
步骤(2.3.5),从所述步骤(2.3.4)得到的对应于所有关键字的回应信息中,最终选择该伪客户端关注的文件,包括:文件名,文件大小和唯一标识符;
步骤(2.4),重复步骤(2.1)~步骤(2.3);一直到所有已被标志为可访问的索引服务器都被标志为已搜索为止;
步骤(3),伪客户端按以下步骤,根据已在步骤(2)中得到的文件,通过所述索引服务器发现对等节点:
步骤(3.1),从所有被标志为已搜索的索引服务器中任意选择一个索引服务器进行连接,并标志该索引服务器为已询问;
步骤(3.2),向步骤(3.1)中所述索引服务器发送登录请求,并等待确认回复;
步骤(3.3),在得到确认后,使用所述文件的唯一标识符和文件大小,向所述索引服务器发送要求获得该文件的对等节点的请求,并等待回应;
步骤(3.4),若所述索引服务器不回复,则返回步骤(3.1);否则,在收到回复后,执行步骤(3.5);
步骤(3.5),解码所述索引服务器的回复信息,其中包括所述对等节点的IP地址和端口,并保存结果,作为基于来源交换发现对等节点的先决条件;
步骤(3.6),重复步骤(3.1)~步骤(3.5),一直到遍历完所有未被标志为已询问的索引服务器为止,并构筑对等节点列表,标记其中所有对等节点为未访问;
步骤(4),伪客户端按以下步骤,根据在步骤(3)中最后获得的对等节点列表进行基于来源交换的对等节点的发现:
步骤(4.1),从所有标志为未访问的对等节点中任选一个进行连接,并标志当前对等节点为已访问;若连接成功,执行步骤(4.2);否则,重复步骤(4.1);
步骤(4.2),向步骤(4.1)中所述对等节点发送握手消息并等待回复;若成功收到回复消息,执行步骤(4.3);否则,返回步骤(4.1);
步骤(4.3),伪客户端和步骤(4.2)中所述的对等节点双方进行身份认证,若认证成功,执行步骤(4.4);否则返回步骤(4.1);
步骤(4.4),向步骤(4.3)中所述的对等节点发送要求进行来源交换的请求,并等待对方回复信息;
步骤(4.5),若收到回复信息,对于其中含有的其他对等节点的IP地址和端口,如果已存在于步骤(3.6)所述对等节点列表内,则抛弃;否则把该对等节点加入到所述对等节点列表内,并标志为未访问;若未收到回复信息,则返回步骤(4.1);
步骤(4.6),重复步骤(4.1)~步骤(4.5),直到遍历完所有标志为未访问的对等节点为止;来源交换部分结束。
本发明的效果是:
1能够在发现对等节点的过程中探索到一批索引服务器,可以通过对索引服务器的可访问性进行控制来控制该P2P文件共享网络的使用;2能够检测到某P2P文件共享网络中的共享文件信息,并能够关联到一批正在对其进行上传下载的对等节点;3能够最大数量地发现对等节点。
具体实施方式:
本发明依次含有以下内容:
1索引服务器发现:
(1)原理描述
中心索引的P2P文件共享网络是以索引服务器为中心的星形网络。所有的P2P网络中的数据交换几乎都与索引服务器有关:客户端(包括本发明中的伪客户端)都要首先登录到索引服务器上,然后向其发送相应请求,通过得到答复信息来获得预期结果。所以说,获得索引服务器是一个重要的过程,获得越多的活跃的索引服务器,就能获得更多的索引服务器信息,文件信息和对等节点信息。
在本过程中,登录上索引服务器后,通过向其发送获得索引服务器信息的请求后,获得索引服务器回复并解码可获得大量索引服务器信息。
(2)处理过程
先决条件:已知至少一个活跃的索引服务器的有效信息,包括索引服务器的IP地址和端口,以用于连接从而进行必要的数据通信。
预期结果:获得并筛选出所有活跃的索引服务器的有效信息。
步骤0:如果索引服务器列表中不存在标记为未连接的索引服务器,跳转到步骤5。否则执行步骤1。
步骤1:从所有未连接的索引服务器中选取一个索引服务器并连接之,如果连接成功,标记其为活跃索引服务器,并进行步骤2;否则标记为非活跃索引服务器,并重复步骤1所描述的过程。
步骤2:向所连接成功的索引服务器发送登录请求,如果登录成功,即返回登录成功的确认,则标记其为可访问索引服务器,并进行步骤3;否则,即返回拒绝消息,标记其为不可访问索引服务器,关闭连接并重复步骤1所描述的过程。
步骤3:向已经登录的索引服务器发送获得其他索引服务器列表的请求,索引服务器会返回一个数据包,其中包含其已知的所有索引服务器信息,通过解数据包,能够获得大量索引服务器信息,其中包括活跃的和非活跃的,可访问的和不可访问的索引服务器。执行步骤4。
步骤4:将步骤3中获得的每个索引服务器信息按照如下标准进行操作:如果索引服务器信息已经被标记为活跃或者被标记为非活跃,则抛弃这个索引服务器信息;否则将其加入索引服务器列表,并将其标记为未连接索引服务器。完成上述操作后进行步骤0。
步骤5:服务器发现部分结束。
2文件搜索:
(1)原理
中心索引的P2P文件共享网络的索引服务器为了保证能够向其他客户端提供服务,强制每个登录上的客户端向其提供当前客户端所共享的所有文件信息或者以其他形式强迫客户端共享文件信息,在接到客户端提供的共享的文件信息后,索引服务器才会回复客户端提出的关于文件的相关信息的请求。这里,在提供共享文件列表后,向索引服务器发送包含关键字在内的获得文件的请求,获得索引服务器回复后并解码可以获得大量文件信息,有时还会回复相应的对等节点信息,用户可从中选择出关注的文件进行对等节点的发现。
(2)处理过程
先决条件:1至少拥有一个可访问的索引服务器的有效信息,以用于连接;2关注文件的文件名的关键字信息,并以此进行必要的数据通信。
预期结果:获得相当大的数量的文件信息和一些对应的活跃的对等节点信息,这些文件的文件名中都包含先决条件2中的关键字。这些文件信息都包含有先决条件中提供的关键字(所获得的对等节点是4中基于来源交换的对等节点的发现的先决条件,以用于连接并获得更大数量的对等节点信息)。
步骤0:如果索引服务器列表中的所有已被标记为可访问的索引服务器都被标记为已搜索,跳转到步骤7。否则执行步骤1。
步骤1:从所有未被标记为已搜索的索引服务器中选取一个索引服务器并连接之,并进行步骤2。
步骤2:向索引服务器发送登录请求并等待确认回复,并进行步骤3。
步骤3:向索引服务器发送空共享文件列表——这里没有必要向索引服务器提供任何有实质意义的信息,并进行步骤4。
步骤4:获得关注的关键字集合,可以通过读取数据库,读取文件或者读取IO输入等手段,完成后进行步骤5。
步骤5:对于步骤4中所输入的每个关键字,向索引服务器发送一个关键字搜索的请求,并等待索引服务器其回应。其回应信息包含大量的文件信息,其中包含文件的文件名,文件大小,文件的唯一标识符等(有些网络还会有一个对等节点的信息和<或>其他信息等)。所有关键字的搜索请求都被回应后,标记当前索引服务器为已搜索,并进行步骤6。
步骤6:将步骤5中的结果保存,得到关注的文件名,文件大小,文件唯一标识符(和对等节点信息等)。执行步骤0。
步骤7:文件搜索方法1结束。3对于给定文件,对其进行索引服务器上的对等节点的发现:
(1)原理
索引服务器支持一定程度上的对等节点的检索服务,客户端可以使用文件的唯一标识符(和文件大小)向索引服务器提出请求,要求获得拥有该文件的对等节点的信息,索引服务器将会以一些对等节点的信息作为回应。获得的这些对等节点的信息,可以作为基于来源交换的对等节点发现部分的先决条件,用以进行来源交换以获得更大数量的对等节点的信息。
(2)处理过程
先决条件:1至少拥有一个可访问的索引服务器的有效信息,以用于连接;2提供关注文件的文件唯一标识符(和文件大小)(从文件搜索部分的结果中选出),并以此进行必要的数据通信。
预期结果:获得部分对等节点的信息,包括对等节点的IP地址和端口等。
步骤0:从所有标记为未询问的索引服务器中选取一个并连接之,并进行步骤1。如果所有索引服务器都被标记为已询问,跳转到步骤6。
步骤1:向索引服务器发送登录请求并等待确认回复。完成后进行步骤2。
步骤2:获得用户关注的文件信息,包括文件唯一标识符(和文件大小),从文件搜索的结果中获得。执行步骤3。
步骤3:向索引服务器发送要求对等节点的请求,并等待回复。如果索引服务器不做回复,执行步骤0,否则执行步骤4。
步骤4:解码索引服务器的回应,可以获得一些对等节点的信息,即对等节点的IP地址和端口等。执行步骤5。
步骤5:保存步骤4中的有效信息,即将对等节点的IP地址和端口,以及对应的索引服务器IP地址和端口记录下来。上述信息也将作为基于来源交换的对等节点的发现的先决条件。完成后执行步骤0。
步骤6:索引服务器上的对等节点发现部分结束。
4对于给定文件,对其进行基于来源交换的对等节点的发现:
(1)原理
对于对等节点的发现,索引服务器只提供有限的服务,更多的对等节点的发现就要靠与对等节点的交互来获得了。与索引服务器交互,可以得到一些文件和对等节点的数据对,然后向对等节点提出请求,要求获得对应的文件的下载或者提供对等节点,这样,能够得到一批新的对等节点。然后向这批新的对等节点再次依次提出相同或相似的请求,可以获得更大量的对等节点。以此类推,如果已知的索引服务器数量足够大,理论上应当能够获得几乎全部的该P2P文件共享网络中的,参与某文件上传或下载的所有对等节点的信息。
(2)处理过程
先决条件:拥有一个活跃的对等节点信息,用以连接并进行后续通信。至少拥有一个该对等节点参与的下载或上传的文件的文件唯一标识符(和对应的文件大小)。
预期结果:获得大量的正在参与某指定文件上传或下载过程的对等节点。
步骤0:如果对等节点列表内的所有节点都已被标记为已访问,则跳转到步骤5;否则,执行步骤1。
步骤1:从所有未标记为已访问的对等节点中选取一个,并连接之。如果连接成功,执行步骤2;否则,标记为不活跃,并跳转到步骤0。
步骤2:向已连接的对等节点发送握手信息,并等待其回复的信息。如果成功收到回复信息,执行步骤3;否则,跳转到步骤0。
步骤3:双方进行身份认证。如果认证成功,进行步骤4,否则,跳转到步骤0。
步骤4:向对方对等节点发送要求进行来源交换的请求,并等待其回复信息。回复消息中含有其他对等节点的信息,对于这些收到的对等节点信息,如果存在于已知的对等节点列表内,抛弃之,否则,将其加入到对等节点列表内,并标记其为未访问。否则,即无论如何,都没有收到对等节点的节点信息,跳转到步骤0。
步骤5:来源交换部分结束。
上述4个部分既相互独立,又相互关联。其中部分1用于获得更多的索引服务器信息,用以满足后面的通信过程的初始条件。部分2用于限定P2P文件共享网络中对等节点的范围,即通过判断是否参与某文件上传下载这个过程,来选择对等节点。如果用户拥有并计算出关注文件的文件哈希值和文件大小,这个部分可以省略,直接进行部分3和部分4即可。部分3和部分4是本发明的核心内容,即对等节点发现的过程。部分3使用与索引服务器交互的方式获得对等节点,而部分4使用与对等节点交互的方式获得对等节点。部分3是部分4的前提,部分4是部分3的必然后续,没有部分4,部分3的意义就不大,不能获得很多的对等节点信息。
首先,用户要配置伪客户端的各种初始化信息,包括一些初始的索引服务器,以及对等节点发现的探索层次——即,根据对对等节点发现的需求程度不同,应当进行对等节点发现的深度进行配置。
伪客户端会每隔一段时间进行一次索引服务器发现过程(步骤1),并以此得到大量的索引服务器信息。这个步骤的附加作用在于可以探测到更多的索引服务器信息。
当用户给定关键字时,伪客户端会进行步骤2,并反馈相当数量的文件信息,并寄希望于用户从中选定某个(些)文件,并依次进行步骤3和步骤4。如果用户在得到反馈信息后并不作任何操作,一段时间后所有得到的信息会失效,下次操作时需要重新进行这个操作流程,即使是相同的关键字信息也要重新执行这个流程。如果不关心对等节点的话,这个过程能够进行P2P文件共享网络的文件信息的探测。
当用户给定文件哈希值和文件大小时,伪客户端会首先去索引服务器上进行步骤3,并得到其提供的初始对等节点信息。然后通过这个初始对等节点和用户给定的哈希值和文件大小来进行步骤4,这样就能够得到一定数量的对等节点了。
当用户给定文件哈希值和文件大小还有对等节点的IP地址和端口时,伪客户端会直接联络给定对等节点,直接进行步骤4,并通过其获得其他的对等节点。