eMule协议规范 附录 A - 消息编码 一般消息编码要点
来源:互联网 发布:java 和maven环境变量 编辑:程序博客网 时间:2024/05/04 15:07
译自 Yoram Kulbak and Danny Bickson 《The eMule Protocol Specification》
翻译:lzcx
QQ:402722857
EMail: lzcx_cn@yahoo.com.cn
供学习用,转载请注明出处
6.1 一般消息编码要点
本章描述了在TCP/UDP有效负载中消息编码的一般方法。
6.1.1 字节序
所有消息都是用 little-endian 编码,而不是 big-endian, big-endian 是约定的网络字节序。这个很容易解释,事实上客户端/服务器都是基于微软窗口的应用程式,运行在Intel处理器上。
6.1.2 消息头
所有的消息有一个6字节的头,头有着下面的结构:
1. 协议 - 一个字节,协议ID - 0xE3是eDonkey,0xC5是eMule
2. 大小 - 4字节消息大小 - 消息大小,以字节为单位,不包含头,例如,如果消息不包含任何有效负载,如6.4.11节中,则消息长度是零。
3. 类型 - 一个字节,类型 - 独一无二的消息ID
6.1.3 消息标签
标签类似TLV(类型,长度,值)结构,用来增加可选的数据到eMule消息中。有几种类型的标签,本章中列出了所有的标签。当提及到协议消息里特定的标签时,只有标签类型是指定的,读者应该把本章作为一个参考来确定协议消息的准确的结构。每个标签拥有4个域,在消息中它们并不都是连续的:
1.类型 - 1字节整型
2.名称 - 可以是以下之一
l 可变长度字符串
l 1字节整型
3.值 - 可以是以下之一
l 4字节整型
l 4字节浮点数
l 可变长度字符串
4.专用的 - 1字节整型,专用的标签指定者
带有整型值的标签叫做整型标签,类似的我们有字符串标签和浮点数标签。字符串标签的类型值是2,整型标签的类型值是3和浮点数标签的类型值是4。当标签被编码来发送时,是按照上面的次序编码,例如,类型,然后名称,最后是值。类型被编码成一个字节。名称被编码成2个字节长度值,可以是字符串名称和整型名称。例如,整型名称0x15编码顺序是0x01 0x00 0x15。
固定的值域(好像整型和浮点数字)正如它们这样写入,字符串值就以相同的长度值方式编码。
注意:标签给出的名称是没有特定的协议意义的,只是易于在以后的协议消息描述中引用。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=621564
- eMule协议规范 附录 A - 消息编码 一般消息编码要点
- eMule协议规范 附录 A - 消息编码 客户端服务器UDP消息
- eMule协议规范 附录 A - 消息编码 客户端服务器TCP消息
- 消息编码
- 再谈Http协议中消息的编码
- Http协议中消息的编码
- Http协议中消息的编码
- Http协议中消息的编码
- 前端编码规范-一般规范
- 消息编码之Base64
- ASCII码 附录 A. 字符编码
- 关于HTTP消息的编码
- ICE的消息编码规则
- eMule协议规范 第一章 简介
- fix协议封装挑战-将一个消息实体编码为协议字符串
- 使用以下映射将包含A-ZIS的字母的消息编码为数字:'A'
- 如何更改SOAP消息的编码
- <c#>windows 消息 16进制编码
- 标准输入输出函数%[]和%n说明符的使用方法
- 常用的ASP.net代码
- eMule协议专题
- eMule协议规范 附录 A - 消息编码 客户端服务器UDP消息
- eMule协议规范 附录 A - 消息编码 客户端服务器TCP消息
- eMule协议规范 附录 A - 消息编码 一般消息编码要点
- eMule协议规范 第五章 客户端到客户端的UDP连接
- fread()和fwrite()函数分析
- eMule协议规范 第四章 客户端到客户端的TCP交流
- eMule协议规范 第三章 客户端服务器的UDP交流
- grep搜索子目录中包含某字符串的特定文件
- 2008年10月12号
- 如此求婚和如此离婚
- eMule协议规范 第二章 客户端服务器的TCP交流