读《An Analysis of the Skype Peer-to-Peer Internet Telephony Protocol》

 读《An Analysis of the Skype Peer-to-Peer Internet Telephony Protocol》

 

主要内容

一、Introduction:

Skype是一个P2P体系结构的利用IP网络传输声音的客户应用程序。它可以完全穿透防火墙工作并且它的通话质量较MSNYahoo IM的即时通信工具要好。Skype的通讯协议是不公开的,而且通讯内容是经过加密处理的。

Skype网络里有三种节点,一种是普通节点(Ordinary node),也就是客户端,它上面运行Skype应用程序,进行语音通讯和文件传输。另一种是超级节点(Super node,SN,它是普通节点的端点,任何一个主机只要拥有一个公有的IP地址,足够的CPU、内存和网络带宽资源,都可以成为超级节点。第三种节点是Skype登录服务器,它对其它的登录用户的信息进行验证,并且对用户上、下线的信息进行存储,同时支持用户的的搜索行为。

二、Key components of Skype

   1、端口(Ports):Skype的连接属性对话框中可以设置监听的端口号,在安装的时候它会随即的选择一个端口作为监听的端口,同时它还会打开对80443端口的监听。80是常见的HTTP服务端口,而443则是HTTPS服务的默认端口。与其它许多因特网上的协议不同的是,Skype没有默认的TCP或者UDP服务端口。

2、主机列表(HC,Host Cache:这里的主机指的是可以提供踏板及广播服务的超级节点(Super node)。主机列表是超级节点(Super node)的IP地址和端口对的映射表,它是由客户端建立和定期维护的。这个表通常存储在注册表里的:HKEY_CURRENT_USER / SOFTWARE / SKYPE / PHONE / LIB / CONNECTION / HOSTCACHE .一般情况下,运行两天后,HC中会有约200个机器地址及对应的端口号。

3、多媒体数字信号编解码器(Codecs):它使用iLBCiSACiPCM的编解码器实现了语音传输。

4、好友列表(Buddy List):Skype好友列表的一个显著特点是它的信息保存在本地计算机的注册表中并且是通过加密的,而不是保存在服务器上。因此当你换了一台计算机登录Skype网络的时候会发现原来Skype上面的好友列表不见了,而这时需要做的只是重新建一个好友列表罢了。

5、加密 (Encryption)Skype使用AES加密标准,使用256的编码技术。用户的公共信息通过Skype服务器获得验证。

6NAT与防火墙:Skype应该是使用了一个可变化的STUNTURN协议来检测所处的NAT及防火墙环境,并且应该可以定期的刷新这些信息。这些信息同样是存放在注册表里面的。与KaZaa文件共享系统不同的是Skype不能阻止它自己成为超级节点(Super Node,因此它可能随时成为别人登录服务和广播服务的提供者。

三、相关试验介绍:为了分析Skype协议,论文的作者对Skype version0.97.0.6做了一系列的试验。试验的环境是:

n         two Windows 2000 machines

n         One machine was a Pentium II 200MHz with 128 MB RAM, and the other machine was a Pentium Pro 200 MHz with 128 MB RAM.

n          10/100 Mb/s Ethernet card

n          Connect to 100Mb/s network

作者分三组做了试验,分别是:

n     Both Skype users with public IP addresses

n     One Skype user behind a port-restricted NAT

n     Both behind a port-restricted NAT and UDP-restricted firewall

四:Skype的主要功能介绍:初始化,登录,用户搜索,呼叫建立与终止,媒体传输与状态信息。

1、 初始化

第一次安装后,Skype 会发送一段包含关键字“inistalled”的HTTP1.1的请求给Skype中央服务器。在随后的每次登录中,Skype都会向中央服务器发送一个包含关键字“getlaterversion”的HTTP1.1请求以检测是否有新的存在的版本。

2、 登录

登录是Skype最重要的一项功能。在这个过程中,Skype终端到登录服务器上验证用户信息(用户名和密码),并且通知其他节点自己的到来,同时还要确定所处的NAT及防火墙的类型,还会发现拥有公有IP地址的在线的超级节点。当所在的超级节点(Super node)无法使用时,这些新发现的节点可以用于继续保持本机与Skype网络的连接。

Skype在登录的时候会先使用UDP请求Host CacheHC)中的IP,如果五秒中内没有反应,就用TCP请求HC中的IP及端口,如果还不行,就用TCP请求HC中的IP80端口,如果还是不行,就再请求HC中的IP443端口,Skype Client SC)等待六秒钟如果还是不行则开始重复上述过程,如果重复次数超过四次则宣告登录失败。

当一个SCSkype Client)和SNSuper Node)建立连接后,SC必须在Skype登录服务器上验证自己的登录信息。登录服务器是Skype网络中唯一的一个中央组件,它上面存储了用户的信息(用户名和密码)以此确保用户信息在Skype网络中的唯一性。通过试验我们发现SC经常通过TCP和一个IP地址是80.160.91.11的节点交换数据信息。这个节点应该就是登录服务器,IP地址的NS记录查询显示它的域名是ns14.inet.tele.dkns15.inet.tele.dkdk是丹麦的国家定级域名。

