传输文件选MSN还是QQ?剖析底层原理来选择

经常在网上和朋友聊天,相互之间经常需要交换一些文件,例如音乐、电影、图片等等,有些文件几兆、几十兆甚至上百兆,邮件肯定不行的了,那么网络硬盘呢?很多都是需要收费的,免费的又太小了,根本不够用。那么我们经常用的QQ、MSN等即时通信(IM)软件,除了但当通讯软件之外,还可以为我们传输数据。

QQ和MSN应该是我们最常用的IM软件,但是相信不少人都注意到,两个软件在传输文件的时候,MSN要比QQ慢很多,当然也不是绝对的每次传输MSN都慢,但是这绝对是大多数情况。这到底是是为什么呢?让我们来一看究竟。

就本质上而言,QQ是一个基于TCP/UDP协议的通讯软件,而MSN是基于TCP协议的通讯软件,但在博大精深的网络通讯协议的理解和应用当中,QQ和MSN却有着彼此不同的理念。

那么QQ是如何通讯的呢?在TCP/IP协议中,唯一标识一个应用进程的是socket,它通过网络层的IP地址和传输层的端口号来实现,对与同一个IP地址的内部网络,通过不同的端口号来标识不同的QQ进程;当你登陆QQ服务器的时候,服务器会保留你的保留IP地址和端口号信息,并在你的好友的QQ进程中进行列表显示,然后两个进程就可以通信了。

通常,发送文件的计算机首先要通过消息服务器将其IP地址发送给接收计算机,当接收计算机同意接收的确认消息反馈到消息服务器后,消息服务器将据此设置好文件传输对话。随即,发送计算机与接收计算机就会在确定好的端口范围内,建立起TCP或UDP连接开始文件的检索与传输。

在默认状态下,QQ优先采用了UDP(User Data Protocol,用户数据报协议)协议传送数据,而对可靠性要求高的数据通讯系统往往使用TCP协议传输数据。与TCP协议不同,UDP协议并不提供数据传送的验证机制——在整个文件传输过程中如果出现数据报的丢失,协议本身并不能作出任何的检测或提示。因此,通常人们把UDP协议称为不可靠的传输协议。

UDP协议适用于无须应答、要求时效的软件使用,这样的设计正好与QQ追求的目标相符,所以QQ优先使用了此协议进行一切功能应用。但是,由于UDP协议具有不可靠性,常会因种种原因导致消息或数据的发送失败(很多时候会发现发送文件给对方接收时,对方根本收不到要求接收文件的消息。或是发送聊天消息时,对方根本没有收到过消息)。

显然,UDP协议由于排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大降低了执行时间,使速度得到了保证。QQ在数据传输上更注重实际性能,为了获得更好的使用效果,往往可以牺牲一定的可靠性。因此,使用QQ来传输数据,在很多时候就成了一个“不错”的选择。

一般内网传输首选QQ,速度最快,QQ的文件传输是直接个人对个人,采用P2P的传输方式,具有不需中转的优势,而且服务器都在国内,传输性能要高于外国IM软件。

看过了QQ,我们再来看看MSN的传输原理。MSN现已改名为Windows Live Messenger,是微软公司推出的即时通讯软件。MSN凭借自身的优秀性能和简易操作,已跻身为目前世界上使用最为广泛的IM软件(即时通讯软件),在国内也有着众多的用户,是唯一一款可以和QQ抗衡的IM软件。如今MSN除了互联网通信外还广泛用于局域网,如学校,公司,政府机构等内部人员交流。

就MSN所用的TCP协议来说,他已经包含了数据传递验证机制。而网络传输协议中的验证机制往往是接收方收到发送方信息后自动回复一个确认信息,因此有时候在网络出现延迟或线端拥塞时,即使MSN显示连接正常也会出现“无法将XXXX信息发送给所有接收者”。

在网络环境较好时,MSN所用TCP协议的效率可能较低,这主要是由于它的安全特性,在恶劣的网络环境中,QQ所用UDP协议传输文本信息可能较不安全。但传输音视频及图片时,UDP协议则拥有更高的速度。难能可贵的是较新版本的QQ支持断点续传功能,因此既保持了UDP协议的快速性,同时又弥补了因网络原因导致的断线。事实上,基于TCP协议的网络文件传输的断线机率会更高,这就是为什么许多人更愿意选择QQ而不是MSN来传输文件了。其实,即使是在内网,UDP协议的数据传输的效率也要远高于TCP协议。

根据上面我们所了解到的资料,之所以两种IM软件通讯、传输文件的速度不一样,并不是因为大家之前听说的“MSN服务器在国外”等等,而是因为QQ和MSN的协议不一样,适用情况也不一样。所以,现在许多的网友一定是使用QQ、MSN双管齐下。了解了这些,在以后的生活、工作中,我们就可以根据不同的情况选用不同的IM软件通讯,一定会让我们的效率进一步提高。