SIP可靠性(SIP Reliability)

根据RFC3261,SIPUA必须支持TCP及UDP底层传输协议。这两种方式除了使用方式不一样之外,对SIP协议自身的影响主要体现在可靠性处理上。

 

SIP可靠性机制主要是为了支持不可靠传输层协议,如UDP。当SIP使用的传输层协议为TCP或TLS时,这种机制将不再使用,因为TCP协议能处理消息重发和报告目的端不可达到问题等。

 

SIP使用UDP传输层协议时,必须提供机制解决消息包丢失和消息包传输次序混乱问题。SIP的可靠性机制包括:
1 重传时钟
2 CSeq值的增长
3 ACK

 

时钟一般在事务中使用,而接受到的CSeq值并不一定是严格增一的。

 

 

SIPon UDP vs SIP on TCP
TCP虽然可以支持传输可靠性,但必须知道TCP重发消息包的时间。虽然我们相信使用TCP连接时,但把数据包传给传输层时,默认其能将包成功的发送到对端;但如果旧包被新包代替,而旧包未到达对端则无需继续传送。而UDP允许SIP应用进行时间和可靠性的控制,所以对协议本身更有优势。
一般TCP连接带来的资源消耗较大,而像Proxy这种业务繁忙的单元却很难支持大量的TCP连接。
而之所以要支持TCP,是因为一些防火墙不支持UDP包的穿越。使用TCP,它可以简单的处理SIP消息,并打开通道进行相关RTP流的传输。
但综合来看,TCP作为SIP传输层的应用比较少见,在将来一段时间该状况可能不变。

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

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

相关文章

可以无限增加iPhone 的图标吗?

可以无限增加iPhone 的图标吗?iPhone屏幕上每个图标都对应一个应用程序,目前苹果商店中应用程序数量已经超过40万个,我们又能在手机里放多少呢?有人可能会说那要取决于iPhone的存储容量有多大,确实如此,那么如果假设空…

在日本山区流域使用支持向量机和 bagging、boosting 和 stacking 集成机器学习框架改进滑坡评估--文献阅读

为了在基于过程的模型中准确表示边坡稳定性,有必要包含大量涉及滑坡几何形状和内部结构的局部特征的特征。这包括但不限于斜坡的分层和不连续性、运动裂缝、裂片、陡坡、地垒/地堑结构、降雨、空气和土壤温度、土壤水分含量、许多点的地下水位、地表和深度但是&…

android 蒙版图片带拖动_推荐一个好用小巧的Android引导蒙版(浮层)库

