在SIP中,为什么Contact头字段必须出现在Invite请求中

Pho*_*Luo 8 sip

通常,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本身.)

响应Pho​​enix Luo的评论,由于在Contact头中使用LAN IP的缺点,RFC 5627描述了一种解决方案 - 在Contact头中使用全局可路由的用户代理URI(GRUU).


Dar*_*ust 7

联系人字段包含被呼叫者可以到达呼叫者以便将来请求的地址.例如,有必要使被叫方可以向呼叫者发送BYE或re-INVITE.