APP下载

一种轻量级P2P协议框架的设计与实现

2015-01-18林晓婷全汉华刘运秋陈冠星

电脑与电信 2015年12期
关键词:端点路由解析

林晓婷 全汉华 刘运秋 陈冠星 李 博

(华南师范大学计算机学院,广东 广州 510631)

一种轻量级P2P协议框架的设计与实现

林晓婷 全汉华 刘运秋 陈冠星 李 博

(华南师范大学计算机学院,广东 广州 510631)

目前互联网发展迅速,网络及网络应用覆盖广泛,网络服务与网络请求数量不断增多。如何有效地利用有限的计算机资源,提供最大的网络服务是一个值得思考的问题。对等网络作为解决这个问题的一种手段,在开发和使用上存在一定的局限性。主要表现在平台相对独立,平台数据无法直接共享;移动节点的移动性导致网络的连通不稳定。本文在前人基础上,提出一种轻量级的P2P协议框架,通过JXTA协议将不同的平台联系起来,同时对JXTA框架进行简化,使它成为一个能处理移动节点随机移动的轻量级框架。

对等网络;移动节点;JXTA协议;轻量级

1 前言

目前互联网发展迅速,网络及网络应用覆盖广泛。网络的高带宽接入深受大众欢迎,用户数不断增长,业务流量也越来越大。高速发展的背后是服务器的负载越来越严重。如何减轻服务器的负担,有效地利用网络资源是一个值得研究的问题。对等网络(P2P)的出现在一定程度上缓解了传统B/S模式下因访问量过大导致服务器不堪重负的局面。如今,P2P应用已占据互联网流量的50%以上,倍受业界人士的关注[1]。然而,目前P2P在无线网络环境中因受网络和终端的限制,其应用无法得到大规模的商业发展[2]。当前热门的P2P资源共享平台有很多,例如快车、迅雷、QQ旋风等等。但它们的标准差异较大,平台的独立性导致平台间不能直接共享数据,阻碍了P2P的应用发展[2]。另外,处在P2P网络边缘的移动节点具有不稳定性,会经常接入不同网络,从而使网络地址不唯一,连通性得不到保障[3]。针对此问题,本文在前人的基础上,提出一种轻量级的P2P协议框架,试图通过JXTA协议将不同的平台联系起来,同时对JXTA框架进行简化,使它成为一个能处理移动节点随机移动的轻量级框架,使开发者能够根据自己的开发习惯,利用这一框架实现简单的即时通讯。

2 JXTA协议的架构

2.1 JXTA协议的层次结构

JXTA协议由三层组成,如图1所示。第一层是JXTA的核心层,它包含服务所需的核心功能,这一层封闭了最根本的东西,包括Peer、对等组、Peer发现、Peer通信、Peer监视和相关的安全原语。第二层是服务层,它提供访问JXTA协议的接口,提供通用的功能,如查找、共享、索引等等。第三层是应用层,它使用服务来访问JXTA网络和JXTA提供的功能,包括应用JXTA服务开发出来的完整P2P应用程序。

图1 JXTA协议的三层结构

2.2 JXTA协议的核心层结构

2.2.1 简述

JXTA的核心层由对等点发现协议(PDP)、管道绑定协议(PBP)、对等点信息协议(PIP)、对等点解析协议(PRP)、端点路由协议(ERP)、聚集节点协议(RVP)等六个协议组成[4]。这些协议提供了核心功能:对等节点相互发现、资源发布、信息传递、路由处理、对等节点间的通讯[4]。JXTA协议框架是由彼此关联的代码块组成,它本身并没有可执行的程序,协议隐藏了核心代码复杂的实现过程,在服务层提供了调用核心代码的接口,开发人员只需要调用接口即可编写P2P应用程序[5]。在JXTA网络中,并不是所有对等节点都需要这六个协议,可以根据实际情况选择性进行加载。

2.2.2 对等点发现协议

对等点发现协议主要用于发布自身的资源信息和获取其他对等点的资源信息,它不能单独使用,需要使用对等点解析协议来发送搜索资源的请求。

