QQ通讯原理.docx_第1页
QQ通讯原理.docx_第2页
QQ通讯原理.docx_第3页
QQ通讯原理.docx_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

QQ通讯原理QQ上线会向这11个服务器发送UDP数据包,选择回复速度最快的一个作为连接服务器。 这6个服务器名字均以SZ开头,域后缀是,域名与IP对应为 sz sz2 : 45 46 56 sz3 sz4 sz6 sz7 : 51 54 52 53 sz5 : 03 66 21 5 24 64 2、TCP HTTP连接服务器4个 使用HTTP 80 和443端口连接 这4个服务器名字均以tcpconn开头,域后缀是,域名与IP对应为 tcpconn tcpconn3 3 tcpconn2 tcpconn4 53 27 71 3、会员VIP登陆服务器 使用HTTP 443安全连接 服务器IP 2 负载均衡+主机集群 QQ通信 用的P2P,当对方掉线,才会把数据发到腾讯保留;这样能减低服务器负担 QQ通信的消息 用密码 的MD5 进行Tea加密。TCP/IP协议中又分为TCP协议和UDP协议,TCP协议是面向连接的协议,它比较安全、稳定, 但是效率不高,占用资源较多。UDP协议是无连接方式的协议,它的效率高,速度快, 占资源少,但是其传输机制为不可靠传送,必须依靠辅助的算法来完成传输控制。 QQ采用的通信协议以UDP为主,辅以TCP协议。由于QQ的服务器设计容量是海量级的应用, 一台服务器要同时容纳十几万的并发连接,因此服务器端只有采用UDP协议与客户端进行 通讯才能保证这种超大规模的服务。 QQ客户端之间的消息传送也采用了UDP模式,这不同于国外的ICQ在客户端之间采用 TCP进行通讯的模式。因为国内的网络环境非常复杂,而且很多用户采用的方式是通过 代理服务器共享一条线路上网的方式,在这些复杂的情况下,客户端之间能彼此建立起来 TCP连接的概率较小,严重影响传送信息的效率。而UDP包能够穿透大部分的代理服务器, 因此我们在开发QQ的时候选择了UDP作为客户之间的主要通信协议,因此网友会觉得用 QQ传送信息要比ICQ及其它采用TCP协议的ICQ类软件快。当然,UDP协议优点突出,缺点 也很明显:UDP包的传送是不可靠的传输,它不象TCP一样有包重传等机制,因此采用UDP 协议的信息在传送过程中很容易丢失,这样就需要辅助的算法实现包重传机制以保证信息 不会丢失,而QQ服务器的负荷非常重,因此在QQ 99b 0425之前我们只是在客户端到客户端 之间传送消息时采用了这个辅助的机制,当消息在客户间直接传送无法到达时就需要通过 服务器来中转,由于服务器端在老版本的时候迫于负荷过重的压力没有对主动发往客户端 的信息进行传输控制,因此在老版本的时候容易造成通过服务器中转的信息丢失的现象。 在QQ99c 0725之后我们单独设立出了几台专用的服务器采用包重传机制来中转消息 (仅限于99c之间传递的消息),确保通过服务器转发的消息也能够发送到对方的QQ。 从QQ0410开始我们将客户端到服务器之间的信息传送使用了128位的密钥进行了加密, 大大地提高了QQ的安全性,从0725版本以后QQ 我们对客户端到客户端的信息传送也 采用了同样的算法进行加密,这样就可以基本杜绝可能存在的信息炸弹、信息伪装、 信息截获等隐患。 特别需要说明的是我们的加密模式是完全按照公开源代码的方式来设计的,也 就是说即使破解者获得了全部的加密算法也依然无法对其他用户的安全构成威胁, 相信随着新版的不断推出,QQ将会变得越来越安全,广大QQ用户也可以更加放心地 使用我们的产品了。QQ通信原理概述一、登陆。 不管UDP还是TCP,最终登陆成功之后,QQ都会有一个TCP连接来保持在线状态。这个TCP连接的远程端口一般是80,采用UDP方式登陆的时候,端口是8000。因此,假如你所在的网络开放了80端口(80端口是最常用端口。就是通常访问Web的端口,禁掉它的话,你的网络对你来说价值已经不大了),但没有屏蔽腾讯的服务器IP,恭喜你,你是可以登陆成功QQ的。二、聊天消息通信。 采用UDP协议,通过服务器中转方式。因此,现在的IP侦探在你仅仅跟对方发送聊天消息的时候是无法获取到IP的。大家都知道,UDP 协议是不可靠协议,它只管发送,不管对方是否收到的,但它的传输很高效。但是,作为聊天软件,怎么可以采用这样的不可靠方式来传输消息呢?于是,腾讯采用了上层协议来保证可靠传输:如果客户端使用UDP协议发出消息后,服务器收到该包,需要使用UDP协议发回一个应答包。如此来保证消息可以无遗漏传输。之所以会发生在客户端明明看到“消息发送失败”但对方又收到了这个消息的情况,就是因为客户端发出的消息服务器已经收到并转发成功,但客户端由于网络原因没有收到服务器的应答包引起的。三、文件/自定义表情传送。 大家都知道,QQ可以传送文件,可以发送自定义表情。先说官方表情。官方表情实际发送的是命令字,而没有发送表情。客户端收到命令字后,会自动解释为对应的表情。因此,QQ2008正式版的客户端发出的新版表情,在2007beta4及以前的版本无法找到相对应的表情,就无法解释,看到的就会是空白信息,但查聊天记录就会有表情字样。 自定义表情的传送是以文件传输方式进行的。 下面说文件传输方式:A要向B发送一个文件,于是发出一个文件传送请求。服务器收到这个文件传送请求后,转发给B,同时或者在B应答后,将A的IP地址同时发送给B。B这个时候就得到了A的真实IP。这里的IP是你的本机IP。也就是说,如果A处在内网,B得到的地址就是一个内网地址。B得到了A的地址之后,就会尝试去连接A。如果B也处于内网,那么,显然A跟B之间的连接是无法建立的。这个时候,客户端就会请求服务器进行文件中转。因为服务器具有公网 IP,处在内网的A跟B都是可以连接到服务器的,于是,A跟B的文件传送就通过服务器中转的方式,顺利进行。(注:服务器文件中转使用443端口)* 注:什么是内网、公网 内网、公网是两种Internet的接入方式。 内网接入方式:上网的计算机得到的IP地址是Inetnet上的保留地址,保留地址有如下3种形式: 10.x.x.x 172.16.x.x至172.31.x.x 192.168.x.x 内网的计算机以NAT(网络地址转换)协议,通过一个公共的网关访问Internet。 内网的计算机可向Internet上的其他计算机发送连接请求,但Internet上其他的计算机无法向内网的计算机发送连接请求。 公网接入方式:上网的计算机得到的IP地址是Inetnet上的非保留地址。公网的计算机和Internet上的其他计算机可随意互相访问。 所以,如果一个局域网只开放80端口,QQ是可以登陆成功的,也可以进行聊天。但传送文件也是不可以的,除非你们都在同一个内网。如果局域网还同时开放443端口,那么,恭喜你,QQ的功能你都可以正常使用。QQ是不是TCP和UDP一起用?如果用UDP,如何做到信息的可靠发送? 答Q即可以使用TCP也可以使用UDP,但QQ默认是使用UDP协议,因为UDP协议消耗资源小,发送速度快,但当UDP协议不能正常转发的时候,就会采用TCP协议进行发送. 而信息的可靠发送是通过各种验证机制来完成的,这一点你可以去GOOGLE之类的网站去搜索下. QQ用的是UDP打洞技术还是HTTP遂道? 答:发送消息的时候是UDP打洞,登陆的时候使用HTTP因为登陆服务器其实就是一个HTTP服务器,只不过不是常用的那些,那个服务器是TX自行开发的因为用户一般都是在局域网内,地址都为私有IP,IM服务器是如何将信息转发到用户的? 答:如果使用TCP就没什么好说了由内网向外网连接,只要能够连接上进行握手了,消息就可以畅通无阻的进行发送了.如果使用UDP的话,就是使用的打洞技术了,只要通道打通了,发送消息基本和TCP没什么区别,要做的只是维护消息的完整性而已.QQ是一个基于TCP/UDP协议的通讯软件,而MSN是基于TCP协议的通讯软件。那么QQ是如何通讯的呢?在TCP/IP协议中,唯一标识一个应用进程的是socket,它通过网络层的IP地址和传输层的端口号来实现,对与同一个IP地址的内部网络,通过不同的端口号来标识不同的QQ进程;当你登陆QQ游戏服务器的时候,服务器会保留你的保留IP地址和端口号信息,并在你的好友的QQ进程中进行列表显示,然后两个进程就可以通信了。 通常,发送文件的计算机首先要通过消息服务器将其IP地址发送给接收计算机,当接收计算机同意接收的确认消息反馈到消息服务器后,消息服务器将据此设置好文件传输对话。随即,发送计算机与接收计算机就会在确定好的端口范围内,建立起TCP或UDP连接开始文件的检索与传输。 在默认状态下,QQ优先采用了UDP(User Data Protocol,用户数据报协议)协议传送数据,而对可靠性要求高的数据通讯系统往往使用TCP协议传输数据。与TCP协议不同,UDP协议并不提供数据传送的验证机制在整个文件传输过程中如果出现数据报的丢失,协议本身并不能作出任何的检测或提示。因此,通常人们把UDP协议称为不可靠的传输协议。 UDP协议适用于无须应答、要求时效的软件使用,这样的设计正好与QQ追求的目标相符,所以QQ优先使用了此协议进行一切功能应用。但是,由于UDP协议具有不可靠性,常会因种种原因导致消息或数据的发送失败(很多时候会发现发送文件给对方接收时,对方根本收不到要求接收文件的消息。或是发送聊天消息时,对方根本没有收

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论