SIP并没有为所建立的会话定义存活机制。代理服务器有时会无法判断会话是否还是活动的。例如,当一个用户代理在会话结束时发送BYE消息失败,有关系统方面问题请找博主,或者由于网络问题BYE消息丢失,代理服务器将不会知道会话已经结束。在这种情况下,代理服务器将保持呼叫的状态并且无法知道呼叫状态信息何时失效。

为了解决这个问题,RFC4028为SIP会话定义了一种存活机制。用户代理周期性的发送re-INVITE或UPDATE请求用来保持会话的活动。会话更新请求的间隔通过其定义的协商机制决定。如果在间隔内没有收到会话更新请求,该会话被认为已经终止。用户代理会发送一个BYE消息,代理服务器则将该呼叫的所移除。

UAC通过发送一个携带“supported: timer”头字段的INVITE消息,表明支持Session Timer功能。该请求通过代理服务器传递,所经过的任一个代理服务器都可以依据他们的兴趣建立会话定时器。若请求中没有Session-Expires和Min-SE头字段,代理服务器都可以在请求中插入;否则可修改已存在头字段的值。

Min-SE:会话更新间隔下限,也就是处理这条请求消息的SIP代理的最快会话刷新率。这个头字段的目的是防止怀有恶意的代理服务器设置任意短的更新间隔以致它的邻居代理负荷超载。处理请求的每个代理服务器可以提高这个下限,但是不能降低下限。

Session-Expires:会话更新间隔上限。任何服务于该请求的代理可以降低这个值,但必须大于Min-SE头字段指定的值。

如果Session-Expires的间隔太小(小于代理服务器要维护的Min-SE头字段的值),代理服务器将拒绝这个请求并返回一个422响应,其中包含其所支持的最小时间间隔的Min-SE头字段。UAC使用相应中的最大Min-SE头字段再次尝试发送请求。这样一来,最小定时器就能满足所经过的所有代理服务器的约束条件。

在几次INVITE/422消息的反复传送后,请求最终到达UAS。UAS可以调整会话间隔的值器。之后,它将这个最终的会话间隔放入2xx响应的Session-Expires头字段。Session-Expires头字段还包含一个“refresher”参数用来表示更新的执行者(是当前的UAC还是UAS)。

2xx响应沿代理服务器链返回时,任何代理服务器可以观察这个最终的会话间隔但不能修改它。

通过响应中的Session-Expires头字段,UAC和UAS都知道会话定时器是活动的,它何时终止以及谁更新会话

