sip - 在已建立的对话之间更改 SIP 传输协议需要做什么?
问题描述
给定一个通过 TCP 建立的 SIP 对话(INVITE,200 OK,ACK)。如何切换到UDP?
我认为它可以通过 RE-INVITE 来完成,改变 Via- 和 Contact-Header。
请注意,在rfc3665#3.7#F9中,RE-INVITE 更改了 IP 地址,所以我假设传输协议也可以切换。
解决方案
rfc3665#3.7#F9对您的用例没有帮助,因为它侧重于解释需要更新媒体 IP时发生的情况。
每个 SIP 事务都是独立的,并且每个事务都可以使用任何传输。但是,如果您更新对话(传输、联系),可以通过 re-INVITE 完成,但也可以通过 UPDATE 完成。
我认为它可以通过 RE-INVITE 来完成,改变 Via- 和 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 中使用和/或 mofidy transport =UDP在 Via 中使用 rport 参数。
旁注:强烈建议不要从 TCP 切换到 UDP。只有从 UDP 切换到 TCP 才能带来好处。
推荐阅读
- python - 如何检查函数是在 IDLE 中运行还是从另一个函数/模块运行
- android - Kotlin 扩展属性在某些应用程序模块中被识别,而在其他模块中不被识别
- javascript - js.erb 文件在尝试渲染部分时抛出“错误:rails-erb-loader failed with code: 1”错误
- css - 在 WordPress 中使用 css 在文本旁边对齐字体真棒图标
- python - 如何重新排列 DateTime 对象的顺序
- algorithm - 如何衡量地址自动建议的相关性?
- javascript - 如何使用 jQuery 一次只隐藏/显示一个 div
- bash - 如何在同时用于 CMD 和 BASH 的脚本中关闭 ECHO
- css - 我无法使用浏览器缩小导航栏和搜索栏以进行引导反应
- java - Android Marshmallow (6) 上的 PopupMenu BadTokenException,但适用于 Q (Android 10)?