QQ工作原理

QQ的工作原理是怎么样的?它是怎么样支持那么多用户同时登陆的?它的后台服务器是怎么设置的?是不是每个用户登陆的时候都要先登陆到服务器啊?那和某个好友聊天的时候是不是就换成点对点的了?怎么转换的?它用的是Socket技术吗?还有别的网络技术吗?它是怎么实现发送离线消息的?怎么实现群发消息的呢?  

回答:
1.聊天时候时候用的点到点,对方离线的时候才发给服务器。   
  当然,登陆的时候首先要向服务器注册其IP地址和端口信息

2.登陆时发送消息告诉server说你登陆而已,由server通知你的好友说你上线(如有必要)   
  其他的基本不用通过server,那么用户多少有什么关系   
  user<->user聊天都是自己建立连接的,除非建立不了还会又server中转,好友不在线也又server中转

3.QQ使用的是UDP+TCP,一般默认的是UDP-->无状态连接的,好友之间应该是P2P的,你用D7的IDUDPServer都能做的   QQ有集群服务器.   补充:在比较安全的局域网中一般使用无连接的UDP协议,在相对不安全的广域网中使用的是面向连接的TCP协议。

4.P2P连接: 
      (1.)用户登录服务器,服务得到用户的经过NAT的公网IP;如;211.10.5.32:3300(此端口号由网关产生,负责将外网数据发给内网的指定主机,即你所登录的位置),   
      (2.)用户得到好友的公网IP后(通过服务器得到),发送握手包,建立彼此方向的打洞包(随便发点数据就行,重要的是一个方向,如内网A发一个数据包给外网B,此时B才有可能发送数据给A,让A成功接收,否则A的网关会丢弃此包,了解???!!)   
      (3.)双方通信成功,   
      (4.)如果NAT的类型比较特殊会有:   内网A发数据到S,网关NAT时建立一个端口3300,若此时A再发数据到B,有的NAT会在此端口上加一个SESSION,端口不变,而有的NAT会新建立一个端口,此时P2P将失效,这是一个很值得讨论和解决的问题,因为我也正在遇到这个问题.
5.根据我用防火墙监测试的结果,QQ的连接过程如下:   
  在登录的时候,QQ会先和服务器建立一个Tcp/iP   连接,   
  然后会建立4个UDP服务器,监听4000,   6000,   6001,   1085端口,如   
  果有消息的话,会随机的选用一个和客户端连接!


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部