SIP电话为什么突然断线相关推荐

  1. linux命令行sip电话,基于Linux和MiniGUI的SIP电话终端设计

    0 引言 随着VoIP的迅猛发展,越来越多的个人用户正在使用软件电话.IP电话通过VoIP系统拨打国内和国际长途,IP电话的需求量越来越大,同时,人们对IP电话的要求也越来越高,例如要求IP电话体积小 ...

  2. 【网络通信 -- SIP 电话】项目实战记录 -- SIP 服务器 OPENSIPS 搭建测试与 SIP 客户端 PJSIP 编译安装测试

    [网络通信 -- SIP 电话]项目实战记录 -- SIP 服务器 OPENSIPS 搭建测试与 SIP 客户端 PJSIP 编译安装测试 [1]SIP 服务器 OPENSIPS 搭建 1.1 安装环 ...

  3. 商云通安装(一):电信搭建SIP电话环境

    商云通灵活基础设施,即时可用 使用灵活SIP中继,在云端拨打和接听电话. 免费试用联系销售人员 SIP中继 助力业务 助力构建 功能 全球可扩展性与 云功能强强联合 借助商云通 SIP中继,只需几分钟 ...

  4. 嵌入式linux sip电话开发,基于嵌入式Linux和MiniGUI的SIP电话设计

    0 引言 随着VoIP的迅猛发展,越来越多的个人用户正在使用软件电话.IP电话通过VoIP系统拨打国内和国际长途,IP电话的需求量越来越大,同时,人们对IP电话的要求也越来越高,例如要求IP电话体积小 ...

  5. SIP电话(一)之程控交换机-FreeSWITCH的使用总结

    最近由于项目需要一直在研究Sip电话,Sip电话是基于sip协议的实现voip即网络电话的的功能.那么问题来了?我们打电话都是使用某动,某通,某信的电话卡,这种电话卡是在全国范围内收费的gms卡,如果 ...

  6. 语音通话-sip电话(一)

    语音通话-sip电话(一)--概述 最近有接到一个需求,需要做个语音通话系统,因为本人之前是完全没有相关经验的,内心各种抗拒,可是也只能硬着头皮接了下来,于是开始各种搜索,得到的结果:1.某某公司语音 ...

  7. 【原创】开源基于STM32F429 SIP电话

    本次分享内容: 开源STM32实现SIP电话,通过开发板连接到本地SIP服务器,然后 其它终端通过连接同一个服务器实现,开发板 到 PC/手机/板子进行语音通信的功能. 视频展示 https://ww ...

  8. Freeswitch连接SIP电话

    Freeswitch连接SIP电话 本篇主要介绍如何用freeswitch连接SIP电话,freeshswitch最典型的应用是作为一个服务器(背靠背的用户代理),并用电话客户端软件(一般叫软电话)连 ...

  9. 流媒体通信开发系列索引 -- SIP 电话项目实战系列

    [网络通信 -- SIP 电话]项目实战记录 -- SIP 服务器 OPENSIPS 搭建测试与 SIP 客户端 PJSIP 编译安装测试 [网络通信 -- SIP 电话]项目实战记录 -- PJSU ...

  10. VaxSIPUserAgentSDK_6.8[VaxVoIP SIP 电话]

    VaxVoIP SIP 电话 SDK 提供工具和组件,可在您的软件应用程序中快速添加基于 SIP(​​会话发起协议)的拨号和接听电话.音频和视频会议功能.它加速了具有您自己的 GUI(图形用户界面)和 ...

最新文章

  1. [使用心得]maven2之m2eclipse使用手册之六使用Maven2插件创建一个简单的SSH2项目之jetty篇(一)...
  2. nodeJs 操作数据库
  3. ExcelToDataTable
  4. Ruby on rails Mac开发 入门笔记(一)
  5. 使用注解方式搭建SpringMVC
  6. python字典找相同值_python-找出字典dic中重复值
  7. OneNote中快速笔记怎么打开和删除
  8. 内容分发网络:请简述 CDN 回源如何工作?
  9. 切换linux默认桌面,Debian默认桌面再次切换到Gnome
  10. w ndows10隐藏桌面设置,据说,这是80%的人都不知道的win10隐藏功能
  11. 上古卷轴5怎么加补丁_上古卷轴5:想要装MOD的话,小编教你怎么做!
  12. 《软件开发工具》(第二章)
  13. 亲测可行ie8与ie11共存方法支持win7x64等
  14. axure中备注线_axure 备注怎么写
  15. Oracle归档日志使用情况及自动清理
  16. iOS开发基础知识--碎片41
  17. VB中上传下载文件到SQL数据库
  18. GAN论文精读以及基础讲解
  19. 你的人生你定义!享你所想,无惧冒险
  20. Vue.js学习笔记 2022 04 17

热门文章

  1. 射影几何----蝴蝶定理的证明
  2. 为什么要学习Go语言?
  3. SEO利器 - 网页内容监控之百度自动推送
  4. html 闪白光效果,css3实现图片划过一束光闪过成效
  5. leetcode-Algorithms-350|两个数组的交集II
  6. 初高中计算机课程有哪些,中学信息技术课程纲要(最新整理)
  7. 分布式数字身份的几个“非技术”思考
  8. java.lang.ClassCastException: Ljava.lang.Object; cannot be cast to com.entity.Advertisem异常
  9. arkit 人脸捕捉_iPhone X上的ARKit人脸追踪
  10. Unity 资源池,对象池,Object Poor