SIP PRACK(Provisional Response ACKnowledgement)是由SIP的扩展协议RFC3262定义的,旨在为SIP的临时应答提供传输的可靠性。扩展机制使用选项100rel和临时应答方法PRACK实现。该机制同SIP协议中的2xx对INVITE应答的可靠机制类似。

流程图:


信令流程:

编号1:1015呼叫1012
INVITE sip:1012@192.168.0.24:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.0.201;rport;branch=z9hG4bKrD9r3p90FyNUm
Max-Forwards: 68
From: "1015" <sip:1015@192.168.0.201>;tag=1r000Km00ZmFQ
To: <sip:1012@192.168.0.24:5060>
Call-ID: d897f7d0-21c9-123b-f4a7-000c29e7aea9
CSeq: 49273533 INVITE
Contact: <sip:mod_sofia@192.168.0.201:5060>
User-Agent: FreeSWITCH-mod_sofia/1.10.7-dev+git~20210720T181005Z~4c04914003~64bit
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, PRACK, NOTIFY, PUBLISH, SUBSCRIBE
Supported: 100rel, timer, path, replaces             //支持100rel
Allow-Events: talk, hold, conference, presence, as-feature-event, dialog, line-seize, call-info, sla, include-session-description, presence.winfo, message-summary, refer
Content-Type: application/sdp
Content-Disposition: session
Content-Length: 1058
X-FS-Support: update_display,send_info
Remote-Party-ID: "1015" <sip:1015@192.168.0.201>;party=calling;screen=yes;privacy=off

v=0
o=- 20011 20011 IN IP4 192.168.1.2
s=SDP data
c=IN IP4 192.168.1.2
b=AS:1310
t=0 0
m=audio 50158 RTP/AVP 121 122 123 124 9 0 8 18 101
a=rtpmap:121 G7221/32000
a=fmtp:121 bitrate=48000
a=rtpmap:122 G7221/32000
a=fmtp:122 bitrate=32000
a=rtpmap:123 G7221/32000
a=fmtp:123 bitrate=24000
a=rtpmap:124 G7221/16000
a=fmtp:124 bitrate=24000
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=ptime:20
m=video 50160 RTP/AVP 97 99 98 110 117
b=TIAS:1310720
a=rtpmap:97 H264/90000
a=fmtp:97 profile-level-id=64001f; max-mbps=108000; max-fs=3600; packetization-mode=1
a=rtpmap:99 H264/90000
a=fmtp:99 profile-level-id=42801f; max-mbps=108000; max-fs=3600; packetization-mode=1
a=rtpmap:98 H264/90000
a=fmtp:98 profile-level-id=42801f; max-mbps=108000; max-fs=3600
a=rtpmap:110 VP8/90000
a=fmtp:110 max-fr=30;max-fs=3600;
a=rtpmap:117 YL-FPR/90000
a=fmtp:117 yl-capset=15;yl-ver=1;yl-ext=19
a=ptime:20
a=rtcp-fb:* ccm fir=

编号2:
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 192.168.0.201;rport=5060;received=192.168.0.201;branch=z9hG4bKrD9r3p90FyNUm
Call-ID: d897f7d0-21c9-123b-f4a7-000c29e7aea9
From: "1015" <sip:1015@192.168.0.201>;tag=1r000Km00ZmFQ
To: <sip:1012@192.168.0.24>
CSeq: 49273533 INVITE
Content-Length:  0

编号3:
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP 192.168.0.201;rport=5060;received=192.168.0.201;branch=z9hG4bKrD9r3p90FyNUm
Call-ID: d897f7d0-21c9-123b-f4a7-000c29e7aea9
From: "1015" <sip:1015@192.168.0.201>;tag=1r000Km00ZmFQ
To: <sip:1012@192.168.0.24>;tag=OfcYIGGy9WfXV5Mccen4eDK8LbiM23SR
CSeq: 49273533 INVITE
Contact: "1012" <sip:1012@192.168.0.24:5060>
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
User-Agent: VoIP
Require: 100rel    //要求使用100rel机制
RSeq: 8167         //可靠序号
Content-Length:  0

