SIP - 基本呼叫流程



下图显示了 SIP 会话的基本呼叫流程。

SIP Call Flow

以下是上述呼叫流程的分步说明:

  • 发送到代理服务器的 INVITE 请求负责启动会话。

  • 代理服务器立即向呼叫者(Alice)发送 100 Trying 响应,以停止 INVITE 请求的重传。

  • 代理服务器在位置服务器中搜索 Bob 的地址。获取地址后,它会进一步转发 INVITE 请求。

  • 此后,Bob 生成的 180 Ringing(临时响应)将返回给 Alice。

  • Bob 接起电话后不久,就会生成 200 OK 响应。

  • Bob 在收到 200 OK 后,会从 Alice 处收到 ACK

  • 同时,会话建立,并且 RTP 数据包(对话)开始从两端流动。

  • 对话结束后,任何参与者(Alice 或 Bob)都可以发送 BYE 请求以终止会话。

  • BYE 直接从 Alice 到 Bob,绕过代理服务器。

  • 最后,Bob 发送 200 OK 响应以确认 BYE,并且会话终止。

  • 在上述基本呼叫流程中,有三个 事务(标记为 1、2、3)。

完整的呼叫(从 INVITE 到 200 OK)称为 对话

SIP 梯形

代理如何帮助一个用户连接到另一个用户?让我们借助下图了解一下。

SIP Trapezoid

图中所示的拓扑称为 SIP 梯形。该过程如下:

  • 当呼叫者发起呼叫时,会向代理服务器发送 INVITE 消息。收到 INVITE 后,代理服务器会尝试在 DNS 服务器的帮助下解析被叫方的地址。

  • 获取下一条路由后,呼叫者的代理服务器(代理 1,也称为出站代理服务器)将 INVITE 请求转发到被叫方的代理服务器,该服务器充当被叫方的入站代理服务器(代理 2)。

  • 入站代理服务器联系位置服务器以获取有关被叫方注册用户地址的信息。

  • 在从位置服务器获取信息后,它会将呼叫转发到其目的地。

  • 一旦用户代理了解其地址,他们就可以绕过呼叫,即对话直接传递。

广告