2024年1月25日发(作者:)

三、通信与协作,如QQ,ICQ,SKYPE等,重点描述QQ,SKYPE

纯点对点网络没有客户端或服务器的概念,只有平等的同级节点,同时对网络上的其它节点充当客户端和服务器。这种网络设计模型不同于客户端-服务器模型,在客户端-服务器模型中通信通常来往于一个中央服务器。P2P网络的一个重要的目标就是让所有的客户端都能提供资源,包括带宽,存储空间和计算能力。因此,当有节点加入且对系统请求增多,整个系统的容量也增大。

3.1 QQ通信协议介绍

QQ的通信协议是一套基于二进制数据的自己开发的应用层网络协议.其中使用一些公司的加密算法.QQ基本通信协议支持udp和tcp两种基本协议方式.

3.1.1 QQ的登录过程

首先QQ客户端向服务器发送一个请求登录令牌的数据包.服务器返回登录令牌.这个令牌是在服务器端生成的.和客户端的IP地址,版本信息等数据相关.以后会用到这个令牌去进行其他操作.在QQ客户端得到登录令牌之后.就会向服务器发送一个包含登录信息的登录请求.要求登录.服务器会首先看看客户端的号码.IP地址和版本是否可以在本服务器上进行登录.如果可以的话,就验证客户端的登录信息是否与服务器上保存的登录信息进行比较.匹配的就向客户端返回一个登录成功的数据包.不匹配返回登录失败.因为QQ的服务器有很多台.可能要分管不同的QQ版本.IP等.所以如果客户端的号码.IP地址和版本无法在本服务器进行登录.服务器就返回一个重定向包.让客户端去另外一台服务器登录.其实整个QQ登录过程就是这么简单的两个步骤.

QQ登录过程的数据包分为头部.内容和尾部三个部分.其中头的格式固定为:0x02客户端版本 命令 序列号 QQ号码. 其中0x02是1个字节的标志;客户端版本2个字节.用于表示QQ客户端的版本;命令2个字节.表示要发送的命令类型.例如请求登录令牌登录请求等;序列号是一个2字节的随机数,在一次QQ会话中通过它来确认回应包是否对应请求包.QQ客户端默认每次加1;QQ号码就是4字节的QQ号.对于服务器来说是每个字段是无所谓的.QQ登录过程数据包的尾部固定为0x03.

请求登录令牌包

包内容就是对一次命令的具体信息,对于第一次发送的请求登录令牌包来说,包命令是0x0062,而服务器返回包则相对复杂一些,其中0x18表示登录令牌的长度,现在QQ默认的登录令牌长度是0x18.这个令牌是在服务器端生成的.

登录包.

在这里包含了和QQ密码相关的信息. 其中初始密钥是一个16字节的随机数,用于本身的加密.这里最重要的就是密码密钥加密的一个空字符串.

所谓密码密钥就是用QQ口令进行两次MD5加密后得到的密文,然后以这个密文作为密钥去加密一个空字符串,这次加密使用了反馈的TEA算法,加密结果放在QQ登录包里,让服务器去验证,由于QQ的加密算法使用特殊的填充机制使用QQ服务器可以验证出用户密码是否正确,这个会在后面进行详细的解释.QQ登录包里面还有一些诸如登录状态,登录令版和很多未知的内容。

需要特别提到的是,前面的请求登录令牌包是不加密的,而这个登录包除了初始密钥本身以外的部分都要用初始密钥进行加密,加密算法同样是反馈的TEA.

QQ服务器在收到这个登录包之后,首先要用初始密钥解密登录包后面的部分,如果解密成功,就会用保存在服务器上的密信息去解密密码密钥加密的那个空字符串密文,如果用户提交的密码是正确的.才可以解密成

功.否则解密函数会返回空,认证就失败了.当验证QQ客户端密码准确无误后.就返回一个登录成功包.

3.1.2 QQ的加密算法

TEA是Tiny Encrypt Arithmetic的缩写.顾名思义就是一种比较简单的小型加密算法.它用一个16字节的密钥去加密一个8字节的明文.得到一个8字节的密文.也可以反向从密文解密出明文.

但是QQ使用的TEA虽然是标准的TEA.但是QQ却使用了一种自己特殊的填充反馈机制,QQ消息被分为多个加密单元.每一个加密单元都是8字节.使用TEA进行加密.加密结果再作为下一个单元的密钥.如果明文本身的长度不是8的倍数.那么还要进行填充.使其成为8的倍数.填充的时候会用一个32位随机数存放于明文的开始位置.再在明文的最后用0填充为整个长度是8的倍数.由于会向后反馈这样即使对于相同的明文,因为使用了不同的随机数.也会产生完全不同的密文.

