理解会话

一 会话的初始化
 Session用于进行媒体流传送。当一方发出请求,而另外一方或多方接受请求并通过信令交互成功后才能建立会话。
 一次呼叫只能建立一次会话,但可以建立多个对话(Dialog),因为接受请求的可能不止一个。

1 UAC的处理
1.1 创建初始IVITE请求
初始的IVITE可以带有消息体。SIP使用提供/回答模型来进行会话协商,即提供者发送一些提议的媒体信息,而另一方可以回应选择的媒体信息(不一定在发送来的媒体中选择)。而提供/回答的交互是在对话中进行的,所以初始请求可能造成多个独立的对话。
而提供/回答模型有多个限制,如在这个规范下,提供和回答媒体信息只能存在于INVITE和回应及ACK中。
作为初始的请求,还有以下限制:(该限制在以后的扩展中已经被修改,详见draft-ietf-sipping-sip-offeranswer-04.txt)
1)初始提供媒体信息可以出现于INVITE,否则只能在2**回应中。
2)如果提供媒体信息在INVITE中,回答媒体信息可以出现在1**或2**回应中,1**中的媒体信息只是2**的拷贝。
  注意,UAC只是处理第一个提供媒体信息。
3)如果初始提供媒体信息出现在2**回应中,则回答媒体信息必须在对2**回应的ACK中。
4)UAC不能在一个媒体提供信息正在进行处理过程中提出新的一个媒体提供信息(即不能在没收到回答媒体信息之前发送新的提供媒体信息)。
5)在一个事务之中UAS只能提供一次媒体信息,而UAC无此限制。
注:以上的限制仅作用于Content-Disposition头字段为session时(如果该字段缺失,则Content-Type字段为application/sdp时Content-Disposition头字段为session,其它时候为render)。

1.2 处理IVITE回应

2 UAS的处理
2.1 处理INVITE消息
注:此节中所说的INVITE消息均为初始化会话的INVITE。
如果INVITE中不包含会话描述,则UAS应在2**的回应中加上会话描述,转变为了媒体提供信息方。
对于INVITE的处理,UAS可以回应处理、接受、重定向或者拒绝。
2.1.1 处理
如果UAS暂时无法回应请求,则可以选择回应处理中消息,特别是回铃消息。该类消息可以发送任意多次,但不是可靠性传送(无ACK回应)。
代理服务器在处理事务时,如果一段时间内没有消息回应的话则会取消该事务,而该类消息可以用于延续事务生命(除100外)。
2.1.2 拒绝
如果INVITE提供媒体信息,而UAS无法接受的话回应488,这类消息应该包括一个Warning消息头。
2.1.3 接受
2**回应中应该包括Allow和Supported消息头,可能包括Accept消息头。这些告诉UAC在呼叫过程中允许的特性。
如果作为回答媒体信息方,之前的回应中没有回答媒体信息,则在2**中必须包含媒体信息。
如果2**没有ACK的回应,虽然建立起了对话,但也应发送BYE来结束会话。


二 会话的修改
在《理解对话》一章中说过,通过目标更新请求可以修改对话(如修改对话的远端目标)。而此节主要讲的是如何修改会话,如地址、端口、增减媒体流等。这些是通过在同一对话中发送INVITE消息来实现的,即re-INVITE(该消息可以同时修改会话和对话)。UAC和UAS都具有re-INVITE功能。
1 UAC行为
同样的提供-回应模型同样适用于re-INVITE消息。re-INVITE同样可以不带有媒体描述信息,而随后的处理(包括ACK响应)跟普通INVITE一样。
不过媒体信息提供方应该修改会话版本(如果存在的话)。
跟普通INVITE不同的是,因为是在同一对话会中发送的INVITE消息,所以是点到点的交互。即re-INVITE不会衍生(fork),Request-URI不是AOR(addressof record),而是对话目标。
虽然UA可以同时建立多个事务,但在同一个对话中只允许一个事务存在,除非旧事务正处在completed、confirmed或者terminated状态中。
2 UAS行为
如果收到的新的INVITE消息中的CSeq序号比旧的要小,则回应500且带有Retry-After消息头。


三 会话的结束
对话内BYE的发送可以结束跟该对话相关的会话(如re-INVITE的协商失败,则关闭新和旧的对话及会话)。而BYE的发送必须在建立对话之后,而建立对话之前取消则应使用CANCEL方法。UAC可以在对话初始和确定状态时发送BYE,而UAS只能在对话确定状态时发送BYE。而且UAS在对话确定状态时,只能在收到对2**的ACK或事务超时的时候才能发送BYE。
一般来说,呼叫发起方在最终回应未到之前使用CANCEL来结束,而最后回应到了之后使用BYE方法;被叫方只适用BYE方法,当被叫摘机之后,2**将被产生所以只能等ACK到来之后才能发送BYE。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434927.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

st语言 数组的常用方法_ST语言编程手册

ST语言编程手册目录1. ST基本原理.......................................................................................................... 61.1语言描述..........................................................................................................…

arcgis矢量之间的空白如何快速填充

填充之前 中间有空白处需要填充完整(前提时候得是一个图层,如果是两个图层就无法填充) 点击开始编辑 点击创建要素 点击自动完成面 开始绘制 绘制完成如下

Session、Dialog和Transaction的区别

