Q Q 通信原理及Q Q 是怎么穿透内网进行通信的
文章分类:互联网 QQ 是一个基于TCP/UDP 协议的通讯软件 发送消息的时候是UDP 打洞,登陆的时候使用HTTP~因为登陆服务器其实就是一个HTTP 服务器,只不过不是常用的那些,那个服务器是腾讯自行开发的
一、登录 QQ 客户端在局域网内,当你打开QQ 登录到 QQ 服务器时,通过外网,你的客户端与 QQ 服务器建立了一个长连接
你可以用netstat -bn 看到此连接的状态是 establish 此时,在 QQ 服务器那面看到的连接的IP 是你们局域网对外的IP
举个例子: QQ 服务器 IP:121
81 服务端口:80 你的机器在局域网中内部IP: 10
89 你局域网出口InternetIP: 61
149 你的客户端的请求将通过外网出去,如果防火墙没有禁止访问Internet上80 端口服务,那么你的QQ 客户端可以正常登录
你看到的连接是 (netstat -bn) 10
89:55579 124
81:80 establish 这是一个假象
通过QQ 服务器看到的连接是: 124
81:80 61
149:31234 establish 这样,防火墙上的31234 口对应的就是你机器的55579 口
(由于你是发起方,这个数是变化的
动态的) 当有信息给你时,QQ 服务器只需要发给防火墙的55579 口即可
(这里防火墙作了地址翻译) 不管 UDP 还是 TCP,最终登陆成功之后,QQ 都会有一个 TCP 连接来保持在线状态
这个 TCP 连接的远程端口一般是 80,采用 UDP 方式登陆的时候,端口是8000
因此,假如你所在的网络开放了80 端口(80 端口是最常用端口
就是通常访问Web的端