admin 管理员组

文章数量: 887031


2024年2月7日发(作者:socket介绍)

三段式数据传输协议

(Three Sections Transfer Protocol)

设计/编撰:姚明

2011/12/12

操作人

姚明

操作内容

初稿

时间

2011/12/12

备注

定义

三段式数据传输协议简称TSTP(下文用简称),属于应用层协议,其规定一次数据传输主要包括三个数据段,以此而得名为“三段式数据传输协议”。

1.TSTP不关心底层协议是什么,可以是UDP或TCP/IP等,主要用来规范传输数据的格式并验证数据完整性。

2.TSTP能从一个持续传输的数据管道中,拆分出独立的数据包,而不会造成数据混淆。

3.TSTP是轻量级数据传输协议,只需要使用12个字节来确保数据传输的完整性。

4.TSTP适用于简单结构数据传输,因为TSTP里规范了头信息以key/value的形式存储,于是可以用来传送简单的key/value数据。

5.TSTP是高可定制协议,可由编程人员随意定制传输的版本号和内容,以满足各种数据传输需求。

TSTP协议的三段定义如下:

 协议属性:对本次请求的协议做一个标识,包括该协议的版本、头长度和正文长度。

 头内容:头的内容。

 正文内容:正文的内容。

三段式图示:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 … …

版本号

int(4)

头长度

int(4)

正文长度

int(4)

头内容

byte (头长度)

第二段:头内容

正文

byte (正文长度)

第三段:正文内容 第一段:协议属性

从上面图示中可以看出一个请求最少需要12个字节组成。如果是12字节的请求,那么这个请求只能得到协议版本号这一个有效属性。

协议属性(attribute)

协议属性是一次数据传输的必要段,不可被省略。

版本号(version)

由于TSTP协议的规范足够简单,对于正文和头内容的规范仅限于格式规范,没有对header做过多的抽象,以此来增加协议的灵活性,使TSTP成为高度可定制的传输协议,为了便于应用程序区别对待不同类别的TSTP协议内容的处理,于是定义了版本号这一属性,该属性占用一个数据包的最前面的4个字节,具体内容可由程序自行设定。

需要注意0是系统保留版本号,用来表示不作版本区分。

头长度(header-length)

用来标识头内容长度。四字节无符号整型数值,最大值是232,也就是说头内容的最大长度是4GB。

正文长度(data-length)

用来标识正文内容长度。与头一样的整型数值,最大支持4GB的长度。

头内容(header)

头内容用来携带一些属性,类似于HTTP协议里的头,可以用来携带自定义属性,如用户信息。头内容的格式规则,如下示例:

Name=value

Username=yaoming

RoomID=11021

如上示例:

 采用name=value的格式表示一个属性的名称和值,用回车符”n”作为属性之间的分隔符。

 属性名称不允许使用”=”符号,属性名与”=”之间如果有空格也当作属性名的一部分。

 属性值包括两个转义字符”n”和””,转义后的字符分别是”回车”和””。

 最多支持4GB大小的数据。

正文内容(data)

正文内容不作规范,字符串二进制都无防。正文内容用于传输实质数据,一般用于传送无规则文本和二进制数据。最多支持4GB大小的数据。


本文标签: 协议 属性 内容 用来 数据