Size: 927
Comment: 开了个头
|
Size: 4502
Comment: 通用报文定义完成。
|
Deletions are marked like this. | Additions are marked like this. |
Line 6: | Line 6: |
-- 218.106.172.243 [[[DateTime(2004-08-10T22:23:57Z)]]] | -- HD [[[DateTime(2004-08-10T22:23:57Z)]]] |
Line 25: | Line 25: |
短连接有以下特点: 1. 由Client发起连接和请求报文 1. 按需连接 1. 每次连接的请求报文是按顺序发送,得到回复报文后再发送下一条报文 1. 报文发送完成后就会断开TCP连接 = 报文定义 = == 报文格式定义 == 所有的报文包括两部分: ||字段||说明|| ||Message Header||报头|| ||Message Body||报体|| 每条报文的报头长度和字段定义完全相同,而报体依据所发送的报文不同而自定义。所有报文的定义请见报头定义一节,报体的定义可见报体定义一节,具体的报文ID定义请见报文ID定义一节。 == 数据格式定义 == 在报文中只会使用到两种数据格式: ||数据类型||数据说明|| ||uint||无符号整型(unsigned int)|| ||int||整数,可为正整数、负整数或零|| ||string||定长字符串,位数不足时,如果左补0则补ASCII表示的零,如果右补0则补二进制的零|| int和unit长度为4个字节,string是由n个长度为8位的char组成。 == 报头定义 == 由于系统的报文发送方式为短连接,所以报头只需要定义以下字段: || 字段名 || 数据类型 || 长度(字节) || 字段说明 || || size || uint || 4 || 报文长度 || || msgid || unit || 4 || 报文ID || size定义了报文全部的长度,msgid定义了报文的ID,msgid的内容必须已经在报文ID定义中说明的数值。 == 报文ID定义 == 报文ID定义说明了OpenGNS所支持的请求和回复报文的名称、编码、说明。 在定义中遵循了以下规则: * 请求报文以第一位均为0 * 对应请求报文的回复报文高位均为一个f,其它与请求报文相同 === 通用报文 === 通用报文是指无论客户机和服务器在任何情况下都会使用到的报文。 || 报文ID名称 || 编码 || 说明 || || GNS_CONNECT || 0x00000001 || 连接请求 || || GNS_CONNECT_RESP || 0xf0000001 || 连接请求回复 || || GNS_DISCONNECT || 0x00000002 || 断开连接请求 || || GNS_DISCONNECT_RESP || 0xf0000002 || 断开连接请求回复 || || 报文ID名称 || 编码 || 说明 || || GNS_RESERVICE || 0x00000003 || 注册服务 || || GNS_GETAPPLICATION || 0x00000004 || 得到应用的可用服务清单 || == 报体定义 == === 通用报文 === ==== 请求连接到服务器(GNS_CONNECT) ==== GNS_CONNECT用于让客户机在连接完成后向服务器进行认证连接的操作,在注册认证能过后即在客户机和服务器间建立了应用层的连接,就可以进行进一步的报文请求操作。服务器端会向客户机回复GNS_CONNECT_RESP响应请求。 ===== GNS_CONNECT定义(C->S) ===== ||字段名||字节数||数据类型||描述|| ||clientid||6||string||客户端id|| ||authcode||16||string||验证码,由md5(clientid+password+timestamp)生成|| ||version||4||uint||版本|| ||timestamp||4||uint||时间戳的明文,由客户端产生。|| ===== GNS_CONNECT_RESP定义(S->C) ===== ||字段名||字节数||数据类型||描述|| ||status||4||uint||状态 0:正确 1:命令结构错 2:非法客户端标识 3:认证错 4:版本太高 5~ :其他错误|| ||version||4||uint||服务器支持的最高版本号|| ==== 断开连接请求(GNS_DISCONNECT) ==== GNS_DISCONNECT用于客户机和服务器拆除应用层的连接,拆除连接后对方会在回复报文后断开TCP的连接。 ===== GNS_DISCONNECT定义(C<->S) ===== 无报文体。 ===== GNS_DISCONNECT_RESP定义(C<->S) ===== 无报文体。 |
含有章节索引的中文 文章模板
-- HD [DateTime(2004-08-10T22:23:57Z)] TableOfContents
OpenGNS协议规范
Version 1.0alpha
OpenGNS协议规范用以规定OpenGNS Client与OpenGNS Server、OpenGNS Server与OpenGNS Server之间沟通的信息内容、格式以及详细的说明。
连接方式
OpenGNS的通信是基于TCP连接进行会话,会话方式为短连接。一个TCP短连接的会话通常会有以下几个步骤:
- Client向Server发起TCP连接
- Client向Server发送认证请求报文
- Server向Client回头认证回复报文
- 如认证不通过Server断开连接
- 如认证通过Client向Server发送指定报文
- Server向Client发送报文回复
- Client向Server发送断开连接请求报文
- Server向Client发送断开连接回复报文
- Server断开该连接
- Client断开该连接
短连接有以下特点:
- 由Client发起连接和请求报文
- 按需连接
- 每次连接的请求报文是按顺序发送,得到回复报文后再发送下一条报文
- 报文发送完成后就会断开TCP连接
报文定义
报文格式定义
所有的报文包括两部分:
字段 |
说明 |
Message Header |
报头 |
Message Body |
报体 |
每条报文的报头长度和字段定义完全相同,而报体依据所发送的报文不同而自定义。所有报文的定义请见报头定义一节,报体的定义可见报体定义一节,具体的报文ID定义请见报文ID定义一节。
数据格式定义
在报文中只会使用到两种数据格式:
数据类型 |
数据说明 |
uint |
无符号整型(unsigned int) |
int |
整数,可为正整数、负整数或零 |
string |
定长字符串,位数不足时,如果左补0则补ASCII表示的零,如果右补0则补二进制的零 |
int和unit长度为4个字节,string是由n个长度为8位的char组成。
报头定义
由于系统的报文发送方式为短连接,所以报头只需要定义以下字段:
字段名 |
数据类型 |
长度(字节) |
字段说明 |
size |
uint |
4 |
报文长度 |
msgid |
unit |
4 |
报文ID |
size定义了报文全部的长度,msgid定义了报文的ID,msgid的内容必须已经在报文ID定义中说明的数值。
报文ID定义
报文ID定义说明了OpenGNS所支持的请求和回复报文的名称、编码、说明。 在定义中遵循了以下规则:
- 请求报文以第一位均为0
- 对应请求报文的回复报文高位均为一个f,其它与请求报文相同
通用报文
通用报文是指无论客户机和服务器在任何情况下都会使用到的报文。
报文ID名称 |
编码 |
说明 |
GNS_CONNECT |
0x00000001 |
连接请求 |
GNS_CONNECT_RESP |
0xf0000001 |
连接请求回复 |
GNS_DISCONNECT |
0x00000002 |
断开连接请求 |
GNS_DISCONNECT_RESP |
0xf0000002 |
断开连接请求回复 |
报文ID名称 |
编码 |
说明 |
GNS_RESERVICE |
0x00000003 |
注册服务 |
GNS_GETAPPLICATION |
0x00000004 |
得到应用的可用服务清单 |
报体定义
通用报文
请求连接到服务器(GNS_CONNECT)
GNS_CONNECT用于让客户机在连接完成后向服务器进行认证连接的操作,在注册认证能过后即在客户机和服务器间建立了应用层的连接,就可以进行进一步的报文请求操作。服务器端会向客户机回复GNS_CONNECT_RESP响应请求。
GNS_CONNECT定义(C->S)
字段名 |
字节数 |
数据类型 |
描述 |
clientid |
6 |
string |
客户端id |
authcode |
16 |
string |
验证码,由md5(clientid+password+timestamp)生成 |
version |
4 |
uint |
版本 |
timestamp |
4 |
uint |
时间戳的明文,由客户端产生。 |
GNS_CONNECT_RESP定义(S->C)
字段名 |
字节数 |
数据类型 |
描述 |
status |
4 |
uint |
状态 0:正确 1:命令结构错 2:非法客户端标识 3:认证错 4:版本太高 5~ :其他错误 |
version |
4 |
uint |
服务器支持的最高版本号 |
断开连接请求(GNS_DISCONNECT)
GNS_DISCONNECT用于客户机和服务器拆除应用层的连接,拆除连接后对方会在回复报文后断开TCP的连接。
GNS_DISCONNECT定义(C<->S)
无报文体。
GNS_DISCONNECT_RESP定义(C<->S)
无报文体。