SIP over UDP 和 SIP over TCP 有什么区别?
“基于 TCP 的 SIP”的真正含义是什么?是否意味着:
SIP 和 RTP 都使用 TCP
或者
SIP 使用 TCP,RTP 使用 UDP
SIP over UDP 和 SIP over TCP 有什么区别?
“基于 TCP 的 SIP”的真正含义是什么?是否意味着:
SIP 和 RTP 都使用 TCP
或者
SIP 使用 TCP,RTP 使用 UDP
“SIP over TCP”只是意味着“通过 TCP 流发送 SIP 消息”。SIP 在很大程度上与传输协议无关,因此相同的协议可以在 SCTP、DTLS 等上运行。
从用户的角度来看,没有区别。
从使用 SIP 堆栈/编写 SIP 应用程序的人的角度来看,几乎没有区别:基于 UDP 的 SIP 实现了各种可靠性机制(对于初学者来说是重新发送+回退)。
会话描述可以对媒体流使用 RTP,但 SDP 不依赖于使用 RTP。如果您愿意,您可以使用纯 TCP 流,或任何其他协议(前提是在 SDP 中有一种描述协议的方式,并且只对那些理解该传输协议的客户端有用,当然)。
RTP 本身是一种传输协议,通常在 UDP 上运行(因为在实时传输协议中,及时性比可靠性更重要),但可以在 TCP 上运行(假设媒体是框架的 -例如, RFC 4103数据不是)。
所以通常人们会在 TCP 上运行 SIP,在 UDP 上运行 RTP,但是这两种协议都不限于这种特定的设置。