通常,Invite请求中的Contact头字段是无用的.例如,UAC和UAS位于不同的LAN中.联系人字段可能是:
INVITE sip:bob@sipprovider SIP/2.0
Contact: Alice<alice@192.168.1.10>
.....
Run Code Online (Sandbox Code Playgroud)
在我们仍然可以构建对话框时,没有使用Contact字段.那么,为什么Contact头字段是必需的?
Fra*_*rar 10
Contact头说,这里你是(或者说,你的用户代理),而来自于头说:谁给你.
您可能有几个SIP设备都注册到相同的记录地址(您在From标头中放置的URI).
此外,REGISTER请求使用Contact头来维护SIP的位置服务:它们让用户代理更新注册商的位置信息.
(顺便说一句,如果Alice调用Bob,则Contact头需要处于2xx响应中,以便Alice可以将2xx的ACK路由到Bob.这指向DarkDust关于某些SIP代理的评论错误联系头:如果没有,你发现自己处于一个只有一半建立呼叫的不舒服的位置:Alice认为呼叫设置是因为她发送了她的ACK,但Bob从未收到它.联系人修改代理的另一种选择是使用B2BUA作为网络网关;它不需要破坏Contact头,因为头部将指向B2BUA本身.)
响应Phoenix Luo的评论,由于在Contact头中使用LAN IP的缺点,RFC 5627描述了一种解决方案 - 在Contact头中使用全局可路由的用户代理URI(GRUU).
| 归档时间: |
|
| 查看次数: |
31236 次 |
| 最近记录: |