SIP:100rel 扩展
SIP:100rel 扩展
100rel扩展即是对中间状态响应的确认(即1xx的响应码)。原先在sip里,只有针对invite请求的200ok响应才会有ack,那么当中间状态响应携带重要的会话参数信息时,例如183响应,客户端是否收到响应就没有ack请求了,于是就定义了prack这一请求消息,即对中间状态响应的确认请求。当sip发送者支持这一扩展时,及在support头域增加这个100rel消息,当server端给与1xx响应时,可以在头域里的require字段要求这一100rel的能力。此时,sip发送者,发送prack消息。
PRACK用于保证1**(除100外)的可靠传输,如果1**响应中的的Require头部中带有100rel这个参数,那么client端收到这个1**后,就需要发PRACK保证这个1**的可靠传输,当server端收到PRACK后,说对端已经收到了这个1**,此时server需要回PRACK的200响应。
按照RFC3261,,如果请求中有100rel标志,UAS必须用可靠传输的方式发送非100的临时响应(101-199),如果UAS不愿意这样做,它必须利用420(Bad Extension)拒掉这个请求.
假设UAC接收到需要可靠传输的非100临时响应后(101-199),它必须用PRACK方法创建一新请求发送给UAS,以确认已收到此响应,UAS会回应一200OK。
有的流程有PRACK,说明它有100rel的支持,没有PRACK说明不支持100rel。
UAC发起的INVITE中含有Supported: 100 rel,而UAS也支持该扩展并且在183响应中有Require:100rel,说明接下来会话中,对所有100以外的1xx响应,均要有PRACK回应。
uac如果不支持100rel,但uas要求支持100rel(Require:100rel),uac 发送CANCEL,切断会话。
uac如果不支持100rel,但uas也不支持或不要求支持100rel,只是在后面的过程中,uac对应接收到的临时响应,如180,183等,不需要发送prack回应而已,与是否会出现183没有关系。
100rel是一个任选标记,如果INVITE请求的Supported头域中包含该标记,说明发送请求的UAC支持PRACK扩展。
supported:100rel与required:100rel的区别在于,后者是一个强制性要求,要求对方必须支持prack,否则通话无法建立
SIP:100rel 扩展的更多相关文章
- 使用c/c++扩展python
用python脚本写应用比较方便,但有时候由于种种原因需要扩展python(比如给程序提供python接口等). 之前一直想整理下,今天终于坐下来把这件事情给做了,这里记录下,也方便我以后查阅. 说明 ...
- SIP简介,第1部分:SIP初探
说明:以下内容来着之前下载的一份文档,现将概念部分摘录在BLog,完成文档将放在文件中. SIP简介,第1部分:SIP初探 时间:2006-04-07作者:Emmanuel Proulx浏览次数: 2 ...
- Python - SIP参考指南 - 介绍
介绍 本文是SIP4.18的参考指南.SIP是一种Python工具,用于自动生成Python与C.C++库的绑定.SIP最初是在1998年用PyQt开发的,用于Python与Qt GUI toolki ...
- SIP简介
说明:以下内容来着之前下载的一份文档,现将概念部分摘录在BLog,如需要完整文档将放在文件中或留言. SIP简介,第1部分:SIP初探 时间:2006-04-07作者:Emmanuel Proulx浏 ...
- [SIP00]SIP 概念总结
SIP --------------------------- Session Initiation Protocol --------------------------- create, ...
- PJSUA2开发文档--第七章 呼叫 Calls类
7 呼叫Calls 呼叫由Call类处理 7.1 子类化Call类 要使用Call类,应用程序应创建子类,如: class MyCall : public Call { public: MyCal ...
- PJSUA2开发文档--第五章 帐户(号)Accounts
第五章 帐户(号) 帐户提供正在使用该应用程序的用户的身份(或身份).一个帐户有一个与之相关的SIP统一资源标识符(URI).在SIP术语中,该URI用作该人的记录地址( Address of Rec ...
- 开源网络抓包与分析框架学习-Packetbeat篇
开源简介packbeat是一个开源的实时网络抓包与分析框架,内置了很多常见的协议捕获及解析,如HTTP.MySQL.Redis等.在实际使用中,通常和Elasticsearch以及kibana联合使用 ...
- IM协议
四种协议英文全称与简称 1->IMPP(Instant Messaging And PresenceProtocol):即时信息和空间协议 2->PRIM(Presence and Ins ...
随机推荐
- python 简化数据结构的初始化一
写在前面 在it行业混了差不多十年了,懊悔自己开始写博客的时间太晚.有那么一天就开始写了,也不知道自己会不会坚持写下去.不知不觉日子过到了今天,回头看看,也算是坚持写了.现在写博客的感觉好奇怪,一天天 ...
- SurfaceView概述和基本使用
Android屏幕刷新一遍时间间隔为16ms,如果view能够在16ms内完成所需要执行的绘图换作,那么在视觉上,界面就是流畅的,否则就会出现卡顿现象,在很多情况下,这些逻辑处理又是必须的,为了解决这 ...
- osg 在fbx模型中添加自定义节点
- Django补充之模板语言
路由系统 Django页面详情以及分页 举个例子: 有一组后台数据,需要展示到页面上,但由于数据量较大,那就需要做分页了吧,那么怎么才能将页面详情和分页都融合进去呢,Django里的路由系统加上正则表 ...
- PYTHON指定国内PIP源
一.LINUX: vi ~/.pip/pip.conf 输入内容: [global]index-url = http://pypi.douban.com/simple/[install]trusted ...
- iOS-浅谈iOS中三种生成随机数方法
ios 有如下三种随机数方法:
- 【c# 学习笔记】c#中的语句
1.条件语句: if语句: bool condition = true; if (condition) { } else if (condition) { } else { } switch语句: b ...
- 【Aizu - 0189】Convenient Location (最短路 Floyd算法)
Convenient Location 直接翻译了 Descriptions 明年毕业的A为就业而搬家.就职的公司在若干城市都有办公室,不同天出勤的办公室也不同.所以A在考虑住在哪去各个办公室的时长最 ...
- Memcached内存调优及建议
一.Memcached调优 目标: 提高内存命中率 减少内存浪费 增加内存重复利用率 问题: 存不满Chunk 内存数据大量堆积 slab不能被page整除 page不能被Chunk整除 方向: 调整 ...
- Ubuntu18.04命令行安装mysql未提示输入密码,修改mysql默认密码
Ubuntu18.04命令行安装mysql未提示输入密码,修改mysql默认密码 mysql默认密码为空 但是使用mysql -uroot -p 命令连接mysql时,报错ERROR 1045 (28 ...