2.2.3 管道绑定协议

管道绑定协议的每条管道类似一个socket,使用方法与socket类似。它必须借助端点路由协议提供的路由才能发现其他的对等节点。它不能单独使用,需要使用对等点解析协议来发送搜索资源的请求。

2.2.4 对等点信息协议

对等点信息协议主要用于获取其他对等节点的状态信息。它不能单独使用,需要使用对等点解析协议来发送搜索资源的请求。

2.2.5 对等点解析协议

对等点解析协议是JXTA协议框架中最基础且必不可少的一个协议,能够支持多播通讯。

2.2.6 端点路由协议

端点路由协议采用类似路由交换的方式,通过对等节点之间的路由信息获取路由路径。

2.2.7 聚集节点协议

聚集节点协议主要用于局部的P2P网络中,它维护一个服务列表和一个节点,其他对等节点通过对等点发现协议获取该服务列表中的内容,同时也可以将本身的节点信息和服务信息发布到这个列表中。

3 JXTA协议的通信过程及简化

3.1 原JXTA协议的通信过程

JXTA协议的通信是在socket通信的基础上,做了其他处理,使它不再受限于UDP,且JXTA的P2P通信可以使用多种类型的基础协议。原JXTA协议的通信过程大概分为三个部分[6]:

(1)使用一个特殊的URN(统一资源名称)作为端点标识,用于标识端点的存在、端点的资源、端点的服务以及远程IP,最终以广告的形式告知其他端点该资源的存在。

(2)端点通过汇聚对等点和广播发现广播通告,发现通告需要对等点发现协议参与,对等点发现协议先调用端点路由协议寻找广告,再调用对等点解析协议解析广告的内容。

(3)找到广告后通过管道进行通信。利用管道进行双向通信,首先需要绑定两个端点,再进行信息的传输,绑定端点需要用管道绑定协议。

3.2 JXTA协议简化

协议简化的目的是为了设计出一套适合移动节点使用的轻量级JXTA协议框架,本文从JXTA协议的通信原理及过程入手,对原JXTA协议框架进行简化。

(1)基于JXTA协议框架的P2P通信需要涉及到4个必不可少的协议,分别是对等点发现协议、管道绑定协议、对等点解析协议、端点路由协议[7]。这4个协议是我们进行简化的入手点和重点。原JXTA协议中的对等点发现协议是将输入输出流还原为xml文档,然后再解析相应的字段,这个发现过程的所需的时间有点长。这是我们简化的一个入手点,通过在广告的实现中引入管道的标识URN,URN标识端点的存在、端点的资源、端点的服务以及远程IP,而且URN可以从输入输出流的缓存中获取,可以简化对等点发现协议的发现过程,缩短处理时间,提高处理效率。

(2)端点路由协议通过路由信息获取路由路径,在通信过程中起着举足轻重的作用。因此,对于此协议没有作简化,保留原本的协议。

(3)根据功能需要有选择性地保留对等点解析协议部分解析协议。

(4)对等点信息协议没有参与通信的过程,它用于获取其他节点的状态信息。在对等点发现协议已经对这一作用作了定义,每当节点被访问时,它会将自身的状态信息告诉对方。所以,对等点信息协议协议可以从JXTA协议中移除。

(5)聚集节点协议是聚集节点(服务器)与节点进行通信的支撑协议。对此协议进行简化时,保留了汇聚点监听信息的功能和应答处理逻辑,去掉其他模块,使该协议仍能发挥它最重要的功能作用。

3.3 简化后的JXTA协议的通讯过程

简化后的JXTA框架新增了一个名为P2PSocket的通讯接口,为了使管道通讯的使用与socket通讯一样方便。新增的P2PSocket接口没有明确地区分客户端和服务器端,因为每个对等节点在实际使用时既可以是客户端角色,也可以是服务器端角色,并在一定的条件下能相互转化。P2PSocket等待消息是是通过注册监听器进行实现的。它的通信过程如图2所示。

图2 JXTA协议的通信过程

4 基于轻量级JXTA框架的及时通信Demo

