答:QQ既有UDP也有TCP
不管UDP还是TCP,最终登陆成功之后,QQ都会有一个TCP连接来保持在线状态这个TCP连接的远程端口一般是80,采用UDP方式登陆的时候,端口是8000UDP协议是无连接方式的协议,它的效率高,速度快,占资源少,但是其传输机制为不可靠传送,必须依靠辅助的算法来完成传输控制QQ采用的通信协议以UDP为主,辅以TCP协议由于QQ的服务器设计容量是海量级的应用,一台服务器要同时容纳十几万的并发连接,因此服务器端只有采用UDP协议与客户端进行通讯才能保证这种超大规模的服务QQ客户端之间的消息传送也采用了UDP模式,因为国内的网络环境非常复杂,而且很多用户采用的方式是通过代理服务器共享一条线路上网的方式,在这些复杂的情况下,客户端之间能彼此建立起来TCP连接的概率较小,严重影响传送信息的效率而UDP包能够穿透大部分的代理服务器,因此QQ选择了UDP作为客户之间的主要通信协议采用UDP协议,通过服务器中转方式因此,现在的IP侦探在你仅仅跟对方发送聊天消息的时候是无法获取到IP的大家都知道,UDP 协议是不可靠协议,它只管发送,不管对方是否收到的,但它的传输很高效但是,作为聊天软件,怎么可以采用这样的不可靠方式来传输消息呢?于是,腾讯采用了上层协议来保证可靠传输:如果客户端使用UDP协议发出消息后,服务器收到该包,需要使用UDP协议发回一个应答包如此来保证消息可以无遗漏传输之所以会发生在客户端明明看到“消息发送失败”但对方又收到了这个消息的情况,就是因为客户端发出的消息服务器已经收到并转发成功,但客户端由于网络原因没有收到服务器的应答包引起的
(图片来源网络,侵删)
0 评论