需要做什么来改变已建立对话之间的 SIP 传输协议?
What needs to be done to change the SIP transport protocol in-between an established dialog?
假定已通过 TCP 建立 SIP 对话(INVITE、200 OK、ACK)。如何切换到UDP?
我认为可以通过 RE-INVITE,更改 Via- 和 Contact-Header 来完成。
请注意,在 rfc3665#3.7#F9 中,RE-INVITE 更改了 IP 地址,因此我假设传输协议也可以切换..
您可以在发送(或接收)SIP 消息时在传输之间自由切换。即使在对话中。对话建立时未设置传输类型。
用于特定消息的传输类型确实可以反映在 Via 和 Contact headers、URI 等中。但这并不意味着 SIP 消息中包含 'UDP'通过 header 已经 sent/received 通过 UDP:如果 2 个 SIP 端点之间存在 TCP 连接,那么将此连接用于 UDP 消息也非常有意义。始终允许升级传输,不允许降级。
您唯一需要牢记的就是安全。当使用 sips-URIs、TLS 等时,can/will 对允许用于通信的传输类型施加了限制。
rfc3665#3.7#F9 对您的用例没有帮助,因为它着重于解释当 媒体 IP 需要更新时发生的情况。
每个 SIP 事务都是独立的,每个事务都可以使用任何传输。但是,如果您更新对话(运输、联系人),可以通过重新邀请来完成,但也可以通过更新。
I would assume it could be done via RE-INVITE, changing the Via- and
the Contact-Header.
这对我来说是正确的。实践中:
Via: SIP/2.0/UDP XXX.XXX.XXX.XXX:XXXX;branch=z9hG4bKlkld5l
Contact: <sip:bob@XXX.XXX.XXX.XXX:XXXX>
应该修改为
Via: SIP/2.0/TCP YYY.YYY.YYY.YYY:YYYY;branch=z9hG4bKlkld5l
Contact: <sip:bob@YYY.YYY.YYY.YYY:YYYY>
而在现实生活中,您也可以在 Contact 中使用 and/or mofidy transport=UDP,在 Via 中使用 rport 参数.
旁注:强烈不建议从 TCP 切换到 UDP。只有从 UDP 切换到 TCP 才应该有好处。
假定已通过 TCP 建立 SIP 对话(INVITE、200 OK、ACK)。如何切换到UDP?
我认为可以通过 RE-INVITE,更改 Via- 和 Contact-Header 来完成。
请注意,在 rfc3665#3.7#F9 中,RE-INVITE 更改了 IP 地址,因此我假设传输协议也可以切换..
您可以在发送(或接收)SIP 消息时在传输之间自由切换。即使在对话中。对话建立时未设置传输类型。
用于特定消息的传输类型确实可以反映在 Via 和 Contact headers、URI 等中。但这并不意味着 SIP 消息中包含 'UDP'通过 header 已经 sent/received 通过 UDP:如果 2 个 SIP 端点之间存在 TCP 连接,那么将此连接用于 UDP 消息也非常有意义。始终允许升级传输,不允许降级。
您唯一需要牢记的就是安全。当使用 sips-URIs、TLS 等时,can/will 对允许用于通信的传输类型施加了限制。
rfc3665#3.7#F9 对您的用例没有帮助,因为它着重于解释当 媒体 IP 需要更新时发生的情况。
每个 SIP 事务都是独立的,每个事务都可以使用任何传输。但是,如果您更新对话(运输、联系人),可以通过重新邀请来完成,但也可以通过更新。
I would assume it could be done via RE-INVITE, changing the Via- and the Contact-Header.
这对我来说是正确的。实践中:
Via: SIP/2.0/UDP XXX.XXX.XXX.XXX:XXXX;branch=z9hG4bKlkld5l
Contact: <sip:bob@XXX.XXX.XXX.XXX:XXXX>
应该修改为
Via: SIP/2.0/TCP YYY.YYY.YYY.YYY:YYYY;branch=z9hG4bKlkld5l
Contact: <sip:bob@YYY.YYY.YYY.YYY:YYYY>
而在现实生活中,您也可以在 Contact 中使用 and/or mofidy transport=UDP,在 Via 中使用 rport 参数.
旁注:强烈不建议从 TCP 切换到 UDP。只有从 UDP 切换到 TCP 才应该有好处。