如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
P2P-SIP网络电话图2P2P-SIP结点中的块算法图2给出了P2P-SIP结点中不同部件的算法。结点启动和用户用标识符登记时,发现模块被激活用于初始化网络地址翻译和防火墙探测[8],点发现和SIP注册。组播SIP注册、上一引导周期存储的端地址和预配置的自举地址被用来初始化结点集。用户界面模块记录用户的“朋友列表”并调用用户定位模块定位这些朋友。用户定位模块使用SIP模块,或者,如果这个结点加入了DHT就使用DHT模块。DHT模块维护端信息(例如,Chord指针表)并执行像发现、加入和离开的一些DHT操作。SIP被用作是定位其他用户或结点、加入DHT、注册用户、呼叫建立和即时消息的基础协议。一旦用户被定位,呼叫建立或即时消息就可以直接经由SIP模块发送到用户的电话。SIPREGISTER更新和OPTIONS消息用于探测结点失败。当一个超级结点关闭或者失败,注册被发送到DHT中的其他适当的超级结点。其他的SIP功能例如第三方呼叫控制和呼叫传输可以用相同的方法实现。媒介路径(音频设备,编解码器和传输)独立于P2P-SIP操作。一些分布式哈希表允许对多端点并行搜索,不像Chord中的顺序搜索。在这种情况下超级结点可以担当背靠背用户代理并向邻居端点传播SIP消息。然而,除非是像美国的911这种紧急呼叫路由的情况,应该避免并行搜索以免网络中发生泛洪。在实际的实施中允许多种P2P-SIP网络(分布式哈希表)相互连接是非常有用的。我们的混合结构允许P2P-SIP网络群和基于服务器的SIP结构共存。有两种方法:将一个网络中所有的用户与所有其他网络交互注册或者在呼叫建立的过程中在其余的网络中定位用户。前一种方法工作在少量的已知的P2P-SIP网络。后一种方法可以使用一个像DNS这样的全局命名服务器或层次化的P2P-SIP网络实现。第一种情况,每一个P2P-SIP网络用一个域名表示。这与基于服务器的SIP网络是没有区别的,域名在那个网络中解析一个或多个自举结点[4]。第二种情况,用P2P-SIP代替DNS来解析域名。例如,单独的大的组织可以有本地P2P-SIP网络与全局(公共)P2P-SIP网络连接,如图3所示。本地特定域的DHT有典型的服务结点,这些结点在全局DHT中也是可达的。例如,private.com在全局DHT中映射到结点A和C。特定域DHT中的任何结点可以到达全局DHT,全局DHT中的任何结点可以经由域中的典型服务结点到达特定域DHT。图3混合系统举例混合结构允许用户在她的提供者可用的情况下用她的提供者注册,也可以用P2P-SIP网络。呼叫建立在可以用DNS解析时被发送到SIP目的地,同样也可以用P2P-SIP网络。3设计和实现3.1命名结点和用户标识符是用SIP通用资源标志符(URI)表示的。例如,如果一个结点在传输地址192.1.2.3:8054上监听SIP消息并且Chord的哈希函数给出的键值是17,结点的URI就是sip:17@192.1.2.3:8054。域example.com中的一个不知道传输地址的结点标识符或键值(例如10)表示为sip:10@example.com。每一个局部的P2P-SIP网络用一个DNS域名表示,example.invalid用于没有域的键,例如全局DHT中的键。这样的结点标识符对于DHT的维护是有用的,例如,查询另外一个结点的传输地址来成为这个结点的指针表的入口。用户标识符可以由系统随机分配,或由用户选择一个鉴定名(如,alice172@sippeer.net)或者用户选择她的有效email地址(如alice@example.com)。前两种方法允许用户选择密码,但是不清楚P2P结点怎样从用户那里得到密码。我们使用最后一种方法,因为它允许系统产生一个随机密码并email给用户用作验证。前两种方法,如果密码由系统随机产生并且SIPREGISTER请求消息的连接头里有email地址,密码可以发给用户。3.2认证当一个用户第一次登陆P2P-SIP网络时,我们需要验证用户的标识符是有效的并且确实属于该用户。没有公共密钥结构(PKI),系统可以产生一个新的密码并用email发送给用户。这个密码在后来的拨入当中用于注册验证。可以使用一个可用的生存时间,比如一个月。当用户随后再登陆时这些信息被刷新。3.3SIP消息SIPREGISTER消息被结点既用于用户注册也用于DHT的维护。用户注册消息类似于基于服务器的注册,To头表示用户标识符,Contact头表示用户的联系位置。结点将SIPREGISTER消息用于两种情况:查询和更新。如果消息中有Contact头,则是更新请求表示发送者想更新To头中用户标识符的绑定;否则就是一个查询请求,发送者请求获得To头中用户标识符的Contact信息;在一个P2P-SI