本文研究的结果有两个测试样例,如图3和图4所示,一个测试样例demo1是使用原来的JXTA框架,它作为一个超级节点,另一个测试样例demo2是使用文本简化后的轻量级JXTA框架,它作为一个移动节点。该轻量级JXTA Demo的通信模型如图5所示,具体的通信过程如下:

(1)移动节点是通信的主体,移动节点通过P2PSocket接口调用对等点发现协议将输入管道的信息发布到超级节点上面,同时监听管道并接收来自其他节点的消息。

(2)超级节点利用聚集节点模块来维护管道信息列表。它除了具有移动节点的功能,还通过自身的P2PSocket模块从聚集节点模块获取节点来发布得到的管道消息,根据这个消息建立输出管道。它的输出管道相当于移动节点的输入管道,超级节点是通过输出管道给移动节点发送消息的。

(3)移动节点接收到超级节点发送的消息后,利用P2PSocket根据发送方的输入管道建立自己的输出管道,用于给超级节点发送消息。

(4)为了避免双方通信突然间中断,在通信的过程中,会不断地调用run()函数以延迟消息在聚集模块节点中的生存时间。

图3 demo1

图4 demo2

5 结语

本文对JXTA协议的架构和通信原理作了简单介绍,并从JXTA协议的通信过程所涉及到的协议入手,对它进行简化,论述如何设计出一个适合移动节点的轻量级P2P协议框架。本文的轻量级JXTA协议是一个初步的简化成果,还存在一些不足之处。它暂时不支持非WIFI网络接入以外的其他无线接入技术,比如4G。本文下一步将考虑其他无线接入技术的连网情况。

[1]张春红,裘晓峰,弭伟,纪阳.P2P技术全面解析[M].人民邮电出版社,2010,5.

[2]许斌.JXTA--Java P2P网络编程技术[M].清华大学出版社,2003,6.

[3]宋美娜,李伟.基于移动互联网的P2P技术研究[C].北京邮电大学,武汉邮电科学研究院,2008,10.

[4]OAKS,TRAVERSAT&GONG.JXTA技术手册[M].北京:清华大学出版社,2004,4.

[5]李康,李凤华,娄嘉鹏.基于JXTA的即时通信应用的设计与实现[J].网络安全技术与应用,2008,43(4).

[6]李含草,张宏,叙永晋.使用JXTA实现P2P通信[J].微计算机信息,2004,20(4).

[7]Michael Abbott.Java P2P技术内幕[M].北京:人民邮电出版社,2003,10.

Design and Implementation of A Lightweight P2P Protocol Framework

Lin Xiaoting Quan Hanhua Liu Yunqiu Chen Guanxing Li Bo
(South China Normal University Computer Academy,Guangzhou 510631,Guangdong)

With rapid development of the Internet,network and network applications cover widely.Besides,network services and network requests increase constantly,so how to effectively use the limited computer resources,providing the largest network service is a problem worth exploring.Peer to peer networks can be used as a means to solve this problem,but there are some limitations in the development and use of P2P network.The peer to peer platform is relatively independent and data can not be shared directly. In addition,the mobility of the mobile nodes leads to the instability of the network.On the basis of previous study,the paper proposes a lightweight P2P protocol framework,which is connected with different platforms through JXTA protocol.At the same time,the JXTA framework is simplified,making it a lightweight framework for dealing with mobile node.

P2P network,mobile node,JXTA protocol,lightweight

TP39

A

:1008-6609(2015)12-0038-03

林晓婷,女,广东湛江人,学士,研究方向:网络工程。

华南师范大学省级大学生创新创业项目,项目编号:2014118。

猜你喜欢

端点路由解析
非特征端点条件下PM函数的迭代根
三角函数解析式中ω的几种求法
铁路数据网路由汇聚引发的路由迭代问题研究
不等式求解过程中端点的确定
一种基于虚拟分扇的簇间多跳路由算法
探究路由与环路的问题
睡梦解析仪
电竞初解析
对称巧用解析妙解
基于预期延迟值的扩散转发路由算法