RTSP Announcement 的序号是什么?
What sequence number will an RTSP Announce have?
根据RFC2326,服务器可能随时发送ANNOUNCE
消息,客户端必须准备好应答。
但是,尚不清楚 ANNOUNCE
消息包含哪个 CSeq
。
当我用一个方法发送请求时(PLAY
、DESCRIBE
、OPTIONS
等),它有一个 cseq 编号,我们称它为 x
.我可以相信来自服务器的任何带有 cseq == x
的消息将是对我的序列号为 x
的消息的响应吗?
如果不是,那我怎么才能真正知道和我的序列号相同的消息,实际上是对它的回复?
根据 12.17 RFC2326
12.17 CSeq
The CSeq field specifies the sequence number for an RTSP request-
response pair. This field MUST be present in all requests and
responses. For every RTSP request containing the given sequence
number, there will be a corresponding response having the same
number.
来自服务器的 ANNOUNCE CSeq 消息应该是上一条消息的增量,您应该使用来自服务器的 ANNOUNCE CSeq 的 CSeq 进行响应。
您可以相信服务器会使用您在 PLAY、DESCRIBE、OPTIONS 中使用的相同 CSeq 进行响应。
如果服务器向您发送序列号为 N 的 ANNOUNCE,那么您的 OK 响应中需要包含序列号 N。如果您在 OK 之后发送 PLAY 命令 - PLAY 将需要 N+1 作为序列号。例如:
Server->Client:
ANNOUNCE rtsp://192.168.1.2:554/foo RTSP/1.0
CSeq: 42
Client->Server:
RTSP/1.0 200 OK
CSeq: 42
Client->Server:
SETUP rtsp://192.168.1.2:554/foo/bar.foo RTSP/1.0
CSeq: 43
Server->Client:
RTSP/1.0 200 OK
CSeq: 43
根据RFC2326,服务器可能随时发送ANNOUNCE
消息,客户端必须准备好应答。
但是,尚不清楚 ANNOUNCE
消息包含哪个 CSeq
。
当我用一个方法发送请求时(PLAY
、DESCRIBE
、OPTIONS
等),它有一个 cseq 编号,我们称它为 x
.我可以相信来自服务器的任何带有 cseq == x
的消息将是对我的序列号为 x
的消息的响应吗?
如果不是,那我怎么才能真正知道和我的序列号相同的消息,实际上是对它的回复?
根据 12.17 RFC2326 12.17 CSeq
The CSeq field specifies the sequence number for an RTSP request-
response pair. This field MUST be present in all requests and
responses. For every RTSP request containing the given sequence
number, there will be a corresponding response having the same
number.
来自服务器的 ANNOUNCE CSeq 消息应该是上一条消息的增量,您应该使用来自服务器的 ANNOUNCE CSeq 的 CSeq 进行响应。
您可以相信服务器会使用您在 PLAY、DESCRIBE、OPTIONS 中使用的相同 CSeq 进行响应。
如果服务器向您发送序列号为 N 的 ANNOUNCE,那么您的 OK 响应中需要包含序列号 N。如果您在 OK 之后发送 PLAY 命令 - PLAY 将需要 N+1 作为序列号。例如:
Server->Client:
ANNOUNCE rtsp://192.168.1.2:554/foo RTSP/1.0
CSeq: 42
Client->Server:
RTSP/1.0 200 OK
CSeq: 42
Client->Server:
SETUP rtsp://192.168.1.2:554/foo/bar.foo RTSP/1.0
CSeq: 43
Server->Client:
RTSP/1.0 200 OK
CSeq: 43