0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|X| CC |M| PT | sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| synchronization source (SSRC) identifier
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| contributing source (CSRC) identifiers |
| .... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| RTP payload data |
| |
| .... |
- V (2 bits): 协议版本号,RFC 3550中规定为2。
- P (1 bit): 填充位指示器,如果数据包需要填充,则设置为1。
- X (1 bit): 扩展位指示器,如果存在扩展头,则设置为1。
- CC (4 bits): CSRC计数器,指示后面跟随的CSRC标识符的个数。
- M (1 bit): 标记位,用于指示数据包是否为一个特殊的事件。
- PT (7 bits): 负载类型,指示RTP负载的格式。
- Sequence number (16 bits): 序列号,每个数据包拥有一个唯一的编号,用于重新排序数据包以保证顺序性。
- Timestamp (32 bits): 时间戳,用于同步音频和视频流。
- SSRC (32 bits): 同步源标识符,用于标识RTP数据包的来源。
- CSRC identifiers (32 bits each): 贡献源标识符,用于指示参与数据包生成的全部源。
RTP协议封包格式非常灵活,允许根据应用的需求添加和扩展字段。这种灵活性使得RTP协议适用于各种实时通信场景