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大小的数据。
版权声明:本文标题:Socket三段式协议(TSTP) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1707300440h514090.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论