会话(Session)跟SDP内信息相关。在SDP中,多媒体会话指的是一组的媒体发送方和接收方及媒体流从发送方流向接受方。会话是由SDP里的username, session id, network type, address type,和源处地址元素来确定的。只有当媒体协商成功后&#xff…

从委托而起(二)认识委托

新建一个控制台应用程序,这个程序的作用是为一个字符串改变样子,所以起个名字叫Costumeball吧.嘉宾(字符串)通过一个个化妆间(函数)变得漂漂亮亮或奇奇怪怪后一起唱歌跳舞.好享受.声明一个委托,委托一般出现在类之外,本例随便delegate void Prink(string str);创建与委托管理的…

argis中4波段影像变3波段

解决方法:波段合成 4波段影像属性 工具 结果

SIP结构

SIP结构 SIP单元: UAC、UAS、Stateful proxy、Statelessproxy和registrar五种。 SIP是分层结构,每层之间是相对独立的。如下 -------------------------------------------- | TransactionUser(TU) | …

python批量压缩图片

#coding:utf-8 from PIL import Image import os#图片压缩批处理 def compressImage(srcPath,dstPath):for filename in os.listdir(srcPath):#如果不存在目的目录则创建一个,保持层级结构if not os.path.exists(dstPath):os.makedirs(dstPath)#拼接完整的文件或文件…

idea怎么将本地文件和远程git对比_IDEA新建本地项目关联远程git仓库

现在远程git仓库创建一个repository,然后本地创建项目,最后进行关联。三板斧,打完收工。第一步、第二步地球人都知道,略过不表,第三步比较关键,举个例子:0、创建本地Git仓库:VCS -&g…

转:min(x,y)高效算法

命题:给定整数x,y,计算较小值m。 两个数的差异,在于他们的差,于是想到计算z x - y,我想也许可以利用这个中间值,利用一些巧妙的位运算求出,可是貌似还是比较困难。于是我打算重新理一下思路…

系统运维安全管理办法_运维安全管理系统-堡垒机

随着信息化的快速发展与普及,业务运行已于信息化系统密不可分,由于业务需求的不断拓展,信息化系统的建设也在不断深入与增长,企业的业务系统变得日益复杂,信息化系统俨然已经成为了业务运行保障的重中之重,…

asp.net 下载文件

//源文件名称 //提供下载的文件,不编码的话文件名会乱码 //private string fileName HttpContext.Current.Server.UrlEncode("规范.rar"); string fileName "D:\我的文档\Visual Studio 2010\WebSites\WebSite14\a00.zip"; …

SIP代理服务器(1)

SIP代理服务器分两种: 1)无状态代理服务器:简单的转发功能,通过请求信息来选择转发的目的和路由。消息一旦转发立即丢弃。 2)有状态代理服务器:记录到来的请求和发送的请求的信息(特别是事务状态…

arcgis坡度结果有误或z因子前有感叹号

在地理坐标系下我们做坡度的时候arcgis的z因子会出现感叹号 这样作出的效果如下 通常这样的效果是错误的 解决方法: 原理:应为在地理坐标系下xy的单位是度或者十进制的,就导致z与xy的测量单位不同,所有我们就需将DEM数据投影到投…

怎么修改提交git是的用户名_Git 修改用户名以及提交邮箱

问题背景:在已毕业师兄的电脑上提交自己的 Github 代码,(尽管有重新设置了 自己的SSH),但是 Github网站提交结果却显示师兄提交的:验证当前本地属性:怎么知道本地有设置?git config --local --list 看一眼。…

企业效益真的向好么?

根据最新消息,1至7月,全国公共财政收入66739.92亿元,同比增长30.5%。全国公共财政支出51385.06亿元,同比增长29.7%。财政部部长谢旭人昨日表示,财政收入增长较快,是经济运行总体良好及企业效益提高的综合反…

基于集成提升和 Bagging 的地下水潜力预测机器学习模型文件阅读

文章连接:Ensemble Boosting and Bagging Based Machine Learning Models for Groundwater Potential Prediction | SpringerLinkhttps://link.springer.com/article/10.1007/s11269-020-02704-3 一、研究区: Dezekord-Kamfiruz 流域是伊朗法尔斯省的一部分 二、方法:

SIP代理服务器(2)

4请求转发 对于上一步确定的每一个目的地,proxy转发请求都遵循下列步骤: 1)、 拷贝一个接收到的请求 2)、 更新Request-URI 3)、 更新Max-Forwards头域 4)、 可选增加一个Record-Route头域 5)、…

sklearn svm 调参_SVM(Support Vector Machine)

SVM是一种二元分类模型(当然它也可以处理回归问题),它通过训练样本寻找分隔两类样本的最优决策边界(超平面),使得两类样本距离决策边界的距离最远(例如H3)。其中距离决策边界最近的样本称为支持向量(即深色的苹果和香蕉),支持向量所在的与决策…

SAGA-GIS软件下载

官网: SAGA - System for Automated Geoscientific Analyseshttps://saga-gis.sourceforge.io/en/index.html点击下载按钮 点击后等几秒即可下载 下载时间过长 下载完解压即可使用

SIP路由

本文主要讨论的是跟SIP消息发送的路由选择和相关头域。SIP消息传输路径依靠的是路由集和目标地址(remotetargetURI)。主要参考的是RFC中的第八章(一般用户代理行为)、第十二章(对话)、第十三四章&#xff0…