编号4:
PRACK sip:1012@192.168.0.24:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.0.201;rport;branch=z9hG4bKSp2H5Ht4c7Beg
Max-Forwards: 70
From: "1015" <sip:1015@192.168.0.201>;tag=1r000Km00ZmFQ
To: <sip:1012@192.168.0.24:5060>;tag=OfcYIGGy9WfXV5Mccen4eDK8LbiM23SR
Call-ID: d897f7d0-21c9-123b-f4a7-000c29e7aea9
CSeq: 49273534 PRACK
Contact: <sip:mod_sofia@192.168.0.201:5060>
RAck: 8167 49273533 INVITE      //对应临时应答180(编号3)的确认(可靠序号RSeq: 8167 )
User-Agent: FreeSWITCH-mod_sofia/1.10.7-dev+git~20210720T181005Z~4c04914003~64bit
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, PRACK, NOTIFY, PUBLISH, SUBSCRIBE
Supported: 100rel, timer, path, replaces
Content-Length: 0

编号5:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.0.201;rport=5060;received=192.168.0.201;branch=z9hG4bKSp2H5Ht4c7Beg
Call-ID: d897f7d0-21c9-123b-f4a7-000c29e7aea9
From: "1015" <sip:1015@192.168.0.201>;tag=1r000Km00ZmFQ
To: <sip:1012@192.168.0.24>;tag=OfcYIGGy9WfXV5Mccen4eDK8LbiM23SR
CSeq: 49273534 PRACK      //对PRACK(编号4)的响应
Content-Length:  0

编号6:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.0.201;rport=5060;received=192.168.0.201;branch=z9hG4bKrD9r3p90FyNUm
Call-ID: d897f7d0-21c9-123b-f4a7-000c29e7aea9
From: "1015" <sip:1015@192.168.0.201>;tag=1r000Km00ZmFQ
To: <sip:1012@192.168.0.24>;tag=OfcYIGGy9WfXV5Mccen4eDK8LbiM23SR
CSeq: 49273533 INVITE
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
User-Agent: VoIP
Contact: "1012" <sip:1012@192.168.0.24:5060>
Supported: replaces, 100rel
Content-Type: application/sdp
Content-Length:   227

v=0
o=- 3856643454 3856643456 IN IP4 192.168.0.24
s=SDP
c=IN IP4 192.168.0.24
t=0 0
m=audio 10000 RTP/AVP 9 101
c=IN IP4 192.168.0.24
a=rtpmap:9 G722/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=sendrecv

编号7:
ACK sip:1012@192.168.0.24:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.0.201;rport;branch=z9hG4bKtZUa7cB89F20B
Max-Forwards: 70
From: "1015" <sip:1015@192.168.0.201>;tag=1r000Km00ZmFQ
To: <sip:1012@192.168.0.24:5060>;tag=OfcYIGGy9WfXV5Mccen4eDK8LbiM23SR
Call-ID: d897f7d0-21c9-123b-f4a7-000c29e7aea9
CSeq: 49273533 ACK
Contact: <sip:mod_sofia@192.168.0.201:5060>
Content-Length: 0

编号8:
BYE sip:mod_sofia@192.168.0.201:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.0.24:5060;rport;branch=z9hG4bKPjSS1VmZXhcsqLblXHayM3E6vlR-i4rlSu
Max-Forwards: 70
From: <sip:1012@192.168.0.24>;tag=OfcYIGGy9WfXV5Mccen4eDK8LbiM23SR
To: "1015" <sip:1015@192.168.0.201>;tag=1r000Km00ZmFQ
Call-ID: d897f7d0-21c9-123b-f4a7-000c29e7aea9
CSeq: 26829 BYE
User-Agent: VoIP
Content-Length:  0

编号9:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.0.24:5060;rport=5060;branch=z9hG4bKPjSS1VmZXhcsqLblXHayM3E6vlR-i4rlSu
From: <sip:1012@192.168.0.24>;tag=OfcYIGGy9WfXV5Mccen4eDK8LbiM23SR
To: "1015" <sip:1015@192.168.0.201>;tag=1r000Km00ZmFQ
Call-ID: d897f7d0-21c9-123b-f4a7-000c29e7aea9
CSeq: 26829 BYE
User-Agent: FreeSWITCH-mod_sofia/1.10.7-dev+git~20210720T181005Z~4c04914003~64bit
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, PRACK, NOTIFY, PUBLISH, SUBSCRIBE
Supported: 100rel, timer, path, replaces
Content-Length: 0

关键说明:

1. INVITE(编号1)中的Supported头域中携带100rel表示发起方支持该机制

2. 如果INVITE发起方支持100rel,INVITE接受方支持100rel, 则INVITE接受方在临时应答1xx(编号3)中携带Require: 100rel
    
    3. 如果INVITE发起方支持100rel,INVITE接受方不支持100rel, 则INVITE接受方在临时应答1xx不能携带Require: 100rel
    
    4. 如果INVITE发起方不支持100rel,那么无论INVITE接受方是否支持100rel, INVITE接受方都不能在临时应答1xx不能携带Require: 100rel

