式计算成为可能。
P2P网络的一个非常重要的特点就是各个Peer彼此之间可以直接通信,至少是可以访问到的。在第一章中我们已经介绍,由于防火墙、NAT和动态IP等原因,在现实的网络中有许多计算机是不能访问的,而在P2P网络中就必须解决这个问题。P2P网络不是推翻现有的网络结构,而是在现有的网络上构建一个符合P2P特点的网络,但是又不限于现有的网络协议。如图2.1所示,中间黑线下面是现有的网络,网络中有许多计算机通过现有的TCP/ IP协议或者是HTTP协议进行通信;而黑线上面是一个虚拟的JXTA P2P网络,通过把黑线下面现有的网络映射成为 P2P网络。另外,既然是在现有的网络上构建一个P2P网络,就必须考虑到现有网络上存在的多平台、多语言的情况。
虽然JXTA的第一个参考实现是基于Java语言的,但是从JXTA自身的设计来看,JXTA程既不特定于Java编程语言,也不特定于 Java平台。换句话说,任何人都可以在任何硬件平台上,用任何操作系统、任何编程语言实现基于JXTA的网络。正因为JXTA的这种平台无关性,它甚至不依赖于 TCP/IP(也就不会依赖现有的因特网架构,从而为P2P网络的构造打开方便之门),从而为我们提供了构建P2P体系结构的基础。从图2.l可以看到JXTA并没有依赖于某一种具体的网络和协议,之所以目前的实现采用TCP/IP和HTTP,是为了与目前因特网架构兼容以及能与大多数防火墙协同工作。
P2P网络应该具有下列特性。
★ 互操作性:P2P系统应该能够使内部连接很容易地找到彼此,彼此间进行交流,加入基于团体的活动,提供无缝跨越不同P2P系统和不同团体的服务。许多现存的P2P系统仅能提供简单类型的服务,例如:Napster提供音乐文件共享,Gnutella提供通用文件共享,AIM提供即时消息,由于这些服务的不同特性和通用的下层P2P结构的缺乏,每一个软件的零售商提供了互不兼容的系统,它们之间彼此不能相互操作。这意味者每一个零售商都创建了自己的P2P用户团体,更为重要的是,一个Peer如果要加人由不同P2P实现的多种团体,必须支持不同的P2P系统和团体的多种实现。
★ 平台无关性:P2P系统应该设计成独立于编程语言如 C、Java等,独立于系统平台如 Windows和 UNIX,独立于网络平台如 TCP/ IP和 BLUETOOTH。现在许多P2P系统通过在一定的系统平台上和一定的网络平台上发布一组API来提供特性和服务。例如,一个系统提供运行在Windows系统上、遵循TCP/IP协议的一组C++API,而另一个系统提供了运行在 UNIX系统上、遵循TCP/IP协议和HTTP协议的一组C和Java组合的API。P2P的开发者必须选择用哪组API来编程,目标是哪组P2P客户,由于两个系统之间没有互操作的可能性,如果开发者想要提供给两个团体相同的服务,他们必须为不同的P2P平台开发两次相同的服务或者在两个系统间架一座桥,考虑到已经存在的几十套P2P系统,两种方法都是效率低下和不切实际的。
★ 广泛性:P2P系统应该设计成可以运行在任何有数字处理功能的设备上,包括传感器、消费电子设备、个人数字助理、网络路由器、桌面计算机、中心服务器和存储系统。
许多P2P系统,尤其是新兴公司提供的,倾向于选择微软公司的操作系统作为它们的目标部署平台,这种做法的原因是因为可以符合最广泛的安装基础以及获得最快的利润。这样不可避免的结果是对系统平台的依赖,这是在紧张的时间和有限的资源下工程的实现而不是技术设计的结果。
由于P2P并不定位在PC2 PC上,上述做法是没有眼光的。虽然最早的P2P系统演示在计算机系统的中心一WINTEL机器上,但P2P技术大规模的应用最可能发生在两个极端上--企业的大型系统和用户的小型系统。事实上,基于任何特殊硬件和软件系统之上的应用都经不起未来的考验。
因此,要构建一个P2P网络,必须考虑如下问题:
● Peer如何找到其他Peer?也就是Peer的发现机制是什么?
● Peer之间如何传递信息?Peer的通信协议是什么?
● P2P网络与现有网络的关系?是完全推翻?还是可以利用现有网络来搭建P2P网络?
2.2 P2P如何形成动态网络
动态网络是P2P系统存在的基石。互联网是带有某些静态特性的动态网络。例如,连接到互联网的任何计算机都被分配一个唯一的IP地址。
当今占统治地位的IPv4协议使用32位的IP地址。这种IP地址的表示方法是用点好隔开的十进制数字,例如172.16.1.2。
这种地址模型限制了我们最终能使用的IP地址的数量。需要使用IP地址的计算机和设备的增长已远远超出了IPv4协议设计者们的预想。我们很快就会用完IPv4能提供的所有IP地址了。
现在,人们已经提出了IPv6协议。这个协议不仅大大增加了可用IP地址的数量,并且还能后向兼容IPv4协议。IPv6使用128位的IP地址。IPv6的IP地址的表示方法是用冒号隔开的十六进制数字。例如:FEDC:B978:7654:3210:F93A:8764:54C3:6543.IPv6能支持1012台计算机和109个独立网络。但是,目前还不知道什么时候IPv6才能得到广泛使用。
因为我们更容易记住名字而不是数字,所以互联网提供了一种使用名字来识别计算机的机制。DNS(Domain Name Service,域名服务)提供了帮助用户识别计算机或将计算机名映射为IP地址的方法。因此,我们可使用java.sun而不是72.5.124.55来访问Sun公司的主页。
尽管我们使用IP地址和DNS来识别和寻址网络上的某台计算机,但P2P系统依然面临巨大挑战。使用IPv4能提供的有限的IP地址导致了寻址计算机的新机制。NAT使我们能将一组保留IP地址分配给某个局域网上的计算机。当连接到互联网时,这些计算机共享一个"公共"IP地址。因为保留IP地址组是为私有网络上的计算机预留的,所以这些预留IP地址不会出现在互联网上(即成为公共IP地址)。因此,这些IP地址可重用。尽管这些机制实现了IP地址的神奇转换,但也使得寻址实际的计算机地址变得更加困难,尤其在动态环境中更是如此。使用IPv6的新一代互联网的设计目的就是为了解决这一问题。但遗憾的是,这可能是未来几年之后才能实现的事。除NAT之外,互联网上IP地址的动态分配也非常普遍。这种分配IP地址的方式本身就为寻址计算机带来了问题。
P2P系统如何识别其标志不断变化的对等节点?P2P网络必须能唯一地标志该网络上的多有对等节点和可用资源。因此,P2P系统必须定义自己的独立与IP地址和DNS的命名规则。为了使P2P系统上的用户拥有自己的永久标志,P2P系统必须创建虚拟名字空间。
不同于DNS等寻址方法中采用的预定义或预配制方式,P2P系统网络中的对等节点通过使用IP地址或DNS作为导航助手来相互寻址,从而形成动态或虚拟网络。形成动态网络是P2P系统的典型特征。
一、寻址P2P系统中的对等节点和资源
关于在P2P系统中如何寻址节点和资源的问题,已经见诸于大量的出版物并引起了广泛的讨论。时至今日,这个问题的解决已成为成功的P2P系统的重要标志。
读者可从两个层次来思考寻址问题。首先,寻址过程和发现一个对等节点相关。这里所谓的对等节点是指可能理解节点间交换的协议信息的信息处理实体。这个信息处理实体和其他实体使用同一种语言,并且该实体能理解这种语言的语义。对等节点的寻址目的是需要找到某项服务或帮助,并克服很多与信息处理相关的问题。如果对等节点不理解相互交换的信息,那么它们就无法处理相互交换的大量数字信息。
寻址的第二个层次与用户发现自己感兴趣的资源相关。早期的P2P应用程序是用于处理文件共享和文件检索的。与流行
上一篇:
JSP网上购物系统毕业设计论文(word文档)
下一篇:
基于JSP邮件收发系统论文