安装完后第一次登录时,HC被初始化,里面包含7IP与端口,而且基本上总是这7IP和端口,即使包含超过7对,这7对也在其中。第一次登录时,Skype通过其中的一对IP和端口建立TCP连接。

3、 用户搜索

Skype使用Global Index (GI)技术搜索用户。这种搜索是一种分布式的,只要用户存在并且在72小时内登录过Skype网络就能够被搜索到。大量测试表明Skype完全可以找到任何通过公有或私有IP地址在72小时内登录过的用户。

Skype协议不是一个开放的协议,它对消息有加密处理,我们不能够超越SN(Super node)跟踪Skype消息,同样我们也不可以让一个SC去和某个个别的SN建立连接。

SC有一个搜索对话框,输入用户标识号点击查询按钮就可以进行查询搜索。对于一个拥有公有IP地址的SC来说,SCSN发送一个TCP数据包。通过试验我们发现似乎SN给了SC四个搜索节点的IP地址和端口号,因为SC通过和SN的交互后,SC向四个节点发送了UDP数据包,但是SC在登录时并没有和这四个节点有任何的消息来往。然后SC向其他节点发送UDP数据包,如果不能找到用户则通过TCP把信息反馈给SN。一般来说SC需要和8个不同的节点建立联系,它给8个不同的节点都发送UDP数据包。这个过程将会停止一旦SC找到了用户或者它发现要找的用户不存在。这个查询搜索需要3-4秒的时间。我们目前还不清楚的是,当SC不能找到用户时它将会怎样终止这个搜索。

4、 呼叫建立与终止

    如果用户在好友列表中,直接呼叫就行了,如果用户不在好友列表中则需要先搜索用户然后才能进行呼叫。

如果用户双方都在公网上,在线,并且都分别在对方的好友列表中,那么只要按下呼叫按钮,主叫SC就会和被叫SC建立一个TCP连接,并且通过TCP进行通话。

如果主叫方处在限制端口的NAT后,而被叫方处在公网,则用一个在线的Skyper节点作中转,用TCP报文与被叫方建立连接,之后用UDP进行声音交换。

如果双方都处于限制端口的NAT和限制的UDP的防火墙之后,则主叫方和被叫方都通过另外节点的TCP连接转交控制信息。主叫方通过发送媒体信息给中间节点,然后由中间节点将信息通过TCP转交给被叫方,反之相同。

5、 媒体传输与状态信息

如果双方都在公网,媒体传输直接通过UDP就行了。如果主被叫方有一个或者两个在限制端口的NAT后,则通过另外在线的Skyper节点作中转,用UDP进行声音传输。如果双方都处在受限制的NAT和限制的UDP防火墙之后,则主叫方和被叫方通过另外节点的TCP连接收发声音信息。

这种传输最显著的特点就是支持No Silence Suppression。当通话的任一方没有讲话时,声音数据包的传输仍在继续。这有几个优点,一个是可以在NAT里维持UDP的约束,其次是可以利用这个特点来产生背景声音,还有可以避免降低TCP拥塞窗口的大小。

五、总结

    Skype是第一个建立在对等网络之上的基于IP技术的语音分组传输(VoIP)电话技术。总体说来,以下三个原因导致了Skype的流行,这也是Skype最出色的特点所在。其一,它提供了一个较MSNYahoo IM更好的通话质量;其二,它可以无缝的在NATs和防火墙后使用;其三,安装使用起来非常方便。Skype与其他即时通讯工具最大的不同在于除了用户登录,其余工作基本不依赖中央服务器,Skype在穿越防火墙通讯时完全使用了Peer-to-peer,而没有用到中央服务器。

  Skype客户端使用了STUN协议的变种来判断自己位于何种NAT和防火墙之后,Skype的这种穿透NAT和防火墙技术在很多应用程序中都有应用,例如网路游戏。它随机的选择发送和接收端口,使用TCP来控制语音传送,Skype是一个对等的网络,可以穿透任何NAT和防火墙,但是没有任何穿透NAT和防火墙的服务器,Skype使用TCP发送信号,他使用宽频率的GlobalIPSound语音编码,所有通讯都是经过加密的。

Skype的用户搜索技术目前还不是很清楚。我们猜测它使用了联合散列发,并且定期更新Skype用户的在线信息。Skype搜索机制在所有搜索用户失败时或者某些搜索成功时要传信息到登录服务器。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值