腾讯QQ、微信两应用是国内社交通信软件中当之无愧的“霸主”,其中的QQ是一个基于TCP/UDP
两个协议相结合的通讯软件。其中聊天首先采用UDP
打洞方式,其次考虑TCP
通信,当然,对于文件传输、表情包发送、QQ空间等是采用TCP
传输。
1.1、登录原理
曾经的老版QQ是可以自己选择登录方式的,也就是用户自己可以选TCP
或UDP
方式登录,如下:
但目前的新版QQ中,都是采用基于TCP
协议的HTTP
方式登录,即与我们本身做的登录原理大致相同,先通过调用后端接口获取令牌信息,然后认证.....,最后登录完成后,QQ会保持一条TCP
连接来维持在线状态。
1.2、通信原理
QQ的主要通信方式是基于UDP
打洞技术,通过服务器中转方式实现的信息传输,这听起来是不是很不可思议?QQ作为“顶级”的聊天软件,怎么可以采用这样的不可靠方式来传输消息呢?
这里面牵扯到很多原因,有历史原因,也综合考虑了服务器负载、网络复杂度、服务器数量/网络带宽成本问题、实现难度等多方面因素导致的。
由于UDP
传输不可靠,因此腾讯采用了上层协议来保证可靠传输:如果客户端使用