发布时间:2014-09-30 17:00:13作者:知识屋
发现很多情况下,MSN传输文件比QQ要慢,倒不是说MSN没有快的时候,但是大部分的时候是真的比QQ慢,连我这种神经比较大条的人都注意到了, Google了一下,早就有人做了解答,基本上就是说MSN传输
文件是使用TCP,而QQ使用UDP,剩下的事情就是论证TCP传输文件没有UDP快.大概的就是下面的几个观点:
1. TCP是可靠的,需要验证数据是否到达和是否正确,而UDP是不可靠的,少做了很多事情,所以MSN的文件传输比QQ慢.
我看了当时就想笑,也用了QQ不少时日了,从来也没有发现传输文件有问题的,用UDP作协议也很久了,不做应用层验证重传的代码,我还真不敢写.这个理由,失败.
2. TCP建立连接需要3次握手,而UDP不需要,所以TCP慢.
三次握手这个事实倒是千真万确,还好我没有那么容易被忽悠,两个人谈话之前要握握手的确要稍微费上几秒钟,但是这个关谈话的语速啥事情?假如网络的 ping值达到300ms,各位看官喜欢网络游戏的,估计都不会玩了,否则垂死的boss会高兴的发现你忽然变成了木偶可以随便殴打不还手,最后你只能骂骂电信网通然后复活几分钟后又是一条好汉.但是对于TCP,这样的ping值,三次握手一般都不需要1秒钟,把这个定为文件慢慢传的罪魁祸首,似乎太不靠谱了,这个理由还是失败.
3. TCP一旦建立链接,路由就确定了,而UDP是不确定的路由方式,谁速度快走谁的线路.
这样说就说明没有作者好好理解TCP/IP协议了,TCP的链路只是一个逻辑的,又没有建立物理链路,下面跑的还是IP包,这个包走这条路,那个包完全可能走另外的路,这点TCP和UDP没有两样.理由继续失败.
4. msn服务器在国外?
有些道理,但是我听一个美国的朋友说他也喜欢用QQ传文件的.
那到底是怎么回事呢?是因为微软没有做好?(题外话,个人的确觉得MSN相比QQ的飞速进步而显得动作迟缓)QQ的Fans开始摩拳擦掌,一些不那么喜欢 M$的估计就要开始丢板砖了.不管立场如何,事实还是要探寻一下,本着不求甚解,薄积薄发,浅入浅出的精神,我认为有几个可能原因:
1. 两个传文件客户端都在NAT后面的时候 (你不知道NAT啥意思?比如多个人通过路由器共享一个猫上网,那么你们一般就是在NAT后面了),从技术实现上讲,TCP在这种情况下穿越NAT比 UDP麻烦得多.UDP只要开始几个穿越NAT的协商包需要服务器转一下,后面的文件数据可以两个客户端之间直接传输搞定,但是一般TCP就只能全程由服务器中转了,你说哪一个会比较快? 为什么TCP需要服务器中转?先看看NAT吧,听说有高人可以用raw sock搞定,反正我没有中间服务器搞不定.
2. 但是即使上面的条件不成立,msn还是一般比QQ慢的.问题还是在出在前面提到的验证数据可靠性上面,TCP是可靠的,UDP是不可靠的,但是用UDP做传输文件这档子事情,肯定要在应用层写一个验证的协议,否则传过来的文件缺胳膊少腿,会被用户骂死的.说是协议,其实也不难,打个比方吧:
long long ago,贾宝玉在北京,林黛玉在长沙,怎么互诉衷肠呢,派家丁送信!路途遥远,怎么知道信收到没有?打电话问?那时候发明了这个就不用送信了,只能看家丁是否带了回信来了.假如发现一个家丁一个月还没有回,那就多半迷路堵车遭遇山贼或者开小差到扬州花差快活去了,再派一个人送吧! TCP就是这么做的,UDP在应用层协议一般也需要这么做,但是实现上有时候往往有区别.
北京到长沙之间的路,并不是只有一个人跑的,常常很拥堵,假如发现家丁好久没有回了,TCP版的贾宝玉再派人送信是要的,但是他会比较识大体,他会少写信,降低发送速度,原来一天一封,现在可能一周一封了.他想,大家假如都这样,路就不会那么拥挤了.这做法很有道理,假如塞车了大家都想见缝插针,只能越来越塞,最后大家都动不了,还不如彼此容让慢慢排队.而UDP版本的贾宝玉假如也这么集体主义,那么他就叫做TCP友好流,就假如它只管自己拼命挤,就是非TCP友好的.
所有的TCP协议假如发现拥塞,都会马上降低自己的发送速度.假如基于UDP的协议不这么做的话,原来拥塞的IP包加上重发的包,网路只会越来越拥塞,最后所有的坚持集体主义的TCP流都会做出牺牲,把带宽让给一些非TCP友好的UDP流.所以除非网络状况非常好,否则TCP是拼不过非TCP友好的协议的.
我怀疑(仅仅是怀疑而已,我也没有条件和时间验证),QQ的文件传输机制是不那么TCP友好的,它抢带宽更加"我能",这样虽然对于整个网络负荷不是什么好事,但是对于单个用户,就见仁见智了,就好像大家看待多线程下载或者p2p一样.
电脑中accelerate是什么文件夹介绍 accelerate文件夹怎么删除方法技巧
电脑中的插件太多如何清理方法步骤 如何对电脑插件进行管理技巧
如何阻止恶意软件在电脑上自动安装 怎么删除恶意强制安装的流氓软件
电脑运行程序时提示无法找到组件怎么办 电脑经常出现无法找到组件修复方法
电脑如何远程控制软件创建局域网 win7电脑局域网远程设置方法技巧
电脑突然出现中文乱码了怎么办 Win7系统中文显示乱码的修复方法
电脑显示默认网关不可用怎么办 win10总是默认网关不可用频繁掉线解决方法
电脑怎么使用虚拟打印机方法步骤 怎么查看并安装虚拟打印机设备教程
电脑频繁出现卡顿的现象怎么解决 电脑使用不流畅经常出现卡顿的情况
电脑桌面倒过来怎么调回去方法 笔记本电脑屏幕倒立怎么恢复教程
2012-06-08
9位数QQ怎么注册?注册QQ9位数的方法!2015最新注册靓号方法
教你看别人的QQ密码,但是不准偷QQ哦
腾讯QQ2012总是提示软件完整性遭到破坏,无法继续使用的解决方法
qq号码怎么免费申请 免费申请2014qq号码的三种方法步骤
QQ空间非绿钻添加背景音乐!QQ空间免费添加背景音乐教程!
手机QQ名片怎么刷赞
微信聊天记录上传备份与恢复教程
QQ查找好友如何查找可能认识的人
群匿名聊天怎么换主题?QQ匿名聊天主题更换方法(图文)