对 INVITE 请求的 SIP 响应可能是最终的或临时的。最终响应始终可靠地发送,而临时响应通常并非这样。对于需要可靠地发送临时响应的情况,可以使用 PRACK(临时响应确认)方法。



  • 发送 INVITE 请求的客户机必须将一个 100rel 标记放入到 Supported 或 Require 头中以指示此客户机支持 PRACK。



  • ​RFC 3262​​​(“Reliability of Provisional Responses in the Session Initiation Protocol (SIP)”),它通过添加 PRACK 和选项标记 100rel 扩展了 ​​RFC 3261​​(“SIP: Session Initiation Protocol”)。



过程

  • 使应用程序生成并发送一个可靠的临时响应给在“至”字段中任何没有标记的 INVITE 请求。
  • 使应用程序将 100rel 标记添加至出局 INVITE 请求。此选项标记必须出现在 Supported 头或 Require 头中。
  • 根据 RFC 3262 小节 7.2(“RAck”)设置 RAck 头。
  • UAC 发送 INVITE 并接收可靠的响应。当 UAC 接收此可靠响应时,它发送 PRACK 请求给 UAS 并在 PRACK 上接收到一个 200 OK,所以紧接着应实现 接收此 200 OK。
  • 准备好应用程序以便为入局的 PRACK 请求生成并发送最终的响应。
  • 当可靠的临时响应没有在 64*T1 秒内应答时(其中 T1 是一个 SIP 计时器)
  • 使该应用程序至多有一个未完成、未应答的可靠临时响应。在第一个应答导致出现异常之前尝试发送另一个。
  • 确保该应用程序强制 RFC 3262 提供/应答语义周围的 PRACK 请求包含会话描述。具体来说,如果任何未应答的临时响应包含会话描述,