博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SIP进行时
阅读量:6115 次
发布时间:2019-06-21

本文共 1984 字,大约阅读时间需要 6 分钟。

一直以“简单”著称的SIP其实也没那么简单,不过任何事物想掌握它都很困难。

这篇文档旨在不断的记录SIP使用过程中遇到的各种疑惑和问题。

一、响应422 Session Interval Too Small

  发送的Invite消息如下:

INVITE sip:806@192.168.8.11 SIP/2.0Via: SIP/2.0/WS 9srpbdc87v1s.invalid;branch=z9hG4bK774681Max-Forwards: 69To: 
From: "801"
;tag=ii5b0f08lbCall-ID: 0egn2qmnq0hhrho2ccllCSeq: 1869 INVITEX-Can-Renegotiate: trueContact:
Content-Type: application/sdpSession-Expires: 90Allow: INVITE,ACK,CANCEL,BYE,UPDATE,MESSAGE,OPTIONS,REFERSupported: timer,ice,replaces,outboundUser-Agent: JsSIP 0.7.9Content-Length: 2613v=0o=- 6735531044150428780 2 IN IP4 127.0.0.1……

  收到的响应如下:

SIP/2.0 422 Session Interval Too SmallVia: SIP/2.0/WS 9srpbdc87v1s.invalid;branch=z9hG4bK774681;received=192.168.8.11;rport=8012From: "801" 
;tag=ii5b0f08lbTo:
;tag=Q8XBrSc8NXHrHCall-ID: 0egn2qmnq0hhrho2ccllCSeq: 1869 INVITEUser-Agent: FreeSWITCH-mod_sofia/1.4.15+git~20150828T032007Z~014bbaf57d~32bitAccept: application/sdpAllow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY, PUBLISH, SUBSCRIBESupported: timer, path, replacesAllow-Events: talk, hold, conference, presence, as-feature-event, dialog, line-seize, call-info, sla, include-session-description, presence.winfo, message-summary, referMin-SE: 120Content-Length: 0

  原理:SIP(RFC3261)没有提供已存在会话保持激活的机制,虽然可以终端可以使用某些方式了解会话是否存活,但proxy却无法做到这一点。Re-INVITE和UPDATE方法就基于此进行的,这些刷新请求的周期是通过协商来确定的。当在规定的周期内没有新的刷新请求到来,即认为该会话结束。为了控制通过re-INVITE和UPDATE方法进行周期性的会话(session)刷新,以判别会话两端是否存活,增加了两个头域:Session-Expires(会话的生命期)和Min-SE(会话时钟的最小值)。

  其中Min-SE头域中的值只能增加不能减少,Session-Expires头域的值只能减少不能增加,但不能少于Min-SE头域中的值。

  当Proxy无法接受请求中的Session-Expires值时(小于Min-SE值),Proxy会回复422,UAC会继续发起请求,但会携带422中的Min-SE头域;

  当请求到达UAS时,UAS会在2**的应答中Session-Expires头域中填写最后的结果,且会携带参数refresher(指示当前的UAC或UAS谁来进行刷新),2**的回复,Proxy无法修改Session-Expires头域。

  问题了然。修改Min-SE或者Session-Expires头域满足Session-Expires >= Min-SE就可以了。

  

       

转载于:https://www.cnblogs.com/yoyotl/p/4980817.html

你可能感兴趣的文章
Windows phone 8 学习笔记(3) 通信
查看>>
重新想象 Windows 8 Store Apps (18) - 绘图: Shape, Path, Stroke, Brush
查看>>
Revit API找到风管穿过的墙(当前文档和链接文档)
查看>>
Scroll Depth – 衡量页面滚动的 Google 分析插件
查看>>
Windows 8.1 应用再出发 - 视图状态的更新
查看>>
自己制作交叉编译工具链
查看>>
Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
查看>>
[物理学与PDEs]第3章习题1 只有一个非零分量的磁场
查看>>
深入浅出NodeJS——数据通信,NET模块运行机制
查看>>
onInterceptTouchEvent和onTouchEvent调用时序
查看>>
android防止内存溢出浅析
查看>>
4.3.3版本之引擎bug
查看>>
SQL Server表分区详解
查看>>
使用FMDB最新v2.3版本教程
查看>>
SSIS从理论到实战,再到应用(3)----SSIS包的变量,约束,常用容器
查看>>
STM32启动过程--启动文件--分析
查看>>
垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
查看>>
淘宝的几个架构图
查看>>
Android扩展 - 拍照篇(Camera)
查看>>
JAVA数组的定义及用法
查看>>