Skype协议分析(下)

来源:互联网 发布:centos重启命令 编辑:程序博客网 时间:2024/05/03 09:30

4、Skype的主要功能

  Skype的功能主要可以分为:初始化,登录,用户搜索,呼叫建立与终止,媒体传输和状态消息。

  4.1 初始化

  第一次安装后,Skype会发送一段HTTP 1.1的请求给中央服务器,包括关键字“installed”以及所装Skype的版本号。以后的每次登录Skype都会向中央服务器发送一小段包含关键字“getlatestversion”的HTTP 1.1请求,检查是否有新版本的Skype。

  4.2 登录

  登录是Skype最重要的功能,如图2所示。在这个过程中,Skype终端到登录服务器上验证用户名密码,广播给在线上的好友及其它节点,检查NAT和防火墙的类型,发现拥有公网IP地址的在线Skype节点,这些新发现的节被用于在所在Super Node无法使用后继续保持本机与Skype网络的连接。如果HC中所有的节点地址均不可用的话,登录失败。通过分析这些登录失败的过程,我们可以得出一个完整的Skype登录过程:

图2 Skype的登录过程

  先发送UDP数据包,如果5秒后没有响应,就用TCP,发送登录请求到目标节点的80端口;如果仍然失败,就通过TCP发送登录请求到443端口,等待6秒钟,如果仍然失败就显示无法登录。整个的登录过程可以重复4次。连接的对象是保存在本机中Host Cache中的节点列表。

  4.3 用户搜索

  Skype使用全球索引(Global Index,GI)技术进行用户搜索,在72小时内登录过的用户,无论是处在公众网还是私有网络中都能找到。客户端可以通过发送TCP包向SC发送请求,也可以通过UDP包向其他SC发送查询请求。SC将结果发回客户端。

  4.4 呼叫建立与终止

  Skype采用了32kbps的语音编码以保证语音质量,其信令通过TCP传递,而语音数据则通过TCP和UDP进行传输,信令和语音数据使用不同的端口号。Skype能够向好友列表中的用户发送呼叫请求。为了保证信令传输的可靠性,信令始终是通过TCP进行的。如果双方都是在公众网中,有独立的公用IP,那么主叫用户和被叫用户通过challenge-response机制直接进行数据交换。如果有一方位于私有网络或者是防火墙之后,那么私有网络一方需要首先同公众网中的至少一个SN建立TCP链接,然后由SN进行数据转发。如果双方都位于私有网络中,那么双方的数据都需要SN进行转发。

  4.5 媒体传输和状态消息

  如果双方都位于公众网中,双方可以使用UDP包直接进行数据交换。Skype的语音数据包的大小一般是67 bytes,正好是UDP包的净荷。对于100M bps的以太网来说,每秒可传送140个语音数据包。一般来说,上下行语音传输所需的平均带宽为5 kbps。如果有其中一方或者双方都位于私有网络中,就需要通过TCP同SN进行数据交换,由SC充当媒体代理服务器的角色,此时一个语音数据包的大小一般为69 bytes。在可能的情况下,Skype会优先选择UDP协议进行通信。

5、结束语

  Skype是第一个利用P2P技术进行语音通信的VoIP工具,能够提供较好的通话质量。Skype能够透过防火墙进行无缝通信,安装使用也很简单。随着互联网的不断普及。VoIP技术已经取得了越来越多的应用。有的运营商甚至开始和Skype合作提供语音服务,这是一个新的趋势。如何在新技术不断普及的同时保证运营商在传统通信网络中的核心地位,是一个值得研究的课题。

 
原创粉丝点击