关注分享主机优惠活动
国内外VPS云服务器

浅谈MSN和QQ文件的传输速度

发现很多情况下,msn传输文件比QQ慢,不是说msn不快,而是大部分时间确实比QQ慢。连我这样神经兮兮的人都注意到了。谷歌一搜,已经有人回答了。基本上MSN用TCP传输文件,QQ用UDP。剩下的事情就是证明TCP传输文件的速度并不比UDP快。大概有以下几点:

1.TCP可靠,需要验证数据是否到达,是否正确,而UDP不可靠,做的事情少很多,所以MSN的文件传输比QQ慢。

我看了就想笑。UDP传输不可靠,但是应用层肯定会写代码做类似TCP可靠传输的事情。我用QQ很久了,一直没发现传输文件有问题。我用UDP做协议很久了,不经过应用层验证重传代码,真的不敢写。这个原因,失败。

2.TCP需要三次握手才能建立连接,UDP不需要,所以TCP慢。

三次握手的事实是真的。还好,我不是那么容易被忽悠的。两个人在交谈之前握手确实需要几秒钟,但是交谈的速度是多少呢?如果网络的ping值达到300ms,你们这些读者喜欢网游,估计就不玩了。不然垂死的老板会很高兴发现你突然变成了傀儡,可以随意揍你一顿。最后只能骂电信网通,复活几分钟再当英雄。但是对于TCP来说,这样的ping值,三次握手一般用不了一秒。把这个当做文件传输慢的罪魁祸首似乎太不靠谱了,这个理由还是不成立。

3.TCP一旦建立链路,路由就确定了,而UDP是不确定的路由方式,谁快谁走路由。

这意味着没有作者很好地理解TCP/IP协议。TCP链路只是逻辑链路,没有建立物理链路。IP数据包在下面运行。这个包走这条路,那个包可能走另一条路,这和UDP没什么区别。原因继续失败。

4.MSN服务器在国外吗?

有一定道理,但是听一个美国朋友说他也喜欢用QQ发文件。

这到底是怎么回事?是因为微软没有做好吗?(题外话,个人真的觉得MSN比QQ的快速进步要慢。)QQ的粉丝摩拳擦掌,有些不那么喜欢M了。

1.当两个文件传输客户端都在NAT之后(你不知道NAT是什么意思?比如很多人共用一只猫通过路由器上网,所以你一般在NAT后面)。从技术实现的角度来看,这种情况下TCP穿越NAT要比UDP麻烦得多。UDP只要启动几个穿越NAT的协商包,服务器就需要调头,后面的文件数据就可以直接在两个客户端之间传输,但一般TCP只能通过服务器传输。你认为哪一个会更快?TCP为什么需要服务器中转?我们先来看看NAT。听说有专家可以用生袜子做。反正没有中间服务器我是做不到的。

2.但即使上述条件不成立,msn一般也比QQ慢。问题还是在于上面提到的验证数据的可靠性。TCP可靠,UDP不可靠。但使用UDP传输文件时,必须在应用层写一个验证协议,否则传输的文件会被用户骂死。说是协议也不难。例如:

很久很久以前,贾宝玉在北京,林黛玉在长沙。他们怎么能告诉对方他们在谈论什么?派个信使来!路很长。你怎么知道信收到了没有?打电话问问?当时发明这个的时候不用寄信,只看有没有人带回信。如果你发现一个仆人一个月没有回来,他们大多数人都会在交通堵塞中迷路,遇到山贼或者流浪到扬州去玩。再派一个人去送他!TCP就是这么做的,UDP一般在应用层协议中也需要这么做,只是有时候实现上有区别。

北京和长沙之间的路不是只有一个人跑,经常发生拥堵。如果发现TCP版的贾宝玉长时间不回,再发一个信使固然重要,但他会更清楚,会少写几封信,减慢发送速度。最初,他一天写一封信,但现在他可能一周写一封。他认为如果每个人都这样做,道路就不会那么拥挤。这是非常合理的。如果堵车,大家都想见面,堵车只能越来越严重。最后大家都动不了,还不如慢慢排队。而如果UDP版的贾宝玉这么集体主义,那他就叫TCP友好流,如果只是拼命挤自己,那就不是TCP友好流。

如果发现拥塞,所有TCP协议实现都会立即降低其传输速度。如果基于UDP的协议不这么做,原来拥塞的IP包和重传的包只会让网络越来越拥塞。最后,所有坚持集体主义的TCP流都会做出牺牲,把带宽让给一些对TCP不友好的UDP流。所以除非网络条件非常好,否则TCP无法和非TCP友好的协议竞争。

我怀疑(只是怀疑,我没有条件和时间去验证)QQ的文件传输机制并不是那么TCP友好,抢带宽更“我能”。虽然这对于整个网络负载来说不是一件好事,但是对于单个用户来说就是见仁见智的事情了,就像大家看多线程下载或者p2p一样。

http://blog.joycode.com/peon/archive/2007/07/21/106355.aspx

以上内容来自互联网,不代表本站全部观点!欢迎关注我们:zhujipindao。com

未经允许不得转载:主机频道 » 浅谈MSN和QQ文件的传输速度

评论 抢沙发

评论前必须登录!