« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
| 公告 |
我是沙漠中细沙一砾, 你们是我身旁盛开的灿烂的仙人掌花, 点缀着我孤寂的生活! |
Blog信息 |
blog名称: 日志总数:30 评论数量:76 留言数量:-2 访问次数:163186 建立时间:2004年12月30日 |

| |
QQ协议体系概述  其他
godknows 发表于 2005/6/4 0:01:30 |
LumaQQ 跬步文档
QQ协议体系概述
Luma, 清华大学更新时间: 2005-04-04
QQ的协议非常庞大,这些做一些概述,要注意,不要认为下面的说法一定是对的,只能说目前看起来好像是这样:
加密解密
QQ的加密解密用的是TEA算法(puzzlebird的说法),不详细解释了。QQ的包一般都是加密的(包头包尾除外),但是有个别包是不加密的,以后如果不做特别说明,则默认这个包是需要加密的。此外,用什么密钥加密也有不同,不过基本上都是用会话密钥加密,以后如果不做特殊说明,表示是用会话密钥加密。这里要注意一下,有时候你收到的包可能不是用会话密钥加密的,比如离线的消息。你人都不在了,哪里来的会话密钥?所以服务器在你下次登录的时候,会把你还没收到过的消息用密码密钥加密再传给你。这是一种特殊的情况,要分清楚。
UDP和TCP
QQ支持UDP和TCP登录(如果使用HTTP代理,则相当于TCP登录),UDP登录没有什么好说的,TCP登录时,不管什么包的开头两字节都是包长度,这个长度包括了这两个字节。
包头包尾
QQ协议有多种包头,每种包头都分别代表了一类用途的包,但是不是所有的包都有包尾,以下是一些存在的包头包尾格式参考
包头
包尾
包头之后的固定格式
说明
0x00
无
发送方QQ版本,或者是服务器版本,2字节
随机密钥,1字节,如果这个字节是0x23,那么密钥就是0x23232323,这个密钥用来加密发送者和接受者的QQ号。加密算法: QQ号取反再与密钥异或
发送者QQ号的加密形式,4字节
接受者QQ号的加密形式,4字节
0x00系列的包,用在文件传输过程中,传递控制信息。也会出现在点对点通信中。
0x02
0x03
源标志, 2字节,表示了这个包从何处来,主要用来标识客户端版本,如果其标识的是服务器,这个字段的具体用处还不清楚
包命令, 2字节
包序号, 2字节, 原则是保证短期内这个序号不要重复就可以,一般我们处理的时候都是递增,到最大再归0
0x02系列包主要完成一些基本任务,基本上处理了这个系列的包,QQ的功能就差不多了。
0x03
无
格式同第一行
0x03系列的包,用在文件传输过程中,传递数据信息
0x04
0x03
客户端版本号,2字节
整个的包长,2字节
序号,2字节
我的QQ号,4字节
未知的8字节
0x04系列的包,用在文件传输过程中,如果使用服务器中转模式传送文件,则用到这些包
0x06
未知
未知
还没怎么研究过这种包是干什么的
LumaQQ is a Java QQ client which has a reusable pure Java core and SWT-based GUI |
|
回复:QQ协议体系概述 其他
starshift(游客)发表评论于2006/7/22 17:18:08 |
|
回复:QQ协议体系概述 其他
求败(游客)发表评论于2006/1/30 5:11:21 |
有没有详细的资料发到我邮箱gl474c@qq.com
里面啊....
有兴趣和大家一起研究出一个通用的,跨平台,世界的聊天平台!!! |
|
回复:QQ协议体系概述 其他
pythonissa(游客)发表评论于2005/6/20 19:59:22 |
有一问请教:
QQ有通讯协议说只能在中国用吗??还有就是所谓的通讯语言编码不同,能说明国外不能用QQ吗?其实我知道中文系统的机子就可以正常使用QQ,问题的关键是要正常使用QQ究竟该具备那些条件?!关乎到什么协议吗? |
|
» 1 »
|