当前位置:   article > 正文

关于QQ使用协议的那点事_qq用的http协议吗?

qq用的http协议吗?

关于QQ使用的协议

事实上,QQ使用的协议包含了 UDP、TCP、HTTP这三种。

  • 登录: 客户端client采用 TCP协议 向服务器 server 发送信息,使用HTTP协议下载信息。登录之后,会有一个 TCP连接来保持这种在线状态。
  • 和好友发消息: 客户端client 采用 UDP 状态,但是需要通过服务器来转发。腾讯为了保证传输消息的可靠,一般采用上层协议来保证可靠传输。如果消息传输失败,客户端会提示消息发送失败,并可以重新发送。
  • 内网传输: 如果是两个处于内网的客户端进行传文件的时候,QQ是采用P2P技术进行传输,不需要进行服务器中转。

为什么QQ以 UDP为主,以TCP 为辅?

用 UDP的原因:

  • 节省创业成本 。UDP 比 TCP开销小P2P,不用使用服务器进行中转,大大节省中央服务器的开销。
  • 灵活。 TCP就是在 UDP基础上实现的一套用起来更简单的协议,用更底层的方式可以构建更高效更灵活并符合自己使用的协议。离开局域网后,UDP丢包概率大,收到包的次序 可能都是乱序的,包括对方可能还没有网络,这些都需要自己去维护,而TCP都是TCP协议帮程序员维护好的,只要一断线,就收到通知了。
  • UDP打洞 能更容易在不同品牌型号下的路由情况下实现P2P,无论是聊天文本,语音视频、文件收发都可以实现,对upnp等的支持,路由器都没有统一,但UDP打洞来实现P2P基本上都没有问题。

当发生网络抖动,网络极差时,TCP和UDP各自特点?

当网络极差、TCP的优势反而会成为劣势——
因为网络抖动的原因,应用层心跳超时(一般不依靠keepalive)应用层主动断掉socket之后TCP需要三次握手,才能够重新建立连接,一旦出现频繁的小抖动,就会使得带宽利用率降低。而等待四次挥手的时间,也会占用服务器上宝贵的资源。

UDP的优势是带宽的利用——
使用UDP对抗网络抖动,就是在应用层比TCP更快的探测和重传,一旦超过一定时间没有收到回复,客户端可以马上选择重试或者换一个IP:PORT重试(加入你的服务像QQ一样有多个接入),在服务端可果断的断掉的socket。

使用UDP实现一个面向连接的协议,这个协议可以很好的适应当前的网络环境和本身的业务。但凡事都有成本,成本就是你的应用层协议本身需要去实现抵抗网络异常带来的问题。例如乱序、例如业务数据的分片和重组,例如网络状态探测。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/172895
推荐阅读
相关标签
  

闽ICP备14008679号