欢迎来到天天文库
浏览记录
ID:35202543
大小:393.50 KB
页数:22页
时间:2019-03-21
《skype协议分析(2006版)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Skype协议分析(2006版)整理翻译:袁建明Angel_YY@126.com概要:Skype是创建Kazaa的组织在2003年开发的一个基于Peer-to-Peer(对等网络)的VoIP客户端。它可以几乎无缝的穿越NAT和防火墙,并且语音质量比其他的VoIP客户端软件要好很多。他加密了端到端的通话,分散式存储用户信息,支持即时消息通信和网络语音会议。本文分析了Skype的关键技术,比如登录,穿越NAT和防火墙,呼叫信令,媒体传送,编码,语音会议,并且基于三种不同网络环境下进行了分析。详细的分析了Skype网络的传输和阻断,共享
2、列表,系统调用。此外我们还画了一幅Skype在登录时建立TCP连接的超级结点图。普通主机(SC)超级结点(SN)______连接关系图1Skype网络有三种主要的实体,普通主机、超级结点、登陆服务器。-22-译者注:Skype单词的由来它是一个楚瓦什语单词...意思是“全世界可以免费交谈”。事实稍有不同,但很有趣。许多年前的某地,Niklas和其他伙伴开始了关于要让全世界免费交谈的想法。因此他们需要给它一个名字。他们提出的一个名字是:“Skypeer-to-peer”,其缩写就是“Skyper”。但是因为在Internet世界,一
3、些域名已经与“skyper”关联,因此他们想出一个变体,仅仅去掉字母r,变成“Skype”。它很好听,而且那些域名也有效。第一部分介绍Skype是一个基于P2P的VoIP的客户端程序,他允许与其他Skype客户端软件之间进行通话并发送文字消息,非常像MSN和雅虎IM。具有语音通话,即时消息,语音会议,好友列表,但所使用的协议却是完全不同的。就像他的前辈Kazaa一样,他是基于PeertoPeer对等网的。在这个对等网络中有两种结点,普通主机和超级结点(SN)。普通主机结点是一个可以语音通话和发送文本消息的应用程序;一个超级结点。在
4、Skype网络中,一个超级结点是一个普通结点的终点。任何一个有公网IP,足够的CPU,内存资源和带宽的普通结点都将成为一个候选的超级结点。每个普通结点必须连接到一个超级结点并且在登录服务器验证。除了Skype结点本身外,登录服务器也是Skype网络中非常重要的组成部分,因为他存放着每个Skype用户的用户名和密码。这个服务器来保证用户名的唯一性。从Skype1.2版开始,以后版本的Skype把好友列表存储在登录服务器上。除了登录服务器外,还有SkypeOut和SkypeIn服务器用来提供PC-to-PSTN和PSTN-to-PC呼
5、叫的桥接。SkypeOut和SkypeIn服务器在PC-to-PC模式的呼叫中并没有扮演任何角色。所以,我们认为登录服务器是Skype的P2P网络中唯一的中心组织。上线和离线用户信息以分散的方式传播。我们认为,每个Skype节点使用STUN协议的变种来确定它们位于何种NAT防火墙的后面。我们并且相信,没有全球性的NAT-22-和防火墙穿透服务器,因为如果有的话,在我们多次实验中Skype结点将会在登录和通话时交换传送信息。每个Skype网络就是他所能达到的范围,因而每个Skype客户端(SC)需要创建和维护一个它所能达到结点的表,
6、在Skype中,这个表被称为主机缓存(HC),包含了超级结点的IP地址和端口号,从Skype1.0版本开始,HC被存储在一个XML文件中。Skype主张使用第三代P2P网络技术或者全球搜索目录技术来保证如果一个Skype用户在过去的72小时内登陆过Skype网络,可以快速查找这个用户。Skype使用的语音编码允许它使用大约32kb/s的带宽来维持一个合理的语音质量。Skype使用TCP来维护信号,使用TCP和UDP来传送媒体数据。本文剩余的部分将作如下组织。第二部分描述了Skype软件和Skype网络的关键组成部分。第三部分描述通
7、过反向工程试验得到的Skype协议。第四部分论述了Skype的关键过程,比如登录,用户搜索,呼叫信令,媒体传送和编码,定时器,详细的流程图。第五部分论述了电话会议。第六部分论述了通过实验得到的Skype与MSN,GoogleTalk,Yahoo等软件的比较。给出了一个在登录过程中超级结点和Skype客户端程序建立TCP连接结点的世界地图。第二部分Skype软件的关键构成每一个Skype客户端在一个特殊的端口侦听呼入信号,维护超级节点列表,使用的音频编码器,维护好友列表,对信息进行端到端的加密,确定位于何种NAT或防火墙之后,这部分
8、描述了他们的组成和详细的功能。A..端口每个Skype客户端(SC)都会打开一个端口号来侦听TCP或UDP链接,这个端口号可以在链接对话框中配置。SC在安装的时候随机选定一个端口号。此外还会侦听TCP的80和443端口来等待http或者https的
此文档下载收益归作者所有