锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / 基于UDP的数据传输协议UDT / UDT包结构
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

四、包结构


UDT协议的包结构可分为2种:数据包和控制包。两种“信息包”(数据包或控制包)通 过包头的第一位区分。

4.1 数据包

数据包的包结构如下图所示:

数据包Data Packet

数据包的包头第一位值是0。序列号宽度占有31位。UDT使用基于序列号的包。每一 次发包时,序列号以包发送的次序同步累加1。序列号是无符号数,序列号到231 – 1后又 从新开始。

包头的第二个4字节域用于消息。域的前二位“FF”标记了消息包的位置。

“10”表示消息的第一个包;

“01”表示消息的最后一个包;

“11”表示消息仅含有唯一的包;

“00”表示当前包在消息的中间。

域的第三位标识该消息应当以顺序(“1”)或者乱序(“0”)投递。一个顺序的消息投递时, 需要保证之前排队投递的消息都已经被投递或者被丢弃。

域的剩余29位表示消息号。消息号是独立的,是和包序列号相似的计数序号。

一个UDT消息可以包含多个UDT包。

包头的第三个4字节表示时间标签。时间标签是一个相对值,相对于UDT连接建立时 的消耗时间。时间标签信息目前并不是必要的。仅当用户在自定义控制算法时,UDT协议可 以向用户提供可选的时间标签参数作为算法的控制项。

包头的第四个4字节表示目标Socket ID。目标Socket ID用于UDP多路复用。多个 UDT的Socket可被绑定(Bind)在同一个UDP端口上,而目标Socket ID用来区分不同 的UDT连接。

4.2 控制包

包头的第一位是1时,暗示了该包是控制包。控制包的包结构如下图所示:

控制包Control Packet

Type字段占包头的15位,目前存在8种有效的控制包类型。

后续的字段域的内容的取决于Type字段的控制包类型。前128位(4个双字)必然存在 于包头,然而个别字段域的值可能为空。

例如,UDT的ACK控制包里使用ACK序列号。ACK序列号不依赖于数据包的序列号。

ACK序列号使用控制包头的“Additional Info”字段域。ACK序列号的取值范围为[0, 231 – 1]。

TYPE 0x0: 协议的握手连接

Additional Info: 未定义

Control Info:

1) 32 bits: UDT version(UDT目前有4个版本)

2) 32 bits: Socket type (数据流或者报文)

3) 32 bits: initial packet sequence number

4) 32 bits: maximum packet size (包括UDP和IP头)

5) 32 bits: maximum flow window size

6) 32 bits: connection type (Traditional or Rendezvous)

7) 32 bits: socket ID

8) 32 bits: SYN cookie

9) 128 bits: the IP address of the peer's UDP socket

TYPE 0x1: Keep-alive

Additional Info: 未定义

Control Info: None

TYPE 0x2: 应答(ACK)

Additional Info: ACK sequence number

Control Info:

1) 32 bits: The packet sequence number to which all the previous packets have been received (excluding)

[以下2-6信息域是可选的]

2) 32 bits: RTT (单位是微秒)

3) 32 bits: RTT variance

4) 32 bits: Available buffer size (单位是字节)

5) 32 bits: Packets receiving rate (单位是每秒包数)

6) 32 bits: Estimated link capacity (单位是每秒包数)

TYPE 0x3: 否定应答(NAK)

Additional Info: 未定义

Control Info:

1) 32 bits integer array of compressed loss information

TYPE 0x4: 未使用的

TYPE 0x5: 关闭连接

Additional Info: 未定义

Control Info: None

TYPE 0x6: 应答的应答(ACK2)

Additional Info: ACK sequence number

Control Info: None

TYPE 0x7: Message Drop Request

Additional Info: Message ID

Control Info:

1) 32 bits: First sequence number in the message

2) 32 bits: Last sequence number in the message

TYPE 0x7FFF: Explained by bits 16 - 31, reserved for user defined Control Packet

另外,时间标签和目标Socket ID也存在控制包里。


友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院(文化路97号院)内