Differences between revisions 5 and 6
Revision 5 as of 2004-08-12 01:06:28
Size: 4502
Editor: hd
Comment: 通用报文定义完成。
Revision 6 as of 2004-08-12 01:50:15
Size: 5613
Editor: hd
Comment: 又加一个报文定义
Deletions are marked like this. Additions are marked like this.
Line 69: Line 69:
|| 报文ID名称 || 编码 || 说明 ||
|| GNS_RESERVICE || 0x00000003 || 注册服务 ||
|| GNS_GETAPPLICATION || 0x00000004 || 得到应用的可用服务清单 ||
=== GNS服务标准操作 ===
||报文ID名称||编码||说明||
||GNS_RESERVICE||0x00000003||注册服务||
||GNS_RESERVICE_REP||0xf0000003||注册服务回复||
||GNS_DERESERVICE||0x00000004||注销服务||
||GNS_DERESERVICE_REP||0xf0000004||注销服务回复||
||GNS_GETAPPLICATION||0x00000005||得到应用的可用服务清单||
||GNS_GETAPPLICATION_REP||0xf0000005||得到应用的可用服务清单回复||
Line 94: Line 99:

=== GNS服务标准操作 ===
==== 注册服务(GNS_RESERVICE) ====
任何一个服务在启动时,都有义务向GNS服务器通知其在线工作。通过向GNS的通知,就使得应用系统中增加了一个服务。
===== GNS_RESERVICE定义(C->S) =====
||字段名||字节数||数据类型||描述||
||serviceid||6||string||服务ID||
||parasize||4||uint||参数长度||
||parameter||parasize||string||附加参数||
===== GNS_RESERVICE定义(C->S) =====
||字段名||字节数||数据类型||描述||
||status||4||uint||状态 0:更新成功 1:更新失败 2:命令结构错 3~ :其他错误||

==== 注销服务(GNS_DERESERVICE) ====
===== GNS_DERESERVICE定义 =====
||字段名||字节数||数据类型||描述||

===== GNS_DERESERVICE_RESP定义 =====
||字段名||字节数||数据类型||描述||

含有章节索引的中文 文章模板

-- HD [DateTime(2004-08-10T22:23:57Z)] TableOfContents

OpenGNS协议规范

Version 1.0alpha

OpenGNS协议规范用以规定OpenGNS Client与OpenGNS Server、OpenGNS Server与OpenGNS Server之间沟通的信息内容、格式以及详细的说明。

连接方式

OpenGNS的通信是基于TCP连接进行会话,会话方式为短连接。一个TCP短连接的会话通常会有以下几个步骤:

  1. Client向Server发起TCP连接
  2. Client向Server发送认证请求报文
  3. Server向Client回头认证回复报文
  4. 如认证不通过Server断开连接
  5. 如认证通过Client向Server发送指定报文
  6. Server向Client发送报文回复
  7. Client向Server发送断开连接请求报文
  8. Server向Client发送断开连接回复报文
  9. Server断开该连接
  10. Client断开该连接

短连接有以下特点:

  1. 由Client发起连接和请求报文
  2. 按需连接
  3. 每次连接的请求报文是按顺序发送,得到回复报文后再发送下一条报文
  4. 报文发送完成后就会断开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

断开连接请求回复

GNS服务标准操作

报文ID名称

编码

说明

GNS_RESERVICE

0x00000003

注册服务

GNS_RESERVICE_REP

0xf0000003

注册服务回复

GNS_DERESERVICE

0x00000004

注销服务

GNS_DERESERVICE_REP

0xf0000004

注销服务回复

GNS_GETAPPLICATION

0x00000005

得到应用的可用服务清单

GNS_GETAPPLICATION_REP

0xf0000005

得到应用的可用服务清单回复

报体定义

通用报文

请求连接到服务器(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)

无报文体。

GNS服务标准操作

注册服务(GNS_RESERVICE)

任何一个服务在启动时,都有义务向GNS服务器通知其在线工作。通过向GNS的通知,就使得应用系统中增加了一个服务。

GNS_RESERVICE定义(C->S)

字段名

字节数

数据类型

描述

serviceid

6

string

服务ID

parasize

4

uint

参数长度

parameter

parasize

string

附加参数

GNS_RESERVICE定义(C->S)

字段名

字节数

数据类型

描述

status

4

uint

状态 0:更新成功 1:更新失败 2:命令结构错 3~ :其他错误

注销服务(GNS_DERESERVICE)

GNS_DERESERVICE定义

字段名

字节数

数据类型

描述

GNS_DERESERVICE_RESP定义

字段名

字节数

数据类型

描述

PyUSS/OpenGNS/OpenGNS协议规范 (last edited 2009-12-25 07:15:41 by localhost)