岁月联盟 · 中国技术网 本站主页 | 安全认证 | 用户服务 | 技术论坛
新闻快报 | 新手学堂 | 黑客特区 | 程序语言 | 数 据 库 | 防 火 墙 | 路由交换 | 系统集成 | 服 务 器 | 存储备份 | 考试认证
Windows | Linux | Java | 协议分析 | 问题解答 | 进程大全 | 网页设计 | 多 媒 体 | 图库资料 | 软件下载 | 站内下载
  您现在的位置: 岁月联盟 >> Java >> 高级技术 >> p2p/Jxta >> Java正文
Peer-to-Peer Sockets 工程入门
作者:未知 文章来源:本站整理 点击数: 更新时间:2007-7-22 17:54:56

  Peer-to-Peer (P2P)Sockets工程在JXTA peer-to-peer虚拟网络重新实现了对应于标准TCP/IP网络中的Java标准的Socket,ServerSocket,和InetAddress等类。该工程同时还引入了一些注入Jetty web server,Apache XML-RPC客户端和服务器库,Apache Jasper JSP引擎之类的流行web package。使这些服务可以运行在Peer-to-Peer Sockets 的框架下。
  
  在这片文章结束的时候,你会理解对P2P Sockets packages的需求和以及开发它的动机,学会怎么配置P2P Socket 库使之在你的系统上能够运行,学会怎么样建立P2P的服务器和客户端Socket,怎么使用P2P的InetAddress 类,还包括框架下的安全问题以及它的局限性。
  
  动机
  
  P2P Socket工程的设计的使用对象是对以下几个领域有兴趣的开发者:
  
  ●将Internet回归到end-to-end的原则当中
  
  ●一种绕过ICANN和Verisign的替代peer-to-peer域名系统,这个系统是完全分布式的,对更新拥有比标准DNS快的多的响应速度。
  
  ●一种任何人都可以建立活着使用网络服务的Internet,及时他们使用动态的IP地址或是没有IP地址,或是只有内网地址(NAT),或者是在ISP的防火墙之后。
  
  ●一个每一个Peer都能够自动的建立一个Web Server,提供XML-RPC服务,能够快速的将这种服务提供给其他的Peer。
  
  ●使为Peer-to-Peer网络添加Java Socket和ServerSocket 的应用更加容易
  
  ●享受更酷的科技
  
  P2P Socket 工程在JXTA peer-to-peer网络上重新实现了标准java.net报当中的类。一些人可能要问“难道标准TCP/IP socket和ServerSocket不是已经是peer-to-peer的了吗?”标准的TCP/IP socket和server socket在理论上是peer-to-peer的,不过由于防火墙,NAT设备,以及DNS所存在的政治或是技术的问题,在实际上却没有做到这一点。首先,Internet上的许多peer使用的都是通过DHCP协议取得的动态IP,这些IP由通过NAT设备共享和过滤,还有一些IP地址由于防火墙的限制,很难被访问到。在这样的条件下建立server socket应用要么是不可能的,要么就需要在应用层进行精妙的控制来绕过这些限制。其次,TCP/IP Socket依赖于DNS系统来将用户友好的主机名转变为IP地址。DNS在理论上就是办分布式的,但是在管理层面上,DNS是在ICANN下集中式管理的,而ICANN是一个反应迟钝的,没有创新意识的组织。再次,标准的DNS对对那些过滤或是使用动态IP地址的edge-peer支持的并不好,更新需要花费很长的时间传播下去而且并不提供presence信息。对那些想要开发能够扩展DNS到新的领域(例如将即时消息的用户名和存在信息加入到DNS)的新应用的开发者来说,DNS系统的技术和政治因素阻碍了他们的工作。
  
  JXTA是一个用于在TCP/IP之上建立peer-to-peer覆盖网络的开源工程。在网络中的没一个peer都会被分配到一个和IP地址类似的号码,即时他们没有固定的IP地址或是出在防火墙之后。在JXTA 网络上的super-peer通讯运行应用层的路由协议来储存例如如果到达其他的peer,如何加入peer group,其他peer提供了怎么样的内容之类的信息。JXTA应用层在Peer之间提供了中继的代理服务,是出在防火墙或是NAT后的Peer可以正常的通信。Peer可以自己组织成为Peer Group,这样可以将所有的查询请求限定在natural security container当中。任何peer都可以分布式的建立并发布一个peer group,其他的Peer通过使用其他的super-peer可以搜索并发现这些peer group。Peer之间的通信通过pipe的方式来进行,这和Unix系统当中的Pipe非常的类似。Pipe是对两个peer之间通讯方式的一种抽象,它帮助peer互相通讯,即使他们处在不同的网络区域当中。
  
  JXTA是一种非常强大的框架。但是,它并不是一种容易学习的框架,将现有的软件移植到JXTA下也不是一件容易的事情。P2P Sockets成功地将JXTA隐藏起来,使之看起来就像是传统的TCP/IP网络。如果peer想要成为服务器,他只需要简单的使用包含他们想使用的domain name和端口的P2P Server Socket就可以了。P2P的客户端可以通过host名和特定的端口号来建立Socket连接访问那些服务。Host可以被解析为域名,例如www.nike.laborpolicy,或是IP地址,例如44.22.33.22。在这些场景之后,host实际被解析为JXTA原语,而不是被解析为DNS或是TCP/IP。举例来说:域名www.nike.laborpolicy实际上是JXTA peer group 的广告消息中的一个NAME字段。P2P Sockets和Server socket 与正常的TCP/IP Socket和ServerSocket的使用方法完全相同。我们为希望了解内幕和那些已经懂得JXTA的用户提供了一张表(http://www.onjava.com/onjava/2003/12/03/examples/table.html),在这张表中可以查询到传统TCP/IP概念上的域名,IP地址等概念和JXTA中对等概念的对应关系。
  
  使用这种方式的好处是多方面的。首先,程序员可以将他们在标准TCP/IP Socket和Server Socket的知识应用到JXTA peer-to-peer网络当中而不需要专门学习JXTA。其次,所有的P2P Socket 的代码都是标准java.net中类的子类,例如java.net.Socket,所以现存的网络应用可以很容易的移植到peer-to-peer网络当中。 P2P Socket工程已经将很多现存的软件移植到了peer-to-peer网络当中,其中包括web服务器(Jetty),它可以接收请求,被在peer-to-peer 网络上提供内容服务;一个servlet和JSP引擎(Jetty 和 Jsper),它可以使现存的servlet和JSP直接在P2P网络中应用;一个XML-RPC客户端和服务器(Apache XML-RPC),它可以访问和对外提供P2P XML-RPC 端点;一个HTTP/1.1客户端(Apache Commons HTTP-Client),它可以访问P2P的web 服务器;一个网关(Smart Cache),它可以是现有浏览器访问P2P的P2P web 站点;和WikiWiki(JSPWiki),它能够在你的主机上建立Wiki站点,使其他的Peer可以通过P2P网络访问,并编辑。所有的这些软件在移植之后都能够正常的使用并且和以前看起来完全一样。P2P Socket的抽象非常的成功,移植这些软件所花费的时间仅仅是30分钟到几个小时不等。P2P Socket工程是完全开源的,大部分都采用BSD-type证书,由于是使用Java编写的,所以也具有跨平台的特性。
  
  由于P2P Socket是建立在JXTA之上的,所以它可以很容易的处理一些传统的ServerSocket和Socket所不能处理的情况。第一,在P2P Socket上建立的ServerSocket,具有fail-over(不知道怎么翻译,应该是可靠性之类的意思)和易扩展的特性。如果不同的Peer可以启动ServerSocket使用同一个域名和端口,例如www.nike.laborpolicy 端口号:80。当一个客户端打开P2P socket连接到www

[1] [2] 下一页


  • 上一个Java:
  • 下一个Java:
  •  
    热门文章
    推荐文章
    关于我们 | 发展历程 | 网站地图 | 广告服务 | 招贤纳士 | 战略合作 | 友情链接 | 著作声明 | 联系我们
    Copyright © 2002-2007 SYUE All rights reserved.
    E_mail:Admin@Syue.Com 皖ICP备05004589号
    未经授权禁止转载、摘编、复制或建立镜像.如有违反,追究法律责任.
    传世私服 传奇世界私服 天龙八部私服 bet365 传世私服 天龙八部私服 热血江湖私服 英雄合击传奇私服 热血江湖私服 bet365 bet365