首页 > 解决方案 > SIP 标头理解

问题描述

我一直在阅读多个来源,我有一些我不确定是否正确的担忧?

考虑如下 Alice (Alice@TMC.com) <-> Bob(Bob@TMC.com) 的简单呼叫流程

在此处输入图像描述

假设 Alice 已经注册了 3 个设备,而 bob 已经注册了 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(fromAlice@client.ANC.com决定打电话给 BOB.

  1. 当呼叫(从爱丽丝到鲍勃)(在第一段)进行时,请求 - URI 将是代理或鲍勃的。[参考](https://www.quora.com/What-is-the-difference-between-request-URI-and-to-tag-in-SIP-request-messages

  2. Alice 从其设备调用,Alice@client.ANC.com因此我们假设联系人标头出现在 SIP 请求中。但是当 BOBi.e Bob@client.ANC.com在 200 OK 响应中进入它的联系人 HEADER 时。为什么必须将路由定向到代理(参考图片)

既然 BOB 知道 ALICE 的位置,为什么不能直接发送给 ALICE?因为该请求具有 Alice Contact 标头。

标签: networkingnetwork-programmingsip

解决方案


我的回答:

  1. Request-URI 的值取决于使用的路由类型:松散路由或严格路由。由于 SipV2 SIP 支持松散路由,这是首选方式。这意味着第一段中的 Request-URI 将包含 Bob 的 AOR,在本例中为 Bob@TMC.com。
  2. SIP 响应必须经过与 SIP 请求相同的路径(方向相反)(使用 Via 标头)。这意味着必须将 200 OK 响应发送到代理。代理将向 Alice 发送单独的 200 OK 响应(这可以是相同的消息)。

当对话得到确认并且(如果)Alice 和 Bob 知道彼此的联系地址时,他们可以从那里开始,在该对话中,直接向彼此发送新的 SIP 请求。

我希望这会有所帮助。


推荐阅读