产品及架构介绍
定义
命名空间:TouchSocket.Dmtp
程序集:TouchSocket.Dmtp.dll
一、说明
DMTP(Duplex Message Transport Protocol双工消息传输协议)是一个简单易用,便捷高效,且易于扩展的二进制数据协议。
【协议格式】
|--Head--|--Flags--|--Length--|-----Data-----|
|----2----|----2----|-----4------|-------n-------|
协议格式非常简单。
- 协议头为2字节,一般为固定值,目前第一版为“dm”。
- 协议标志位为2字节,表示本次协议的标志位。类型是
大端ushort无符号
类型。其中0-19
的协议框架内部占用。其余的均可被自定义使用 - 再4字节为
大端Int32
有符号类型,表示本次协议的载荷数据长度。 - 其余数据为实际载荷数据。
可能好多人会疑惑,Dmtp和tcp、udp有什么关系?或者说,类似tcp,本身就是可靠传输协议了,那Dmtp的可靠又体现在什么地方呢?
1.1 Dmtp和Tcp、Udp有什么关系?
Dmtp像http和websocket一样,也是封装的应用层协议。它可以基于最基本的tcp或http工作,也能基于websocket工作。
所以,可以认为Dmtp是更为高级的应用层协议。
1.2 Tcp本身就是可靠传输协议了,那Dmtp的可靠又体现在什么地方呢?
首先呢,我们得明确,tcp的可靠,是在保持连接的时候,才可靠。当突然断网时,这种可靠将被打破。其次这种可靠是单项的,举例来说,发送方只是负责将数据发给接收方,至于接收方处理了没有,或者处理结果如何,都是未知的。那么这时候聪明的小伙伴就会想到让接收方回复一个状态不就行了?是的,这就是Dmtp工作的场景之一了。
当然,Dmtp的功能远非上述的两个场景,详细概览如下: