Skype的主要组成部分:通讯协议分析
作者: , 出处:IT专家网论坛, 责任编辑: 吕烨,
2007-07-11 14:55
Skype与以往MSN等IM工具最大的不同在于其除了用户登录,其余工作基本不依赖中央服务器,Skype在穿透防火墙通讯时完全使用了Peer to Peer,而没用到中央服务器……
Skype的主要组成部分-Skype通讯协议分析(1)
通过分析得出的结论主要有三个:
1、Skype的通话质量较MSN和Yahoo的即时通信工具要好;
2、可以无缝的在NATs和防火墙后使用;
3、安装使用起来确实非常简单。

Skype与以往MSN等IM工具最大的不同在于其除了用户登录,其余工作基本不依赖中央服务器,Skype在穿透防火墙通讯时完全使用了Peer to Peer,而没用到中央服务器。上图中的小黑点是客户端,大黑点是超级节点(用于为其它客户端提供登录踏板及广播服务),灰色的点是Skype的登录服务器。
用户下载安装完Skype后,Skype客户端会发送一段HTTP 1.1的请求到中央服务器,告诉它我装完了一个什么样的版本:
GET /ui/0/97/en/installed HTTP/1.1 User-Agent: Skype™ Beta 0.97 Host: ui.skype.com Cache-Control: no-cache |
服务器会返回一个200 OK的信息:
| HTTP/1.1 200 OK Date: Tue, 20 Apr 2004 04:51:39 GMT Server: Apache/2.0.47 (Debian GNU/Linux) PHP/4.3.5 mod_ssl/2.0.47 OpenSSL/0.9.7b X-Powered-By: PHP/4.3.5 Cache-control: no-cache, must revalidate Pragma: no-cache Expires: 0 Content-Length: 0 Content-Type: text/html; charset=utf-8 Content-Language: en |
客户端会进行登录初始化工作,这一步工作包含很多内容,针对三种不同类型的网络情况有三种不同的登录方式:
1、直接有公众网的IP
2、在内部网,可以通过TCP访问外部网络
3、在内部网,但只能通过有限的几个端口(例如80和443)访问外部网络
Skype在登录的时候会先使用UDP请求HC中的IP,如果不行,就用TCP请求HC中的IP及端口,如果还不行,就用TCP请求HC中的IP及80端口,如果又不行,就再请求HC中的IP及443端口。如果这时候还不行,那就登录不了了。整个过程中传输的数据量大概在8k-10k,持续的时间在3至35秒。
- 本文关键词:

