您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 基于Sip的P2P设计和原理分析
基于Sip的P2P设计和原理分析1.1.SIP网络2.2.P2P技术在互联网上的应用3.3.P2P网络架构1.3.1.集中目录式网络架构2.3.2.纯P2P网络架构3.3.3.混合式P2P网络架构4.3.4.结构化P2P网络架构5.3.5.三种结构的P2P(DHT,树形,网状)6.3.6.BitTorrent工作原理7.3.7.eMule工作原理8.3.8.迅雷工作原理9.3.9.PPLive工作原理10.3.10.Skype工作原理4.4.SIP协议和voip1.4.1.SIP:会话初始化协议(SessionInitiationProtocol)2.4.2.SDP:会话描述协议(SessionDescriptionProtocol)3.4.3.SAP:会话通知协议(SessionAnnouncementProtocol)4.4.4.RTP(Real-timeTransportProtocol)5.4.5.RTCP(RealtimeTransportControlProtocol)5.5.ICE(InteractiveConnectivityEstablishment)1.5.1.ICE基于SIP工作方法6.6.基于SIP的P2P网络架构1.6.1.P2PSIP节点操作2.6.2.P2PSIP用户注册操作3.6.3.P2PSIP会话建立操作7.7.基于ICE的SIPNAT解决方案设计和实现8.8.结束语1.SIP网络会话发起协议(SIP)是互联网工程任务组(IETF)制定的多媒体通信应用层控制协议,用于建立、修改和终止多媒体会话。SIP协议借鉴了超文本传输协议(HTTP)、简单邮件传输协议(SMTP)等,采用基于文本协议控制方式,支持代理、重定向、登记定位用户等功能[1]。SIP凭借其简单、易于扩展、便于实现等诸多优点而得到了广泛应用。3GPP等标准化组织已经选择SIP作为下一代网络(NGN)和3G多媒体子系统(IMS)中的通信协议,业界已广泛应用了多种基于SIP的多媒体业务[2]。SIP网络采用客户端/服务器(C/S)的网络架构,按域划分用户。每个域的SIP服务器管理着本域内的用户,用户在使用SIP业务时,需要注册到SIP服务器。各用户之间的通信需要由SIP服务器来进行路由,因此存在SIP服务器的“单点故障”和“性能瓶颈”等问题。目前有多种提升SIP服务器处理能力的方案,如采用高处理能力的服务器、采用多服务器间的N+1或热备份方案,或者采用多服务器负载均衡技术。2.P2P技术在互联网上的应用P2P技术本身并不是新的概念或技术,它的原理是将网络上的通信节点作为平等的通信终端,任意两个通信节点之间既互为“服务器”又互为“客户端”。这一点与互联网的基础协议TCP/IP一致,TCP/IP也没有服务器或客户端的概念,任意两个节点之间是平等通信的。随着互联网应用的扩展,P2P技术得到了广泛的应用。P2P网络采用分布式对象定位机制,使得信息或媒体流在节点之间直接传送,降低了中转开销,从而提高了网络的可扩展性,节省了网络带宽。很多基于P2P技术如共享MP3格式音乐文件的Napster服务、SETI@Home计划,尤其是Skype应用的成功,使得P2P技术成为业界关注的焦点。3.P2P网络架构P2P网络的技术核心是解决分布式节点之间的资源定位,这需要合适的网络架构,发展至今共经历了3代网络架构。3.1.集中目录式网络架构最早出现的P2P应用模式就是集中目录式P2P网络,Napster是该架构模型最典型的代表。用户需要登录到中心目录服务器,通过目录服务器查询存储各个节点的资源信息。这种结构的最大特点是所有的资料都是存贮在各个用户节点中。用户获取资源时,节点根据网络流量和延迟等信息选择合适的节点建立直接连接,而不必经过中央服务器。3.2.纯P2P网络架构纯P2P网络架构采用的是广播式的P2P模型。在这种架构下,没有集中的中央服务器,每个用户节点随机接入到网络,并与自己相邻的一组节点通过端到端连接构成一个逻辑覆盖的网络。节点之间的内容查询和内容共享都是直接通过相邻节点以广播方式接力传递。为了避免循环搜索现象,每个节点会记录其搜索轨迹。Gnutella模型是现在应用最广泛的纯P2P网络架构,采用泛洪式的节点搜索算法,解决了网络结构中心化的问题,扩展性和容错性较好。但是Gnutella网络可用性较差,易被病毒攻击,并且极大地消耗了网络带宽,很容易造成网络拥塞与不稳定。3.3.混合式P2P网络架构混合式P2P网络在纯P2P网络架构基础上加入了超级节点的概念。在这种网络下,将节点按能力(计算能力、内存大小、连接带宽、网络滞留时间等)不同区分为普通节点和超级节点两类。超级节点与其临近的若干普通节点之间构成一个自治的簇,簇内采用基于集中目录式的P2P模式,而整个P2P网络中各个不同的簇之间再通过纯P2P的模式将超级节点相连。有时甚至也可以在各个超级节点之间再次选取性能最优的节点,或者另外引入一新的性能最优的节点作为索引节点来保存整个网络中可以利用的超级节点信息,并且负责维护整个网络的结构。普通节点的文件搜索先在本簇内进行,只有查询结果不充分时再通过超级节点之间进行有限的泛洪。同时,每个簇中的超级节点监控着所有普通节点的行为,从而确保一些恶意的攻击行为能在网络局部得到控制,也在一定程度上提高了整个网络的负载平衡。混合式P2P网络架构综合了集中目录式P2P快速查找和纯P2P去中心化的优势,Kazaa模型是P2P混合模型的典型代表。然而,由于超级节点本身的脆弱性也可能导致其簇内的节点处于孤立状态,因此这种局部索引的方法仍然存在一定的局限性。这导致了结构化的P2P网络模型的出现。3.4.结构化P2P网络架构结构化P2P架构采用纯分布式的消息传递机制,根据关键字进行节点查找定位。目前结构化网络的主流查询定位方法是采用分布式哈希表(DHT)技术,这也是目前扩展性最好的P2P路由方式之一。DHT将节点管理的资源或文档作为“关键字”,将节点的IP地址作为“数值”,组成关键字-数值对,并能根据关键字查找数值。DHT技术中的存储和查询是分布在多个节点上进行的,对单一节点的依赖性低,容易实现网络上任一节点的无序加入或退出,对整个网络性能影响较低。DHT各节点并不要维护整个网络的信息,只需存储其临近后继节点信息,因此通过较少的路由就可以到达目标节点。DHT又取消了泛洪算法,有效地减少了节点信息的发送操作数量,增强了P2P网络的扩展性。在实际应用中,出于冗余度以及延时的考虑,大部分DHT总是在节点的虚拟标识与关键字最接近的节点上备份冗余信息,这样也避免了单一节点失效的问题。但是基于DHT的网络拓扑结构的维护和修复也比Gnutella模型和Kazaa模型等无结构的系统要复杂得多,有时甚至出现“绕路”的问题。目前基于DHT的研究项目主要还集中在具有相同能力的较小规模的网络中,对于大规模的Internet部署还在研究中。同时大量实际的P2P应用还大都是基于无结构的拓扑和泛洪广播机制,采用DHT方式的P2P系统缺乏在Internet中大规模真实部署的成功实例。3.5.三种结构的P2P(DHT,树形,网状)(1)DHT结构分布式哈希表(DHT)[1]是一种功能强大的工具,它的提出引起了学术界一股研究DHT的热潮。虽然DHT具有各种各样的实现方式,但是具有共同的特征,即都是一个环行拓扑结构,在这个结构里每个节点具有一个唯一的节点标识(ID),节点ID是一个128位的哈希值。每个节点都在路由表里保存了其他前驱、后继节点的ID。如图1(a)所示。通过这些路由信息,可以方便地找到其他节点。这种结构多用于文件共享和作为底层结构用于流媒体传输[2]。(2)树形结构P2P网络树形结构如图1(b)所示。在这种结构中,所有的节点都被组织在一棵树中,树根只有子节点,树叶只有父节点,其他节点既有子节点也有父节点。信息的流向沿着树枝流动。最初的树形结构多用于P2P流媒体直播[3-4]。(3)网状结构网状结构如图1(c)所示,又叫无结构。顾名思义,这种结构中,所有的节点无规则地连在一起,没有稳定的关系,没有父子关系。网状结构[5]为P2P提供了最大的容忍性、动态适应性,在流媒体直播和点播应用中取得了极大的成功。当网络变得很大时,常常会引入超级节点的概念,超级节点可以和任何一种以上结构结合起来组成新的结构,如KaZaA[6]。3.6.BitTorrent工作原理BitTorrent软件用户首先从Web服务器上获得下载文件的种子文件,种子文件中包含下载文件名及数据部分的哈希值,还包含一个或者多个的索引(Tracker)服务器地址。它的工作过程如下:客户端向索引服务器发一个超文本传输协议(HTTP)的GET请求,并把它自己的私有信息和下载文件的哈希值放在GET的参数中;索引服务器根据请求的哈希值查找内部的数据字典,随机地返回正在下载该文件的一组节点,客户端连接这些节点,下载需要的文件片段。因此可以将索引服务器的文件下载过程简单地分成两个部分:与索引服务器通信的HTTP,与其他客户端通信并传输数据的协议,我们称为BitTorrent对等协议。BitTorrent软件的工作原理如图4所示。BitTorrent协议也处在不断变化中,可以通过数据报协议(UDP)和DHT的方法获得可用的传输节点信息,而不是仅仅通过原有的HTTP,这种方法使得BitTorrent应用更加灵活,提高BitTorrent用户的下载体验。3.7.eMule工作原理eMule软件基于eDonkey协议改进后的协议,同时兼容eDonkey协议。每个eMule客户端都预先设置好了一个服务器列表和一个本地共享文件列表,客户端通过TCP连接到eMule服务器进行登录,得到想要的文件的信息以及可用的客户端的信息。一个客户端可以从多个其他的EMule客户端下载同一个文件,并从不同的客户端取得不同的数据片段。eMule同时扩展了eDonkey的能力,允许客户端之间互相交换关于服务器、其他客户端和文件的信息。eMule服务器不保存任何文件,它只是文件位置信息的中心索引。eMule客户端一启动就会自动使用传输控制协议(TCP)连接到eMule服务器上。服务器给客户端提供一个客户端标识(ID),它仅在客户端服务器连接的生命周期内有效。连接建立后,客户端把其共享的文件列表发送给服务器。服务器将这个列表保存在内部数据库内。eMule客户端也会发送请求下载列表。连接建立以后,eMule服务器给客户端返回一个列表,包括哪些客户端可以提供请求文件的下载。然后,客户端再和它们主动建立连接下载文件。图5所示为eMule的工作原理。3.8.迅雷工作原理迅雷是一款新型的基于多资源多线程技术的下载软件,迅雷拥有比目前用户常用的下载软件快7~10倍的下载速度。迅雷的技术主要分成两个部分,一部分是对现有Internet下载资源的搜索和整合,将现有Internet上的下载资源进行校验,将相同校验值的统一资源定位(URL)信息进行聚合。当用户点击某个下载连接时,迅雷服务器按照一定的策略返回该URL信息所在聚合的子集,并将该用户的信息返回给迅雷服务器。另一部分是迅雷客户端通过多资源多线程下载所需要的文件,提高下载速率。迅雷高速稳定下载的根本原因在于同时整合多个稳定服务器的资源实现多资源多线程的数据传输。多资源多线程技术使得迅雷在不降低用户体验的前提下,对服务器资源进行均衡,有效降低了服务器负载。每个用户在网上下载的文件都会在迅雷的服务器中进行数据记录,如有其他用户再下载同样的文件,迅雷的服务器会在它的数据库中搜索曾经下载过这些文件的用户,服务器再连接这些用户,通过用户已下载文件中的记录进行判断,如用户下载文件中仍存在此文件(文件如改名或改变保存位置则无效),用户将在不知不觉中扮演下载中间服务角色,上传文件。3.9.PPLive工作原理PPLive软件的工作机制和BitTorrent十分类似,PPLive将视频文件分成大小相等的片段,第三方提供播放的视频源,用户启矾PPLive以后,从PPLiv
本文标题:基于Sip的P2P设计和原理分析
链接地址:https://www.777doc.com/doc-5055295 .html