在我们多数人考虑点对点 (P2P) 应用程序时,自然而然就会想到即时消息传送应用程序、简单文件共享程序和游戏。一般情况下,在我们考虑分布式应用程序设计时,已经习惯于默认选择客户端/服务器模型,几乎很少会想到 P2P 模型,哪怕是一闪而过的念头,尤其是对于业务应用程序更是如此。我们为什么都关注于客户端/服务器模型,其主要原因很简单:P2P 应用程序的开发过程一惯都成本高昂且耗时过长。
网络编码(NC)[1]理论是21世纪初在信息论领域中的一个重要突破,其划时代意义在于:推翻了独立的比特不能再被压缩的经典结论,指出网络信息流可以被压缩,从而可进一步提升网络吞吐量,因此该理论也被称为网络信息流理论。至今网络编码理论已经应用于众多领域,如P2P、应用层多播、无线Ad hoc网络、无线传感器网络和无线Mesh网络等。网络编码的主要优缺点和关键理论问题研究可参见文献[2],限于篇幅不再赘述。
关于UDP穿透NAT的中文资料在网络上是很少的,仅有<<P2P之UDP穿透NAT的原理与实现(shootingstars)>>这篇文章有实际的参考价值。本人近两年来也一直从事P2P方面的开发工作,比较有代表性的是个人开发的BitTorrent下载软件 - FlashBT(变态快车).
管道的概念源于Unix,是不同线程之间直接传输数据的基本手段。JDK中java.io包中就有管道类,同时,管道在JXTA中是最基本的概念,是对等点之间的数据传输的主要方式。对等管道协议(PBP)明确规范了对等管道的绑定,解析,响应。本文依次剖析集中式(JDK)和对等环境下(JXTA)管道的实现方式,对比分析其异同,然后尝试在JXTA中建立一个虚拟的全双工的管道。
本文是以对JXTA的基本概念有一定理解,并且想进一步挖掘其实现手段的读者为对象的,因此,将不重复介绍JXTA的一些基本知识。本文的主要目标是分析初始对等系统是如何构建的,及为什么这么构建(How and Why)。为了确保作者的思路集中使目标得以实现,在此基础上的各种服务,及端点协议的实现只能作为一种抽象的概念来阐述。
点对点(P2P)网络无疑是当前最热门的话题之一。在这个领域中,Sun推出了Jxta,一个用于P2P应用开发的网络计算平台。这篇文章介绍P2P和Jxta在这方面所作的努力。适合有意开发P2P应用的编程者阅读。今日的Internet正面临着一场革命。这场革命正在为改变Internet的一个基本的特性而努力。
JXTA是深入的,非凡的为了实现pear to pear网络计算而设计的一组(6种)协议。使用JXTA协议,pears能够自己组织和配置自己的pear groups而脱离现在的互联网,并且不需要实现集中治理的架构(集中治理架构流行于现在很多p2p软件)。
内容概述:在p2p通信领域中,由NAT(Network Address Translation,网络地址转换)引起的问题已经众所周知了,它会导致在NAT内部的p2p客户端在无论以何种有效的公网ip都无法访问的问题。虽然目前已经发展出多种穿越NAT的技术,但相关的技术文档却很少,用来证明这些技术的稳定性和优点的实际数据更少。
基于对等网络(P2P)模式的业务和应用给传统互联网带来了巨大的影响,如何更有效地利用P2P技术来发展新的增值业务,是P2P业务开展各方迫切需要解决的问题。新兴P2P流媒体运营商、主流数字媒体运营商、电信运营商业务实现方案及部署思路各不相同。
NAT是为了节省IP地址而设计的,但它隐藏了内网机器的地址,“意外”起到了安全的作用。对外不可见,不透明的内部网络也与互联网的“公平”应用,“相互共享”的思想所不容,尤其是P2P网络中“相互服务”的宗旨,所以穿越NAT,让众多内部网络的机器也参与到P2P网络中的大集体中来,一直是P2P开发者的所希望的。
aMule是一款基于eMule的跨平台P2P软件,它提供了几乎与eMule一样的界面和功能,当然速度也是OK的!它的最新版是2.2,但是还未正式发布,因为最近aMule的翻译和Skin方面的问题延缓了它的发布。不过我们已经可以放心的使用它了。让我们一起来编译并使用它!
通过之前将近一个月对于JXTA技术的研究,终于大致了解了P2P网络JXTA技术的JAVA语言实现过程,特整理出来,以供大家交流讨论。其实,关于概念和该技术的介绍,也可以找到一些资料,在此我就不再介绍,我直接通过代码来描述一个P2P网络在JXTA技术下用JAVA语言实现的过程。
PeerCast.org成立于2002年四月,它是一个非盈利性的站点,提供免费的P2P电台软件。这个项目的目标是创建一个容易使用、简单的和可靠的软件客户端,从而使任何人都可以广播流媒体,而不必耗费昂贵的服务器或者带宽。Peercast分为两个目录:core目录主要完成核心的操作和ui目录实现界面。
基于树的架构。这是由流媒体的多播演化而来的,也就是播放同一频道的节点组成一棵树,提供广播的源节点为这棵树的根。每个节点可以为下层几个节点提供数据。但这种架构仍然会对上层的结点造成太大的负担,而且在节点动态加入和退出的情况下树不易维护。另外还存在传输延迟问题,所以树的高度不能太大。
P2P之NAT类型检测方法。内网主机建立一个UDP socket(LocalIP:LocalPort) 第一次使用这个socket给外部主机发送数据时NAT会给其分配一个公网(PublicIP:PublicPort),以后用这个socket向外面任何主机发送数据都将使用这对(PublicIP:PublicPort)。
SIP协议凭借其简单、易于扩展、便于实现等诸多优点越来越得到业界的青睐,它正逐步成为NGN(下一代网络)和3G多媒体子系统域中的重要协议,本文针对SIP服务在部署中出现的“单点失效”和“性能瓶颈”等问题给出了详细的解决方案。
在我们多数人考虑点对点 (P2P) 应用程序时,自然而然就会想到即时消息传送应用程序、简单文件共享程序和游戏。一般情况下,在我们考虑分布式应用程序设计时,已经习惯于默认选择客户端/服务器模型,几乎很少会想到 P2P 模型,哪怕是一闪而过的念头,尤其是对于业务应用程序更是如此。
本文首先从P2P的定义出发,介绍了结构化P2P与非结构化P2P的区别以及结构化P2P的核心技术DHT。而后,本文深入介绍了几种主流的DHT算法与协议并对每种协议进行了讨论。文章的最后展望了DHT在未来的发展趋势。
|
Digg排行
本周热门内容
|