使用这种特殊的填充反馈算法所导致的结果就是,一段密文只能用加密它的密钥进行解密.如果使用不正确的密钥.就无法得到正确的填充结果.最常见的就是解密后得到的填充数值不是0,这样就判断解密失败.服务器正式根据这种机制来确定客户端口的密码是否正确的.

3.2 SKYPE通信协议的介绍

所谓P2P(Peer to Peer),其最本质的含义即“对等”,该技术最早是用于网络中对等节点之间的资源和信息共享的技术,通常人们所知道的是将P2P技术用在文件下载过程中,即网络上的对等终端在下载共享文件的同时又作为一个“种子”为其他对等终端提供资源和信息。后来,Skype在网络通话业务系统中灵活应用了该技术。

由于冲击了传统通信领域,Skype在引起很多争议的同时也使人耳目一新,可以说,Skype是发展和演进了的P2P应用。目前对于P2P技术还没有规范的定义,结合其已有的应用,就更广泛的意义而言,P2P技术是指网络中的所有节点都动态参与到路由、信息处理和带宽增强等工作中,而不是单纯依靠服务器来完成这些工作。Skype是P2P技术演进到混合模式后的典型应用,它结合了集中式和分布式的特点,在网络的边缘节点采用集中式的网络结构,而在超级节点之间采用分布式的网络结构,混合模式的P2P网络模型如图1所示。

从网络模型来看,这种混合模式的P2P是经过多年的发展和演进而来的,严格讲,这已经不是纯粹的对等网络结构了,只能称做发展了的P2P。下面就介绍一下采用混合模式P2P网络模型的Skype的通信原理。

3.2.1 Skype网络结构

与常规的电信业务网络不同的是,Skype的网络中除了注册服务器,没有其他任何集中的服务器,只是将用户节点分为普通节点和超级节点。Skype的系统连接结构如图2所示。

注册服务器是Skype惟一需要维护的设备,它负责完成客户端的注册,存储并管理用户名和密码信息,当用户登录系统时,对用户进行身份认证。注册服务器还需要检验并保证用户名的全球惟一性。

普通节点即普通主机终端,只需要下载了Skype的应用,就具有提供语音呼叫和文本消息传送的能力。

超级节点实际上是满足某些要求的普通节点,这些要求包括:具有公网地址、具有足够的CPU、存储空间足够大、具有足够的网络带宽。也就是说,任何符合条件的主机终端都可以成为超级节点,当然前提是加载了Skype应用。

3.2.2 通信流程

Skype的通信流程分为:启动、注册(认证)、查找用户、呼叫和释放的过程。其中注册流程只是在用户初次安装了Skype的客户端软件后进行注册,后期使用的过程中该步骤就变成认证过程。

(1)启动流程 Skype的用户终端启动时,采用HTTP协议连接到注册服务器,用户初次安装的启动流程中携带“installed”的参数,使用时启动流程则在消息中携带“getlatestversion”参数,具体流程分别见图3和图4。

启动流程

(2)注册(认证)流程 注册(认证)流程可能是Skype所有流程中最复杂的一个,用户启动Skype后,首先需要连接到超级节点,通过超级节点向注册服务器发送身份认证信息,注册服务器验证用户名和密码的合法性,然后向其他对等节点及其好友发送在线信息,同时还需要判断该终端所在私网的NAT和防火墙类型。如果该终端先前默认的超级节点已不可用,则还要查找具有公网地址的Skype节点来作为该终端的超级节点,从而维持该终端与Skype网络的连接。一旦超级节点都不可用,Skype的客户端采用了尽力而为的方式进行注册,即先用UDP包试注册,不成功超时则用TCP(80端口),再不成功则用TCP(443

端口)。通常为防止其超级节点不可用,客户端必须建立一个可选连接节点列表,并定期维护该列表。

(3)查找用户 Skype采用了一种称做全球索引(Global Index)的技术来查找用户,该技术结合前面所述的分层网络,超级节点之间采用全分布式的连接,每个超级节点具有最小时延前提下所有可用的用户和资源的全部信息。具体来说,Skype采用了下面两种机制来保证顺利完成用户的查找。

● 启动后向所有列表中的用户发送其上线信息,其他用户响应各自的信息;

● 在中间节点缓存查找到的用户信息

对于有公网地址的客户端,其查找用户的过程如下:点击发送要查找的用户信息->;通过SN获取四个节点地址->;不成功->;报告SN->;获取八个节点地址->;„„->;成功(或失败返回)。

