概述

PRACK消息是sip协议的扩展,在RFC3262中定义,标准的名称是sip协议中的可靠临时响应。

本文简单介绍标准中对PRACK消息流程的描述,以及fs配置PRACK的方式。

环境

centos:CentOS  release 7.0 (Final)或以上版本

freeswitch:v1.10.7

GCC:4.8.5

PRACK消息

SIP协议中的临时响应主要是100、180、183这些。

由于某些场景下早期媒体的临时响应消息比较重要,在RFC3262中对临时响应进行了扩展,可以简单分为普通临时响应和可靠临时响应。

普通临时响应,响应码范围100-199,UAS针对invite消息的普通的临时响应,不需要UAC确认消息,没有“Require: 100rel”和“RSeq”头域。

可靠临时响应,响应码范围101-199,UAS针对invite消息的可靠的临时响应,需要UAC确认消息,使用PRACK确认,与普通临时响应的主要区别在于多了两个头域,“Require: 100rel”和“RSeq: 1852321830”。

PRACK,可靠临时响应的确认消息,由UAC发起,用来保证可靠临时响应的传递,使用“CSeq: 71146689 PRACK”和“RAck: 1 71146688 INVITE”头域匹配可靠临时响应。

RFC3262中对于UAS和UAC处理可靠临时响应的流程描述。

1, UAS在发送第一个可靠临时响应之后,未收到PRACK确认之前,不能发送第二个可靠临时响应。

2, UAC在收到第一个可靠临时响应之后,发送PRACK确认之前,如果收到第二个可靠临时响应,可以采用丢弃或缓存的处理方式,收到普通临时响应也可以采用丢弃或缓存的处理方式。

freeswitch配置测试

修改conf/sip_profiles/external.xml配置文件。

<param name="enable-100rel" value="true"/>

使用10011呼叫137,其中183消息是可靠临时响应,需要PRACK确认。

总结

freeswitch对PRACK的处理和RFC标准基本一致。

如果呼叫场景中早期媒体比较重要,而且因为网络问题经常丢失,就需要开启100rel来保证早期媒体的可靠消息。

空空如常

求真得真

PRACK消息的更多相关文章

  1. sip常用消息实体参考(系网上摘抄,感谢分享)

    1.MESSAGE消息       1)头字段填写说明       Call-id:                 必选       CSeq:                   必选       ...

  2. SIP:100rel 扩展

    SIP:100rel 扩展 100rel扩展即是对中间状态响应的确认(即1xx的响应码).原先在sip里,只有针对invite请求的200ok响应才会有ack,那么当中间状态响应携带重要的会话参数信息 ...

  3. sip会话流程以及sip介绍(2)

    下面我们通过一个简单的场景例子来简单介绍一下 SIP 会话流程. Tom 和 Jerry 是非常好的伙伴,Tom 在他的 PC 上使用一个 SIP 的应用程序呼叫 Internet 上另一个 SIP ...

  4. 消息队列——RabbitMQ学习笔记

    消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...

  5. PHP实现RTX发送消息提醒

    RTX是腾讯公司推出的企业级即时通信平台,大多数公司都在使用它,但是我们很多时候需要将自己系统或者产品的一些通知实时推送给RTX,这就需要用到RTX的服务端SDK,建议先去看看RTX的SDK开发文档( ...

  6. 消息队列 Kafka 的基本知识及 .NET Core 客户端

    前言 最新项目中要用到消息队列来做消息的传输,之所以选着 Kafka 是因为要配合其他 java 项目中,所以就对 Kafka 了解了一下,也算是做个笔记吧. 本篇不谈论 Kafka 和其他的一些消息 ...

  7. 一步步开发自己的博客 .NET版(10、前端对话框和消息框的实现)

    关于前端对话框.消息框的优秀插件多不胜数.造轮子是为了更好的使用轮子,并不是说自己造的轮子肯定好.所以,这个博客系统基本上都是自己实现的,包括日志记录.响应式布局.评论功能等等一些本可以使用插件的.好 ...

  8. MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息

    MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二 ...

  9. angular实现统一的消息服务

    后台API返回的消息怎么显示更优雅,怎么处理才更简洁?看看这个效果怎么样? 自定义指令和服务实现 自定义指令和服务实现消息自动显示在页面的顶部,3秒之后消失 1. 显示消息 这种显示消息的方式是不是有 ...

  10. SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)

     SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...

随机推荐

  1. 【设计模式】使用 go 语言实现简单工厂模式

    最近在看<大话设计模式>,这本书通过对话形式讲解设计模式的使用场景,有兴趣的可以去看一下. 第一篇讲的是简单工厂模式,要求输入两个数和运算符号,得到运行结果. 这个需求不难,难就难在类要怎 ...

  2. vue全家桶进阶之路2:JavaScript

    JavaScript(简称"JS")是当前最流行.应用最广泛的客户端脚本语言,用来在网页中添加一些动态效果与交互功能,在 Web 开发领域有着举足轻重的地位.JavaScript ...

  3. pages.json 文件:globalStyle 全局配置

    globalStyle 用于设置应用的状态栏.导航条.标题.窗口背景色等. 属性 类型 默认值 描述 平台差异说明 navigationBarBackgroundColor HexColor #F7F ...

  4. Error: Cannot find module ‘webpack-cli/bin/config-yargs‘

    今配置一个webpack-dev-server进行服务端渲染时老是不正确 npm run dev 就崩了 起初的配置为 "devDependencies": { "web ...

  5. OCR -- 文本检测

    目录 目标检测: 文本检测: 检测难点: 检测方法: 基于回归的文本检测 水平文本检测 任意角度文本检测 弯曲文本检测 基于分割的文本检测 代码示例 可视化文本检测预测 DB文本检测模型构建 back ...

  6. vulnhub_jangow

    来源 vulnhub:https://www.vulnhub.com/entry/jangow-101,754/ 描述 难度:简单 这在 VirtualBox 而不是 VMware 上效果更好 我这里 ...

  7. 在DevExpress的GridView的列中,使用RepositoryItemSearchLookUpEdit控件实现产品列表信息的展示和选择

    有时候,我们为了方便,我们往往使用扩展函数的代码方式创建很多GridView的操作功能,如在随笔<在DevExpress中使用BandedGridView表格实现多行表头的处理>中介绍过多 ...

  8. 2023-06-07:Redis 持久化方式有哪些?以及有什么区别?

    2023-06-07:Redis 持久化方式有哪些?以及有什么区别? 答案2023-06-07: Redis提供了两种持久化机制:RDB和AOF. RDB RDB持久化是将Redis当前进程中的数据生 ...

  9. RT_object

    以下图片来自"张世争"的微博  

  10. JavaScript判断两个数组相等的四类方法

    在JavaScript中,数组本质上是一种特殊的对象,它的类型值会返回 object. 如果我们需要比较两个数组是否相等,不能像比较基本类型(String.Number.Boolean等)一样,使用 ...