找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1924|回复: 0
打印 上一主题 下一主题
收起左侧

有关SIP中的PRACK的含义和使用

[复制链接]
跳转到指定楼层
楼主
ID:107189 发表于 2016-3-5 18:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天被同事问到了PRACK的含义,虽然心里明白,但是在感觉还是没有说清楚,其实还是自己对其认识的模糊和不彻底导致的,否则怎么可能说不清楚呢? 于是对PRACK又做了一下了解,PRACK的具体含义和使用如下:

PRACK:the Provisional Response ACKnowledgement

SIP中的最终响应被理解是会可靠传输的,例如对应INVITE的200OK响应,UAC会给一个ACK,告诉UAS已经收到了200OK。200与ACK间的可靠性是end-to-end的。PRACK是SIP消息中保证临时消息(101-199)可靠传输的机制。PRACK就是仿照200OK的可靠性响应,对除100以外的1xx临时响应(100是hop-to-hop的),进行可靠性传输。PRACK一般是对收到183 call in progress/180 ringing的确认,

PRACK的实现
  UAC与UAS对是否支持该扩展的协商,就是通过一个option tag -- 100rel。
  为达到该目的,UAC有两种选择,在INVITE消息中加入Require:100rel或者Supported:100rel。UAS在接受到上述消息中,也存在选择的问题。
  当INVITE中含有Supported:100rel,UAS在发送临时消息中,可以根据UAS中是否支持PRACK决定发送临时消息中的参数。如果支持则临时消息中加入Require:100rel和Rseq字段,接到该消息UAC发送PRACK;否则不加上述参数,UAC不发PRACK。
  当INVITE中含有Require:100rel。UAS如果不支持PRACK需要使用420(不正确的扩展)来拒绝呼叫。否则临时消息中加入Require:100rel和Rseq字段,接到该消息UAC发送PRACK。
  例如:UAC发起的INVITE中含有Supported:100 rel,而UAS也支持该扩展并且在183响应中有Require:100rel,说明接下来会话中,对所有100以外的1xx响应,均要有PRACK回应。


PRACK被定义在RFC3262中。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表