qq工作原理

来源:互联网 发布:宫刑太可怕了 知乎 编辑:程序博客网 时间:2024/04/29 19:54

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端口,如
果有消息的话,会随机的选用一个和客户端连接!

原创粉丝点击