我已经阅读了多个来源,但我有一些不确定的问题,我不确定是正确的吗?
考虑以下Alice(Alice@TMC.com)的简单呼叫流程<-> Bob(Bob@TMC.com)
鉴于爱丽丝已经注册了3个设备,鲍勃已经注册了2个设备
爱丽丝设备
1. Alice@client.ANC.com
2. Alice@192.168.1.1:43085
3. Alice@192.168.0.100:5060
鲍勃设备
1. Bob@client.ANC.com
2. Bob@192.168.0.100:5060
现在进入通话流程。 Alice(来自Alice@client.ANC.com
的人决定呼叫BOB。
(在第一回合中)进行从Alice到Bob的调用时,请求-URI将是代理或bob。 [Ref](https://www.quora.com/What-is-the-difference-between-request-URI-and-to-tag-in-SIP-request-messages)
Alice从其设备Alice@client.ANC.com
进行了呼叫,因此我们假设联系人头出现在SIP请求中。但是当BOB在200 OK响应中输入其联系人HEADER i.e Bob@client.ANC.com
时。为什么必须将路由定向到代理(参考图片)
由于BOB知道ALICE的位置,为什么不能将其直接发送给ALICE?因为该请求具有Alice Contact标头。
答案 0 :(得分:0)
我的答案:
对话被确认后,并且(如果)爱丽丝和鲍勃从对方那里可以知道对方的联系地址,则在该对话框中,直接向彼此发送新的SIP请求。
我希望有帮助。
答案 1 :(得分:0)
代理可以是任何类型的i.w.无状态/全状态/ B2BUA。代理可以维护邀请事务,并清除事务200OK必须遍历该代理。
当代理也想接收响应时,它将在VIA标头中添加自己的IP。 Bob的200OK响应将使用VIA标头遍历与INVITE相同的路径进行响应。
因此,在您的情况下,Bob收到了带有Via标头的INVITE消息,例如(via:proxy; alice),因此200Ok将发送到Proxy。然后代理将删除它自己的通行证,然后将其通过爱丽丝转发到下一个(在这种情况下)。
正如Bucq所述,从ACK开始,进一步的请求可以直接遍历ex。
答案 2 :(得分:0)
由于BOB知道ALICE的位置,为什么不能将
30 < currentTemp < targetTemp - 5
响应直接发送给ALICE?由于该请求具有Alice Contact标头。
实际上,您所说的 BOB 是用户Bob在200 OK
中为域SIP registrar
注册的设备。
如果Bob设备直接将答案发送给Alice设备(即anc.com
),则入站代理将无法contact-address
挂起CANCEL
到其他Bob设备,因为{{ 1}}响应是入站代理的触发器。
(在第一回合中)(从爱丽丝到鲍勃)进行呼叫时,请求-URI是代理服务器还是鲍勃的请求?
使用定义“正确”方式路由的松散路由,request-uri必须是目标地址,例如用户地址(即SIP INVITE
)或用户设备(即200 ok
)或addres-of-record
e164兼容地址或用户contact-address
(不确定是否全部)。
在您的情况下,该地址必须是bob用户地址(bob@anc.com),并且不是代理人!