小时候我们都听过龟兔赛跑的故事,在目前如火如荼的即时通讯领域,依靠微软公司占据同样优势的MSN Messenger,却同样在与QQ的文件传输速度比赛中成了亚军兔子。这是为什么呢?在下文中,将与读者们探讨一下这个问题。
![](http://www.cpcw.com/uploadNewsPic/2006-02/1139387968.jpg)
仲治国:技术支持工程师;系统分析员;程序员;计算机图书作者;MCSE+MCDBA;任多家企业和学校技术支持工程师,技术培训讲师。
QQ和MSN的本质一样?
QQ与MSN Messenger这类即时通讯程序,从本质上来说都是一个客户端/服务器应用程序,客户端利用QQ或MSN Messenger登录到消息服务器,然后发送聊天会话请求。消息服务器会暂存并处理发送两个客户端之间的通讯。那么,QQ与MSN Messenger的文件发送又是怎样的过程呢?通常,发送文件的计算机首先要通过消息服务器将其IP地址发送给接收计算机,当接收计算机同意接收的确认消息反馈到消息服务器后,消息服务器将据此设置好文件传输对话。随即,发送计算机与接收计算机就会在确定好的端口范围内,建立起TCP或UDP连接开始文件的检索与传输。
QQ比MSN在传输上为什么快?
那么,QQ为什么比MSN Messenger的文件传送速度要快一些呢?首先,MSN Messenger希望在传输文件时,用户的系统与网络操作能够最大程度地不受它的影响,它在MSN Messenger传送文件时采取了“节流传输服务”。此服务可以自动对文件的传输速度与网络带宽进行协调,并自动对传送的文件进行控制,以确保文件传送不会影响到其它的网络操作——当网络比较空闲时,可以发现MSN Messenger传送文件似乎快了一点。而QQ则不是采取这种设计理念,它在文件传输时会抢占带宽,它尽量争取最大优先权,以确保文件传输的速度不受影响。大家可以看到即便是系统高度繁忙,它的传输速度也不会受到影响。那么,为什么会出现这种情况呢?这就要从QQ与MSN Messenger的默认选用协议说起了。
在默认状态下,QQ优先采用了UDP(User Data Protocol,用户数据报协议)协议传送数据,MSN Messenger则默认采用了TCP(Transmission Control Protocol,传输控制协议)协议传送数据。UDP和TCP协议的主要区别在于两者的传递方式可靠程度不同。
TCP协议中包含了专门的数据传递验证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息;发送方只有在接收到该确认消息之后才会继续传送其它信息,否则将一直等待并直至收到确认信息为止。在MSN Messenger的整个文件传送过程中,以A机向B机传送文件为例,B机要不断地向A机发送验证数据。这个交互数据的过程在实际执行的过程中会占用系统资源,进而在一定程度上会对数据的收发速度产生影响。但其却可以保证已经接收的数据与源数据并无差异。
故而,对可靠性要求高的数据通讯系统往往使用TCP协议传输数据。与TCP协议不同,UDP协议并不提供数据传送的验证机制——在整个文件传输过程中如果出现数据报的丢失,协议本身并不能作出任何的检测或提示。因此,通常人们把UDP协议称为不可靠的传输协议。
UDP协议适用于无须应答、要求时效的软件使用,这样的设计正好与QQ追求的目标相符,所以QQ优先使用了此协议进行一切功能应用。但是,由于UDP协议具有不可靠性,常会因种种原因导致消息或数据的发送失败(很多时候会发现发送文件给对方接收时,对方根本收不到要求接收文件的消息。或是发送聊天消息时,对方根本没有收到过消息)。显然,UDP协议由于排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大降低了执行时间,使速度得到了保证。
相对于MSN Messenger在传输数据过程中,宁可中断传输也要保证数据可靠性这一点,QQ在数据传输上更注重实际性能,为了获得更好的使用效果,往往可以牺牲一定的可靠性。因此,使用QQ来传输数据,在很多时候就成了一个“不错”的选择。显然,我们已经可以看出来MSN Messenger成为这场赛跑的亚军的原因了。
这种TCP与UDP协议在文件传输上的差距,在网络状态良好的情况下越发明显,而网络状态不良时则差距明显缩小,甚至是出现相反的情况。如,有的人会发现有时QQ传送速度比MSN Messenger传送速度要慢。这是一个QQ一直在努力改善的问题。但是,即便是在已经得到优化的最新的QQ版本中,由于受到默认采用UDP协议的限制,仍然经常会遇到因双方网络的原因造成文件传输缓慢或不成功的现象。腾讯推荐的解决方法是使用会员专用服务器来解决问题,也就是说要求发送方将文件通过会员VIP服务器来代传,这就较好地改善了非会员遇到的诸多传送文件不稳定的不足。但这样的要求,代价却是非常昂贵的,众所周知:一个Q币等于一元人民币,做一个月会员就需要10元人民币。
MSN也会比QQ传输文件快?
虽然一向追求可靠性的MSN Messenger在网络不稳定时,可以呈现出胜于QQ传输速度的优势,但实际上,“发现有时QQ传送速度比MSN Messenger传送速度要慢”这一现象,相信绝大多数的人都没有发现过。这就说明这种优势是受到网络条件限制的。显然,网络稳定才是保障文件传输的基本要素,而软件的优化只不过是在不稳定的网络路径中,试图找出一条稳定捷径的设计罢了。但毋庸置疑的是,MSN Messenger的设计重心实际上并没有放在文件传输上,毕竟MSN Messenger的设计宗旨是即时通讯,而不是文件传输。
如果有朝一日,MSN Messenger的设计师发现文件传输对于用户也是非常重要的功能时,强大的设计实力必将使MSN Messenger与QQ在传输速度上的差距会有明显的缩小。
在我们拭目以待的同时,更希望国产的QQ能加快优化的步伐,努力找到稳定与速度之间的最佳契合点,使QQ这一影响上亿人的软件能更加光芒四射。