对于那些位于私网内的受限客户端,其查找用户的过程则是首先客户端将需要查找的用户信息发送给其SN,然后由SN完成查找后返回给私网内的客户端。

(4)呼叫建立和释放 查找到希望连接的用户后,可以将其加入好友列表,Skype用户可以随时与在线的好友进行呼叫。经过了稍微复杂的认证过程和用户查找过程,呼叫建立和释放的过程就变得简单了。用户位于公网和位于私网内部的情况会有所不同,两种情况下的呼叫建立和释放流程分别见图5和图6所示。

从上述流程图可见,Skype的呼叫信令都采用TCP封装,而媒体流则使用UDP封装,当有任何一方用户位于限制UDP包的防火墙内时,媒体流就会采用TCP封装。另外当Skype用户至少有一方位于私网内时,所有的信令和媒体消息都经过一个或多个中间节点转发。此时无需担心用户通话的媒体流因为经过中间节点转发而被窃听,因为Skype采用了对消息进行端到端加密的机制。Skype的技术优势

Skype之所以引起了不小的轰动,是因为它的互联网特性,即免费、开放和较好的业务质量。事实上,Skype最大的意义在于,它开创了将P2P技术引入到话音通信的先河。也就是说,采用了网络中的所有节点都动态参与到路由、信息处理和带宽增强等工作中的机制,而不是单纯依靠服务器来完成这些工作,因此其管理成本大大降低,同时又保证了语音质量。

四.P2P系统平台的开发应用 jxta,.Net

P2P软件结构有jxta,.Net,P2P平台由Internet,Intranet和Ad-hoc网构成,从拨号线到宽带都可支持P2P,早期P2P系统多用家庭机进行内容共享,Napster,Gnutella Aimster,分布式计算多基于桌面机,Ad-hoc手持网络最近可用,专于协同计算,如Endeavors,Technologies Magi.

4.1 JXTA

4.1.1 jxta简介

JXTA是Sun微系统对等网络(P2P)的标准,这是一个努力的方向,以它来促进和探究分布式计算的新方法。“JXTA”这个名字既用来指代这个标准,也用来指代研究出来的技术,这种技术处于传输平台和P2P通信协议的环绕之中。其开发组织被取名为单词“juxtapose(并置)”的简易形式。在2001年2月由O'Reilly

Network组织的P2P会议上,Bill Joy,Sun的首席科学家解释了选择这个名字的原因:并置就是要让东西彼此相邻地放置,而“这正是对等网络的全部意义”。

JXTA具体来说是一种标准组件平台,它提供了用于开发分布式服务和应用程序的基本组件。整套技术由一组开放源码的P2P协议组成,这组协议使网络上任何连接着的计算设备的协作变为可能。基于协议而不是基于API(应用程序接口)意味着JXTA技术可以用任何语言在任何操作系统上运行。JXTA使可共同使用的P2P应用程序拥有了许多能力,其中包括:在能简单地穿过防火墙通讯的不同设备的用户间建立对等组,在网络上找对等体的能力——甚至穿过防火墙,简化文件共享,自动侦测到新的网站目录,对对等体的远程监控,访问深层网络的数据,以及提供安全的通讯。

JXTA是一个用来解决P2P计算的开放的网络计算平台。JXTAP2P平台使开发者在其上建立P toP的应用。2001年4月,发布了第一个源型实现,它是基于JDK1.1.4的。

JXTA使用一些协议,每一个协议都可以很容易的实现和集成到P2P服务和应用中,这样,不同的P2P系统之间可以方便的互相通信,协同工作,向对方提供服务。

JXTA被设计成独立于编程语言,如C或JAVA,独立于系统平台,如WINDOWS和UNIX,独立于网络平台,如TCP/IP和蓝牙。而且JXTA被设计能在任何数字设备上实现,包括传感器、消费电子产品、PDA设备、网络路由器、桌面电脑、服务器和存储设备。

首先,JXTA是为了构建P2P网络而制订的一组协议。JXTA标准协议规范介绍如下: “JXTA由六个协议组成,这些协议是专为特定的、分布式的、对等的网络计算而设计的。使用这些协议,Peer可以互相合作来建立自我组织、自我管理的对等组,而不必关心它们在网络中所处的位置(在网络边缘或者防火墙的后面),并且也不需要集中的管理机构。”

因此JXTA的核心是六个协议。

其次,JXTA是P2P应用程序开发的运行平台。目前JXTA首先推出了基于Java的参考实现,提供了支持六个协议的Java API,JXTA还将推出包括C语言在内的其他编程语言的API.

