4 RTSP Message (RTSP 消息)
4 RTSP Message (RTSP 消息)
RTSP 为基于文本的协议, 在 UTF-8 编码下使用 ISO 10646 字符集 (RFC 2279 [21])。行以 CRLF 终止, 但接收端亦应能将单独的 CR 与 LF 解释为行结束符。
基于文本的协议更易以自描述方式添加可选参数。由于参数数量与命令频率较低, 处理效率并非关注点。若设计得当, 基于文本的协议也便于在 Tcl, Visual Basic, Perl 等脚本语言中实现研究原型。
10646 字符集避免了棘手的字符集切换, 只要使用 US-ASCII, 对应用即不可见。这也是 RTCP 所用的编码。ISO 8859-1 可直接映射为高字节为零的 Unicode。最高有效位被置位的 ISO 8859-1 字符表示为 1100001x 10xxxxxx。(见 RFC 2279 [21])
RTSP 消息可承载于任何 8 位洁净的底层传输协议之上。
请求包含方法, 方法所操作的对象以及进一步描述方法的参数。除非另有说明, 方法为幂等的。方法亦设计为在媒体服务器侧只需很少或不需维护状态。
4.1 Message Types (消息类型)
见 [H4.1]
4.2 Message Headers (消息头)
见 [H4.2]
4.3 Message Body (消息体)
见 [H4.3]
4.4 Message Length (消息长度)
当消息带有消息体时, 该体的长度由以下之一确定 (按优先顺序):
-
任何 MUST NOT 包含消息体的响应消息 (如 1xx, 204 与 304 响应) 始终在头部字段后的首个空行处结束, 无论消息中存在哪些 entity-header 字段。(注意: 空行仅由 CRLF 组成。)
-
若存在 Content-Length 头部字段 (第 12.14 节), 其字节值表示 message-body 的长度。若不存在该头部字段, 则假定值为零。
-
由服务器关闭连接。(不能通过关闭连接来指示请求体结束, 否则服务器将无法发回响应。)
注意, RTSP 目前不支持 HTTP/1.1 的 "chunked" 传送编码 (见 [H3.6]), 并要求存在 Content-Length 头部字段。
鉴于返回的演示描述长度适中, 服务器应始终能够确定其长度, 即使为动态生成, 从而使分块传送编码成为非必需。尽管只要有实体体就必须有 Content-Length, 这些规则仍可在长度未显式给出时保证合理行为。