一 NC设计思想 1 设计目标:网络无中心,世界任我行 在没有任何固定服务器的情况下,人们仍然可以畅通无阻的进行点对点的交流,传输文件,语音,视频等! 2 现存设计思想概述: 现在存在的可用的主要的P2P设计技术分为:集中式服务器技术,纯粹的对等点技术,分布式服务器技术 现在基本上大家都知道了P2P采用集中服务器虽然可以实现完整的P2P功能,但因为商业因素和集中服务器所带来的成本等的原因,已经有越来越多的质疑和控制权等的担忧!比较典型的就是现在风行的QQ,MSN等;而纯粹的对等点技术则是众多技术派人物所最求的一种发式,但因为现存网络本身的设计结构的原因和技术的局限性,虽然投入了大量的精力,这种技术仍然没有一个相对完美的解决办法,所以,基本上没什么好的产品诞生! 因此,比较合理并实际的就解决办法是发扬这两种方法的长处,避免其端处,这样,就产生了第三种设计方法:分布式服务器技术! 分布式服务器技术是在现在网络结构模式下最具有前景的技术,最近基本上所有的比较流行的P2P软件都或多或少的采用了这种结构,如EDONGKEY,JXTA等,只是叫法上有所不同而已! 这种技术有很多好处,比较明显和重要的是: 1) 整个系统的负荷被分布在世界各地的服务器所分担了,所以再 不必考虑集中式服务器所要考虑的巨额成 本问题 2) 使用者的控制权大大加强了,因为服务器不是控制在某一个企业或集团的手里,所以不必担心会因为商业上的因素而被企业控制! 3 )应用范围和纯粹的对等点技术相比,大大拓宽了! 当然,分布式服务器技术在技术上实现起来比集中式服务器要难的多,但比纯粹的对等点技术实现起来又要简单一些! 因此,在现在的P2P实现中,基本上都首先考虑这种技术,因为这种技术从各个方面来说,都是比较合理的!NC就是在这个技术理论的基础上加以改进而成的! 3 NC的设计思想 NC首先秉承了分布式服务器技术的一惯思想,并进一步改进,提出客户端就是服务器的设计思想,在这种思想的指引下,整个NC系统中的PEER没有任何级别上的区别,也不依赖于任何服务器,NC只是根据网络环境和用户的旨意来运转,用户可以自己做服务器并提供服务给那些没办法做服务器的PEER,也可以只使用别人提供的服务,还可以在使用别人服务的同时,提供力所能及的服务给那些没办法做服务器的PEER! 因此,在NC的系统中,不会有专门的服务器版,也不会有专门的客户端搬,而只是一个NC--一个没有任何中心概念的NC:Net No Center! 基于这个思想,NC采取了以下的软件结构来实现! 4 NC的软件结构 如下的简易图,NC整个系统呈树行结构无限扩张开! --------------------------------------- NC1 (这个服务器固定吗,不!!!) (S) / / NC2... NCn NC4 (SandC) (SandC)(C) / / NC3 ...NCk NCm (SandC) (C) (C) / NC5...NCl (C) (C)--------------------------------------- 5 NC的运行流程 首先,在第一次(注意,是第一次)开始运行NC的时候,仍然要一个临时的固定服务器,现在假设NC1做了第一个服务器(纯粹服务器),然后NC2...NCn就开始以客户端的方式连接上来了,而NC2同时还做了服务器(注意,NC2做为服务器这个信息是不是就注册到NC1了),所以NC3现在其实既可以连到NC1上,也可以连到NC2上,以此类推,NC3做了服务器这个信息也通过NC2注册到NC1了!NC要做服务器的必要条件是网络环境允许,而充分条件是用户的旨意! 现在,照如此的通讯模式,很快的一个NC网络群就发展起来了,并且以NC1为总服务器! 这个总服务器固定了吗,假如NC1现在不想做服务器了呢,没关系,我把整个服务器群的信息传递给NC2好了,现在的总服务器变成了NC2了,整个系统的中心就转移到NC2上来了!NC1可以退出了!而这些过程都是程序自动完成的! 如此遵循严格的通讯机制,整个NC网络就达到了不依靠任何中心服务器,又不影响功能完整性的情况下,一直运转下去!二 技术实现 1 所用关键技术: 1) MIDAS:主要是维护服务器信息列表 2) SOCKET:主要实现数据的传输 3) 多线程技术,SOCKS代理技术等 2 语言:DELPHI三 现在功能 1 客户端功能: 查找提供NC服务的服务器 消息收发! 视频收发,立即播放 图片收发,立即显示 FLASH收发,立即播放 网页收发,立即显示 文件收发(采用了多线程技术) 查找朋友 添加朋友 删除朋友 查看朋友资料 个人信息维护 密码维护 SOCKET5代理支持 ...... 2 服务器端功能: 快速的消息转发 在线用户查看 日志查看 消息广播