5. INVITE发起方收到1xx响应中如果有100rel要求,则需要发送PRACK(编号4)进行确认

6. 由于PRACK是一个请求,因此,INVITE接受方需要作出响应(编号5)

7. 100 Trying不使用100rel机制.(原因是100 Trying是hop-by-hop的, PRACK是用于end-to-end)

SIP协议之PRACK机制相关推荐

  1. sip协议之网络传输方式

    SIP协议是一个基于互联网的应用层协议,支持的网络传输方式有三种: UDP.TCP.TLS.    一.UDP       UDP是在SIP协议中比较常用的传输方式.UDP是不可靠的,可能会出现丢包, ...

  2. SIP协议标准和实现机制

    1.SIP       SIP论坛具有以下四个工作组:市场工作组.业务提供工作组.认证工作组.SIP设备工作组.        SIP协议是由IETF工作组制定的,用于在IP分组网络上建立.修改以及终 ...

  3. SIP协议-04 SIP头域

    文章目录 1 General-Header通用头域 1.1 Accept 1.2 Accept-Encoding 1.3 Accept-Language 1.4 Call-ID 1.5 Contact ...

  4. 视频会议H.323协议SIP协议

    什么是视频会议?什么是H.323?SIP是什么协议?_系统 SIP or H.323我们应该选择谁?又如何实现互通?(上篇) - 知乎 https://zh.wikipedia.org/wiki/H. ...

  5. 阐述:SIP协议是什么

    sip协议是什么?可能刚刚接触这个协议的朋友会掌握不好它的定义.那么首先我们要了解一下,目前企业中大多数VoIP应用都使用H.323协议,但是,随着越来越多的企业研究SIP协议,不久的将来基于SIP协 ...

  6. SIP协议(基础技术知识)

    SIP协议(基础技术知识) SIP(Session InitiationProtocol)协议是Internet多媒体通信和控制协议体系的一部分,该协议族包括会话描述协议(SDP).会话发布协议(SA ...

  7. SIP协议学习2-pjsip

    一.    在windows下利用vc6.0编译pjsip源码 首先阅读文档readme.txt,查找在win32平台源码的编译方法.自己总结方法如下: a.设置pjsua为当前活动工程 b.因为编译 ...

  8. sip协议的功能及其应用

    H.323协议簇 1.1基本概念 H.323是ITU-T第16工作组的建议,H.323由一组协议构成,其中有负责音频与视频信号的编码.解码和包装,有负责呼叫信令收发和控制的信令,还有负责能力交换的信令 ...

  9. SIP协议详解(中文)-6

    由于MIME包体是在"inner"消息中的,实现中通常会加密MIME指定的头域,包括:MIME-Version,Content-Type,Content-Length, Conte ...

最新文章

  1. android 置灰不可点击,Android Studio 运行按钮灰色的完美解决方法
  2. 全国大学生智能车智能汽车竞赛车模检查规范
  3. C++11新特性中的匿名函数Lambda表达式的汇编实现分析(二)
  4. 【正一专栏】巴萨西甲冠军遇到挑战
  5. 万字整理,图解Linux内存管理所有知识点
  6. Java字符串的十大问题
  7. 数据科学和人工智能技术笔记 十六、朴素贝叶斯
  8. linux中的住设备号和次设备号
  9. K8S实战之环境部署1.18(一)
  10. web开发中的跨域问题
  11. SpringBoot常见面试题总结二
  12. 商品展示页面html模板,CSS3电商网站商品展示窗UI模板
  13. KVM vCPU创建过程
  14. Linux mkdir、touch、mv、cp等命令的介绍与使用
  15. Java 算法之三色旗
  16. linux下hg无法运行_Linux 无法启动常见的几种原因及解决办法
  17. efm32芯片电压_【经验】基于EFM32G232芯片 ADC采样毛刺问题分析以及解决方案
  18. 大数据促进中小企业快递航运战略三种方法
  19. 世界顶级食材——挑动你的食欲
  20. python微信图片dat转码

热门文章

  1. 低配电脑如何运行lumion高速渲染
  2. 细分到市级的中国数据地图生成模板
  3. 快速云:云计算的发展历程及未来趋势展望
  4. 《Automatic Image-Based WasteClassification》论文笔记
  5. EXCEL05:文本函数
  6. java从弃坑到web
  7. Linux之Centos下解压rar、zip文件的方法
  8. 三个课堂建设解决方案
  9. linux 下查看nginx 版本号
  10. 苹果微信分身怎么弄 苹果微信多开