更新:目前该库已更新v2.0版本,修改了调用api,详细使用可以看:可能是最好用的Android引导层库前言每当一个项目开发一个新功能,总会想办法及时让用户得知有这样一个新功能,这时通常会采用引导页或者蒙版(浮层…

用户代理行为

概述 用户代理分两种:UAC和UAS。区分的依据在于请求方和响应方。 当一个请求发生之时,即使用某个方法,根据请求方和响应方产生了UAC和UAS,从而可以建立起事务(Transaction)来。所以UAC和UAS是对某个事务而言…

AX 2009 界面伸缩功能

界面伸缩功能 在一个界面下,放置多个Grid之后,数据太多,要有个能推拉伸缩的功能,如下图: 中间横条可以上下拉动,折叠处可以关闭显示整个Grid 横条要代码实现,折叠只要设置一下Group就行。 纵向空…

使用增强回归树和随机森林模型进行溪流水质预测--文献阅读

流域特征和气候变量(例如地形、土壤、气候数据)也会影响河流水质。例如,陡坡可能会通过将污染物转移到溪流中来影响溪流水质,从而导致水质恶化。同样,土壤特性也会影响水质。例如,以母岩为主的流域显示出较…

解决方案架构师我需要懂代码吗_架构师不写代码,能行吗?

原标题:架构师不写代码,能行吗?从什么时候起,技术角色的提升就意味着脱离技术与交付?CTO 不写代码已经引起诸多争议了,架构师也不写代码,能行吗?就目前看来这似乎没什么问题。毕竟&a…

机器学习在地质灾害的文章--文献阅读

第一篇 Improved landslide assessment using support vector machine with bagging, boosting, and stacking ensemble machine learning framework in a mountainous watershed, Japan | SpringerLinkHeavy rainfall in mountainous terrain can trigger numerous landslide…

取消一个请求(Cancel)

CANCEL请求,就像名字所说的,是用来取消客户端发起的上一个请求的。 CANCEL请求UAS去终止上一个请求并且对上一个请求产生一个错误的应答。CANCEL对UAS已经给出终结应答的请求无效。所以,CANCEL请求的最大用处是取消需要服务器长时间处理的请求…

NYOJ88(数论)

题意明确,让计算出起始有m个金片的汉诺塔金片全部移动到另外一个针上时需要移动的最少步数是多少?(由于结果太大,现在只要求算出结果的十进制位最后六位) 解题思路:大家都很熟悉汉诺塔求移动次数公式为f(n1…

Linq 学习笔记(二)

Linq 学习笔记(二) 下面就来介绍一些查询的示例: 1。Linq查询 var racers from r in Formula1.GetChampions()where r.Wins > 15 && (r.Country "Brazil" || r.Country "Austria") select r;foreach (var …

机器学习在水文地质方面的文章--文献阅读

第一篇 Ensemble machine learning paradigms in hydrology: A review - ScienceDirecthttps://www.sciencedirect.com/science/article/pii/S0022169421003139?via%3Dihub第二篇 Stream water quality prediction using boosted regression tree and random forest models …

查询能力(SIP OPTIONS)

SIP方法OPTIONS允许一个UA来查询另外一个UA或者proxy服务器的能力。这个提供客户端一个手段来查询服务端支持的方法,内容类型,扩展,codecs等等。比如,在客户端试图在INVITE请求头中增加一个请求字段选项的时候,它并不知…

单体预聚合的目的是什么_高分子化学实验指导书-修改-2012

高分子化学实验指导书任课教师姓名:王小慧王小英所用教材:《高分子化学实验》何卫东主编中国科学技术大学出版社选读参考书:《高分子化学实验》梁晖卢江主编化学工业出版社一、教学形式1、课前,学生通过阅读参考书和《高分子化学实…

MemDC,GDI绘制注意点

最近绘制老犯同样的错误,记录下: 1.MemDC中的MemBmp大小一定要设定好,经常设小了,后面的绘不出来,同时最后dc.bitblt时,大小一定要和MemBmp 一致,同样经常是MemBmp必变了,bitblt的rcDest没变&am…

基于集成学习的不平衡数据集分类问题研究--文献阅读

参考文献 基于集成学习的不平衡数据集分类问题研究 - 中国知网https://kns.cnki.net/kcms/detail/detail.aspx?dbcodeCMFD&dbnameCMFD202201&filename1021697818.nh&uniplatformNZKPT&vK9J_5NETTyZXPhDr5D6KwISCv2zm0skRm7rEZ0KmYS0Yv_zs562Re8oiwR5h_ylK 文…

SIP注册

注册服务为特定地区的位置服务创建绑定关系,这个绑定关系是用来建立包含一个或者多个联系地址的address-of-recordURI。因而,当那个地区的proxy接收到一个请求,这个请求的Request-URI和address-of-record的记录匹配,那么这个proxy…

profile 安卓work_androidWorkProfileGeneralDeviceConfiguration 资源类型

androidWorkProfileGeneralDeviceConfiguration 资源类型androidWorkProfileGeneralDeviceConfiguration resource type2020/9/22本文内容命名空间:microsoft.graphNamespace: microsoft.graph注意: 适用于 Intune 的 Microsoft Graph API 需要适用于租户…

[读书笔记]TCP/IP详解V1读书笔记-1

TCP数据单元:tcp segment UDP数据单元:udp datagram IP数据单元:IP datagram 链路层单元:frame --------------------------------------- 应用层: SMTP:简单邮件传输协议 FTP:文件传输协议 DNS…

pandas划分数据

1.根据列位置划分 execldata pd.read_excel(filepath) # 获取列数 bandscount execldata.shape[1] #去除最后一列数据类别 bandscount bandscount - 1 classifypointdata execldata[:, 0:bandscount] classifypointlabel execldata[:, -1] 2.根据字段名称进行划分 exec…