在JXTA中,XML是大多数协议的基础。因为它能被任何语言读取,并且其合法性可以验证,而且XML也被广泛地应用。

4.1.2 jxta结构

JXTA由三层组成,如图3.1所示。第一层是JXTA核心层,它包含了服务所需要的核心功能;第二层是服务层,它提供了访问JXTA协议的接口;第三层是应用层,它使用服务来访问JXTA网络和JXTA提供的功能。这样的设计和一个标准的操作系统比较相似,标准的操作系统包括核心操作系统、服务和应用程序。

图3.1 JXTA的三层结构

各层的说明如下所示。

核心层(JXTA Core):这一层封装了最根本的东西,包括Peer、对等组、Peer发现、PeeR通信、Peer监视和相关的安全原语。

服务层(JXTA Services):这一层包括对于P2P网络不是必需的、但很通用的功能,如查找、共享、索引、代码缓存和内容缓存的机制。

应用层(JXTA Application):这一层包括了应用JXTA服务开发出来的完整的P2P应用程序,例如myJXTA,JXTA-CAD等应用程序。

4.2 .NET

4.2.1 .NET是什么

.NET 是 Microsoft XML Web services 平台。XML Web services 允许应用程序通过 Internet 进行通讯和共享数据,而不管所采用的是哪种操作系统、设备或编程语言。.NET就是微软的用来实现XML,Web

Services,SOA(面向服务的体系结构service-oriented architecture)和敏捷性的技术。.NET也可以如下来定义:.NET是微软的新一代技术平台,为敏捷商务构建互联互通的应用系统,这些系统是基于标准的,联通的,适应变化的,稳定的和高性能的。

4.2.2 应用组件

客户端应用

组成.net软件技术的组件,组件之一,“智能”客户端应用软件和操作系统,包括PC、PA、手机或其他移动设备通过互联网、借助Web Services技术,用户能够在任何时间、任何地点都可以得到需要的信息和服务。

WebService

.net应用组件之一。Web Services是智能终端软件的基础,是新一代的计算机与计算机之间一种通用的数据传输格式,可让不同运算系统更容易进行数据交换。Web Services有以下几点特性:Web services允许应用之间共享数据;Web services分散了代码单元;基于XML这种internet数据交换的通用语言,实现了跨平台、跨操作系统、跨语言。

接口规范

.net应用组件之一。在.NET中,Web service接口通常使用Web Services Description Language (WSDL)描述。WSDL 使用XML来定义这种接口操作标准及输入输出参数,看起来很像COM和CORBA的接口定义语言(IDLS)Interface Definition Languages。接口定义后就必须使用一些协议调用接口,如SOAP协议,SOAP源于一种叫做XML RPC(XML远程进程调用remote procedure calling)的协议,而Java则根据XML-RPC发展了自己的JAX-RPC协议用来调用Web Services。发布和访问Web Services的接口就用到UDDI了,这里我们只需要知道WSDL使用XML定义Web Services接口,通过SOAP访问Web Services,在internet上寻找Web Services使用UDDI就行了。

CLR 与 CIL

.net应用组件之一。.NET的初级组成是CIL和CLR。CIL是一套运作环境说明,包括一般系统、基础类库和与机器无关的中间代码,全称为通用中间语言(CIL)。CLR则是确认操作密码符合CIL的平台。在CIL执行前,CLR必须将指令及时编译转换成原始机械码。

所有CIL(通用中间语言)都可经由.NET自我表述。CLR检查元资料以确保正确的方法被调用。元资料通常是由语言编译器生成的,但开发人员也可以通过使用客户属性创建他们自己的元资料。

如果一种语言实现生成了CIL,它也可以通过使用CLR被调用,这样它就可以与任何其他.NET语言生成的资料相交互。CLR也被设计为作业系统无关性。

当一个汇编体被载入时,CLR执行各种各样的测试。其中的两个测试是确认与核查。在确认的时候,CLR检查汇编体是否包含有效的元资料和CIL,并且检查内部表的正确性。核查则不那么精确。核查机制检查代码是否会执行一些“不安全”的操作。核查所使用的演算法非常保守,导致有时一些“安全”的代码也通不过核查。不安全的代码只有在汇编体拥有“跳过核查”许可的情况下才会被执行,通常这意味着代码是安装在本机上的。

通过.NET,你可以用SOAP和不同的Web services进行交互。

五.P2P其它应用,企业级,商业,其它娱乐等

5.1企业P2P应用主要表现于几个方面

