跳到主要内容

4. 字节序、对齐和时间格式

所有整数字段均按网络字节序承载, 即最高有效字节 (八位组) 在前. 这种字节序通常称为大端序 (big-endian). 传输顺序在 [3] 中有详细描述. 除非另有说明, 数值常量均为十进制 (基数 10).

所有头部数据都按其自然长度对齐, 即 16 位字段在偶数偏移处对齐, 32 位字段在可被 4 整除的偏移处对齐, 依此类推. 指定为填充的八位组取值为零.

挂钟时间 (绝对日期和时间) 使用网络时间协议 (Network Time Protocol, NTP) 的时间戳格式表示, 该格式以相对于 1900 年 1 月 1 日 0 时 UTC 的秒数表示 [4]. 完整分辨率的 NTP 时间戳是一个 64 位无符号定点数, 整数部分位于前 32 位, 小数部分位于后 32 位. 在某些适合更紧凑表示的字段中, 只使用中间 32 位; 即整数部分的低 16 位和小数部分的高 16 位. 整数部分的高 16 位必须独立确定.

实现不需要运行网络时间协议即可使用 RTP. 可以使用其他时间源, 也可以完全不使用时间源 (见第 6.4.1 节对 NTP 时间戳字段的说明). 但是, 运行 NTP 可能有助于同步从不同主机传输的流.

NTP 时间戳将在 2036 年某个时候回绕到零, 但就 RTP 而言, 只使用成对 NTP 时间戳之间的差值. 只要可以假定成对时间戳彼此相差不超过 68 年, 使用模运算进行减法和比较就会使回绕无关紧要.