My favorites | Sign in
Project Logo
                
Search
for
Updated Dec 18, 2007 by lixiaohong
Labels: Featured
Specification  
客户端与服务器端的通讯协议规范

前言

本规范定义了以下几方面的内容:

将来还会定义:

本协议当前版本号为 1*。

本协议涉及的端口号

端口号应用
51206客户机与服务器间的长连接
51205服务器与服务器间的长连接

通讯方式

本协议使用TCP长连接方式进行通讯。即在一个TCP连接中进行多个数据包的发送和接收。同时本协议使用二进制异步通讯方式进行数据转输,即每个消息不必等待回复就可以进行下一个消息的发送,消息的回复与发送的次序不一定相同。

TCP窗口

客户机与服务器的消息通讯窗口默认为 16 ,如果改变需要在服务器和客户端同时变更。

消息定义

基本数据类型

Unsigned Integer 无符号整数
Integer 整数,可为正整数、负整数或零
Octet String 定长字符串,位数不足时,如果左补0则补ASCII表示的零以填充,如果右补0则补二进制的零以表示字符串的结束符 。
String 不定长字符串

消息结构

条目 说明
Message Header 消息头(所有消息都会有的公共包头)
Message Body 消息体

消息头格式(Message Header)

字段名 字节数 类型 描述
Total_Length 2 unsigned integer 消息总长度(Head+Body-2),不包括Total_length本身
Command_Id 2 unsigned integer 命令或响应类型
Sequence_Id 2 unsigned integer 消息流水号,顺序累加,步长为1,循环使用(一对请求和应答消息的流水号必须相同)

客户端与服务器间的消息定义

客户端向服务器端发起连接请求,在通过身份验证之后方可进行数据传输。同时在一定时间里没有通信时发出持续激活请求,以避免TCP连接TimeOut中断。

请求连接(TABLE_BIND)操作

TABLE_BIND操作的目的是客户端向服务器注册作为一个合法登录者,若注册成功后即建立了应用层的连接,此后客户端可以向服务器端发出其它的请求。

服务器以TABLE_BIND_RESP响应客户端的请求。

TABLE_BIND 消息定义

字段名 字节数 属性 描述
User_Name 6 Octet String 客户端用以连接上来的用户名 。右补零。
Authentiator_Code 16 Octet String 用于鉴别用户身份的验证,它的值是由MD5 Hash计算出来的。通常计算方法为 Authentiator_Code=MD5(User_Name + shared secret + timestamp)。shared secret是双方协商好的密码,timestamp格式为MMDDHHMMSS,10位。
Version 2 Unsigned Integer 双方协商的版本号
Timestamp 10 Octet String 由客户间产生的格式为MMDDHHMMSS的时间戳明文。

TABLE_BIND_RESP 消息定义

字段名 字节数 属性 描述
Status 2 Unsigned Integer 状态。 0:正确 1:消息结构解析错 2:非法客户端或认证错 3:版本协商失败 4:其它错误
Version 2 Unsigned Integer 服务器支持的最高版本号

请求断开连接(TABLE_UNBIND)操作

TABLE_UNBIND操作的目的是客户断或服务器端由于某些原因决定断开当前的应用层连接而发起的操作。此操作完成后,客户端与服务器之间的应用层连接被释放,之后的客户端要向服务器通信,应发起TABLE_BIND操作。

服务器以TABLE_UNBIND_RESP响应客户端的请求。

TABLE_UNBIND 消息定义

无消息体。

TABLE_UNBIND_RESP 消息定义

无消息体。

请求保持连接(TABLE_ACTIVE_TEST)操作

本操作用于通信双方采用长连接通信时保持连接,避免TCP的TimeOut。

服务器以TABLE_ACTIVE_TEST_RESP响应客户端的请求。

TABLE_ACTIVE_TEST 消息定义

无消息体。

TABLE_ACTIVE_TEST_RESP 消息定义

无消息体。

保存(TABLE_SET)操作

本操作相当于 set(Key,Value) 服务器以TABLE_SET_RESP响应客户端的请求。

TABLE_SET 消息体定义

字段名 字节数 属性 描述
NameLen 2 unsigned integer Name的长度
Name NameLen Octet String Name
Value 变长 Octet String

TABLE_SET_RESP 消息体定义

字段名 字节数 属性 描述
Status 2 Unsigned Integer 状态。 0:正确 1:消息结构解析错 2:非法客户端或认证错 5:服务器出错

追加(TABLE_APPEND)操作

本操作相当于 append(Key,Value),将把vlaue追加到Key原来的value后边 服务器以TABLE_APPEND_RESP响应客户端的请求。

TABLE_APPEND 消息体定义

字段名 字节数 属性 描述
NameLen 2 unsigned integer Name的长度
Name NameLen Octet String Name
Value 变长 Octet String

TABLE_APPEND_RESP 消息体定义

字段名 字节数 属性 描述
Status 2 Unsigned Integer 状态。 0:正确 1:消息结构解析错 2:非法客户端或认证错 5:服务器出错

删除(TABLE_DEL)操作

本操作相当于 delete(Key,Value),将删除Key及对应的数值 服务器以TABLE_DEL_RESP响应客户端的请求。

TABLE_DEL 消息体定义

字段名 字节数 属性 描述
Name 变长 Octet String Name

TABLE_DEL_RESP 消息体定义

字段名 字节数 属性 描述
Status 2 Unsigned Integer 状态。 0:正确 1:消息结构解析错 2:非法客户端或认证错 5:服务器出错 6:没有对应的key
Name 变长 Octet String Name

查询(TABLE_GET)操作

本操作相当于 get(Key,Value),请求Key对应的数值 服务器以TABLE_GET_RESP响应客户端的请求。

TABLE_GET 消息体定义

字段名 字节数 属性 描述
Name 变长 Octet String Name

TABLE_GET_RESP 消息体定义

字段名 字节数 属性 描述
Status 2 Unsigned Integer 状态。 0:正确 1:消息结构解析错 2:非法客户端或认证错 5:服务器出错 6:没有对应的key
NameLen 2 unsigned integer Name的长度
Name NameLen Octet String Name
Value 变长 Octet String Value

当Status为6时,Value长度为0

Command_Id定义

消息 Command_Id值 说明
TABLE_BIND 1 请求建立连接
TABLE_BIND_RESP 2 请求建立连接应答
TABLE_UNBIND 3 请求断开连接
TABLE_UNBIND_RESP 4 请求断开连接
TABLE_ACTIVE_TEST 5 连路激活测试
TABLE_ACTIVE_TEST_RESP 6 连路激活测试
TABLE_SET 7 保存操作
TABLE_SET_RESP 8 保存响应操作
TABLE_APPEND 9 追加操作
TABLE_APPEND_RESP 10 追加响应操作
TABLE_DEL 11 删除操作
TABLE_DEL_RESP 12 删除响应操作
TABLE_GET 13 查询操作
TABLE_GET_RESP 14 查询响应操作


Sign in to add a comment
Hosted by Google Code