含有章节索引的中文 文章模板
-- 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连接
报文定义
报文格式定义
所有的报文包括两部分:
- 报头
- 报体
每条报文的报头长度和字段定义完全相同,而报体依据所发送的报文不同而自定义。所有报文的定义请见报头定义一节,报体的定义可见报体定义一节,具体的报文ID定义请见报文ID定义一节。
数据格式定义
在报文中只会使用到两种数据格式:
数据类型 |
数据长度(字节) |
数据说明 |
uint |
4 |
无符号整型(unsigned int) |
string |
1*n |
字符串(String) |
报头定义
由于系统的报文发送方式为短连接,所以报头只需要定义以下字段:
字段名 |
数据类型 |
长度(字节) |
字段说明 |
size |
uint |
4 |
报文长度 |
msgid |
unit |
4 |
报文ID |
size定义了报文全部的长度,msgid定义了报文的ID,msgid的内容必须已经在报文ID定义中说明的数值。
报文ID定义
报文ID定义说明了OpenGNS所支持的请求和回复报文的名称、编码、说明:
报文ID名称 |
编码 |
说明 |
GNS_CONNECT |
0x00000001 |
连接请求 |
GNS_CONNECT_RESP |
0xf0000001 |
连接请求回复 |
GNS_DISCONNECT |
0x00000002 |
断开连接请求 |
GNS_DISCONNECT_RESP |
0xf0000002 |
断开连接请求回复 |
GNS_RESERVICE |
0x00000003 |
注册服务 |
GNS_GETAPPLICATION |
0x00000004 |
得到应用的可用服务清单 |
在定义中遵循了以下规则:
- 请求报文以第一位均为0
- 对应请求报文的回复报文高位均为一个f,其它与请求报文相同