1. 协作——像Groove Networks的Groove软件这样的应用软件,可使企业雇员建立虚拟工作区,以供个人共享时间表和文档,进行声音、视频以及文本对话,并完成其他生产任务;

2. 分布式处理:越来越多的企业开始使用P2P软件利用过去闲置的处理器周期以在网络上建立虚拟的超级计算机;

3. 内容分配:P2P软件通过允许系统在本地网上从其他系统搜索文件而令企业降低了WAN通信量,以使下载速度更快、WAN带宽利用下降、运营成本降低;

4. 知识管理:P2P知识管理软件使用智能代理对信息、web网站以及其他数据源进行审查,从而简化了信息处理。

5.2 P2P的商业应用

对不同的商业应用的特点及有关问题的分析表明,它对两个领域尤其产生影响,并能提高其收入。其一,软件供应商:与协作及信息共享有关的知识管理应用。其二,网格计算,借此标准计算机通过网络协同工作,以较小成本实现超级计算机的处理能力。

5.3 P2P的娱乐应用

P2P不是一个新的概念,它的应用联系人们生活多方面,对于网民来说P2P应用最广泛的要数BT下载,由此也引发不少版权纷争,网民利用P2P分享音乐,视频文件方便又快捷。在线聊天,关注实时动态,异地通讯,及时发布信息分享,极大丰富了网民生活。然而P2P技术提供者应该与影视、音乐、游戏行业的版权所有者合作,依靠正版内容收费来盈利,保障双方权益。GenterSpan,AIM,Sxour 音乐和视频交付都在宽带上使用了P2P技术。P2P应用也涉及到版权管理。

数字版权管理

P2P文件共享系统 - 使文件拷贝更容易 - 必须保护作者的版权不被偷窃

处理方法 - 在文件中加入可识别签名 - 加在文件后面,但不影响文件内容水印或信息隐藏

RIAA把密码信息以不可见不可听的形式隐藏在文件中,保护MP3声音文件

技术:数字 -

六.qvod点播服务器架设,bt服务器架设,要求有过程,使用效果等

6.1 qvod点播服务器架设

安装一下phpStudy.准备用Apache来发布这个网站,这里提供一次性环境配备安装包,当然这里也有更多的推荐

把解压下来的源码复制到phpStudy创建的www目录中,然后运行127.0.0.1/进进安装.

安装好了就可以进后台的,如果对外发布还要涉及一些SEO方面的东西要填的。

发布视频其实在前台发布我们来试一下。

测试一下影片

6.2 bt服务器架设

1.首先下载

下载地址 /ftp/python/2.3/

安装到e:(最好将所有BitTorrent相关发布页及支持程序放在一个盘符)

2.下载

下载地址/BitTorrent/

解压到 e:/bittorrent 目录下!

3.下载

下载地址:/bbs

存放到e:/bittorrent 目录下!

4.打开 dos 窗口。

在 bittorrent 目录下,使用如下命令 --port 6969 --dfile dstate

这个过程是检测Python23是否成功支持bittorrent程序

5.命令 E:Python23Python --port 6969 --dfile dstate |

如果不出现任何错误,或者DOS窗口自动关闭,那么以上安装步骤是成功的!

6.在 bittorrent 目录下建立 status 目录

此目录是为以后TRACK扫描种子信息所作的。此目录至关重要!

7.下载

下载地址:/software/

安装到:E:usr 默认安装目录,本来是 c:perl 改成 E:usr

此文件是支持PHP文件的,因发布页文件中有.pl文件,所以我们需要此程序来支持。

8.从比特互联索取bittorrent发布页文件(文件是CGI的)

安装到E:BT(目录可以自行设置)

9.将IIS的默认目录到E:BT,然后设置IIS支持CGI,并且添加为默认主页文件.

10.全部设置玩后在IE里输入127.0.0.1,看看是否能访问.如果不能访问,请确认你的IIS是否支持CGI.

11.制作服务器的TRACK.

TRACK是bittorrent服务器最关键的一部分,如果TRACK关闭了,你发布页上的所有种子都将失效.

首先,在BitTorrent目录下建立一个批处理文件。具体步骤:新建文本文档在里面输入E:Python23Python --port 6969 --dfile dstate | 然后另存为,把保存类型设置为所有文件。这样你就制作完成TRACK了.

之后运行TRACK看看是否出错,如果DOS窗口只显示E:Python23Python --port6969

--dfile dstate | 那么就表明你的TRACK是好的!

12.最后检查你从中国比特互联得到的bittorrent发布页文件中各个文件里的路径,一定要和你安装其他支持程序以及新建立的目录路径一致,这样才能保证bittorrent发布页程序正常的运行。