使用 SIP 建立呼叫时,建立 RTP 流的是主叫方还是被叫方?

When establishing a call using SIP, is it the caller or the callee who establishes the RTP stream?

关于 SIP 的 IETF 文档非常密集,但是一旦 OKs 和 ACKs 被排除在外,我找不到任何与建立 RTP 连接的操作顺序相关的内容。

此外,端口应该在发送最终 SIP 消息之前还是之后打开?

作为参考,我使用 Yealink phone 作为我的呼叫设备,并且正在开发一个 Android 应用程序来接收这些呼叫。

抱歉,如果之前有人问过这个问题,我找不到任何有用的东西... 如果有任何帮助,我将不胜感激!

RTP 流通常使用 UDP 数据包发送。所以没有建立实际连接,数据包只是发送到指定的 IP 地址和端口。

只要用户代理客户端发送了包含 SDP 提议的 INVITE 请求,它就必须准备好在 SDP 提议中的 IP 地址和端口上接收 RTP 数据包。参见 RFC3264

Once the offerer has sent the offer, it MUST be prepared to receive media for any recvonly streams described by that offer. It MUST be prepared to send and receive media for any sendrecv streams in the offer, and send media for any sendonly streams in the offer (of course, it cannot actually send until the peer provides an answer with the needed address and port information).

两者都不是;一旦会话被 ACK 了解,数据包就会被双向发送。与 RTP or SRTP; optionally with RTCP to support STUN.

建立连接

这显示了直接调用:

提示:通过服务器进行间接调用的方式不同。

资料来源:3cx.de(德语)。