QQ通信原理及QQ是怎么穿透内网进行通信的.docxVIP

QQ通信原理及QQ是怎么穿透内网进行通信的.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
QQ 通信原理及 QQ 是怎么穿透内网进行通信的? 文章分类:互联网 QQ 是一个基于TCP/UDP 协议的通讯软件 发送消息的时候是UDP 打洞,登陆的时候使用HTTP~ 因为登陆服务器其实就是一个 HTTP 服务器,只不过不是常用的那些,那个服务器是腾讯自行开发的!!! 一、登录 QQ 客户端在局域网内,当你打开 QQ 登录到QQ 服务器时,通过外网,你的客户端与 QQ 服务器建立了一个长连接。你可以用 netstat -bn 看到此连接的状态是 establish 此时,在 QQ 服务器那面看到的连接的 IP 是你们局域网对外的 IP。举个例子: QQ 服务器 IP:1 服务端口: 80 你的机器在局域网中内部 IP: 9 你局域网出口 InternetIP: 49 你的客户端的请求将通过外网出去,如果防火墙没有禁止访问 Internet 上 80 端口服务,那么你的 QQ 客户端可以正常登录。你看到的连接是 (netstat -bn) 9:55579 1: 80 establish 这是一个假象。通过 QQ 服务器看到的连接是: 1:80 49: 31234 establish 这样,防火墙上的 31234 口对应的就是你机器的55579 口。(由于你是发起方,这个数是变化的。动态的) 当有信息给你时,QQ 服务器只需要发给防火墙的 55579 口即可。(这里防火墙作了地址翻译) 不管 UDP 还是TCP,最终登陆成功之后,QQ 都会有一个TCP 连接来保持在线状态。这个TCP 连接的远程端口一般是 80,采用 UDP 方式登陆的时候,端 口是 8000。因此,假如你所在的网络开放了 80 端口 (80 端口是最常用端口。。就是通常访问 Web 的端口,禁掉它的话,你的网络对你来说价值已经不大了),但没有屏蔽腾讯的服务器 IP,恭喜你,你是可以登陆成功 QQ 的。 二、聊天消息通信 采用 UDP 协议,通过服务器中转方式。大家都知道,UDP 协议是不可靠协议,它只管发送,不管对 方是否收到的,但它的传输很高效。但是,作为聊天 软件,怎么可以采用这样的不可靠方式来传输消息呢? 于是,腾讯采用了上层协议来保证可靠传输:如果客 户端使用 UDP 协议发出消息后,服务器收到该包, 需要使用 UDP 协议发回一个应答包。如此来保证消息可以无遗漏传输。之所以会发生在客户端明明看到 “消息发送失败”但对方又收到了这个消息的情况,就 是因为客户端发出的消息服务器已经收到并转发成功, 但客户端由于网络原因没有收到服务器的应答包引起 的。 因为用户一般都是在局域网内,地址都为私有 IP,腾讯 服务器是如何将信息转发到用户的? 首先先介绍一些基本概念: NAT(Network AddressTranslators),网络地址转换:网络地址转换是在 IP 地址日益缺乏的情况下产生的,它的主要目的就是为了能够地址重用。NAT 分为两大类,基本的 NAT 和 NAPT(Network Address/Port Translator)。 最开始 NAT 是运行在路由器上的一个功能模块。 最先提出的是基本的 NAT,它的产生基于如下事实:一个私有网络(域)中的节点中只有很少的节点需要与外网连接(呵呵,这是在上世纪 90 年代中期提出的)。那么这个子网中其实只有少数的节点需要全球唯一的 IP 地址,其他的节点的 IP 地址应该是可以重用的。 因此,基本的 NAT 实现的功能很简单,在子网内使用一个保留的 IP 子网段,这些 IP 对外是不可见的。子网内只有少数一些 IP 地址可以对应到真正全球唯一的 IP 地址。如果这些节点需要访问外部网络,那么基本 NAT 就负责将这个节点的子网内 IP 转化为一个全球唯一的 IP 然后发送出去。(基本的 NAT 会改变 IP 包中的原 IP 地址,但是不会改变IP 包中的端口) 关于基本的NAT 可以参看RFC 1631 另外一种 NAT 叫做 NAPT,从名称上我们也可以看得出,NAPT 不但会改变经过这个 NAT 设备的IP 数据报的 IP 地址,还会改变IP 数据报的TCP/UDP 端口。基本 NAT 的设备可能我们见的不多(呵呵,我没有见到过),NAPT 才是我们真正讨论的主角。看下图: Server S1 1:1235 | ^ Session 1 (A-S1) ^ | | 1:1235 | | v 1:62000 v | | NAT 1 | ^ Session 1 (A-S1) ^ | | 1:1235 | | v :1234 v | | Client A :1234 有一个私有网络 10.*.*.*,ClientA 是其中的一台计算机,这个网络的网关(一个 NAT 设备)的外网IP 是 1

文档评论(0)

hao187 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档