框架二:RTSP消息格式
1、请求消息 Request
1.1、首行请求行 Request-Line
1.2、请求消息头(general-header | request-header | entity-header)
1.2.1、认证字段 Authorization
rtsp认证方式有两种,基本认证和摘要认证。
1.2.1.1、基本认证 (basic authentication)
基本认证方式如下所示,详情请参考 rfc 2068 第 11.1 章节。
basic-cookie = base64(username + ":" + password)
1.2.1.2、摘要认证 digest authentication
摘要认证方式如下所示,详情请参考 rfc 2069 中描述。
hs1 := md5hash(username + ":" + realm + ":" + password)
hs2 := md5hash(method + ":" + requestUri)
response := md5hash(hs1 + ":" + nonce + ":" + hs2)
username:用户名
password: 密码
realm: 通常一个 server 对应一个 realm
method:请求方法(OPTIONS/DESCRIBE/SETUP/PLAY)
requestUri: 请求的 uri
nonce: 随机字符串,通常一个 session 对应一个 nonce
1.2.2、传输模式 Transport
传输模式格式:
transport-protocol/profile[/lower-transport] * parameter
UDP传输模式(默认):
C-> Transport: RTP/AVP;unicast;client_port=52178-52179
S-> Transport: RTP/AVP;unicast;client_port=52178-52179;server_port=2000-2001
TCP交织传输模式:
视频-> Transport: RTP/AVP/TCP;unicast;interleaved=0-1
音频-> Transport: RTP/AVP/TCP;unicast;interleaved=2-3
TCP非交织传输模式:
?
HTTP传输模式(隧道模式):
?
1.3、消息体 [message-body]
此为可选字段,具体详情需参考 rfc2068(http) 第 4.3 章节。
2、响应消息Response
2.1、首行响应状态行 Request-Line
2.2、响应消息头(general-header | response-header | entity-header)
2.2.1、Content-Type 字段
格式如下,具体详情需参考rfc2068(http) 第 3.7 章节 。
Content-Type = "Content-Type" ":" media-type
media-type = type "/" subtype * ( ";" parameter )
举例:
Content-Type: application/sdp
2.3、消息体 [message-body]
此为可选字段,具体详情需参考 rfc2068(http) 第 4.3 章节。