为啥 MSN 会经常丢消息而且无任何提示,QQ 使用 UDP 连接却不会丢消息

UDP协议本身不提供可靠传输,比如没有流量控制、拥塞控制机制等,但是网络通信不一定要靠传输层实现,也可以通过应用的层协议实现。比如可以让QQ应用层使用的OICQ协议来提供可靠通信。
■网友
首先要说明的是: 虽然UDP本身是不可靠传输,但这并不代表不能基于UDP构造可靠的上层协议。 要知道能够提供可靠传输的TCP协议不也是建立在不可靠的IP层上么。 通过最简单的重传确认即可达到QQ现在做到的效果,简单说就是发送方一直发送数据,直到收到接收方的反馈再停止即可。 这只是一种猜想,实际实现应该会比这个复杂,但基本原理应该不会变太多。 可以参考一下TCP实现可靠传输的方法。 另外以“UDP 可靠传输”为关键词也可以搜索到很多相关的知识,就不再赘述了。 至于MSN丢消息的问题,个人认为可能是由于和服务器沟通不畅导致,至少我个人最近一阵子在电信宽带、联通3G,移动2G的多种网络条件下均无法较顺利的登录上MSN。 附:ARQ自动重传请求协议: http://zh.wikipedia.org/wiki/ARQ
■网友
QQ的重发机制是6次重发,如果1次发送成功的概率是99%的话,也就是失败概率是1%的情况下,经过6次重发,失败率是在1-0.01^6,这种概率在日常的使用中是极少能遇到的(理想情况下,ISP出问题则无法避免失败)
■网友
“三次握手”什么的?一条信息发过去等待对方返回来一个表示收到的信号,等不到就再发一条唔。。表示我不是很了解
■网友
QQ我已经碰到了


    推荐阅读