sip协议详解_SIP拓展协议RFC3262概述和100rel/PRACK详解

随着基于SIP协议应用场景的增加,目前企业融合通信和语音呼叫中几乎绝大部分的场景中都使用了SIP协议。但是,和传统的PSTN相比,因为一些其他因素的影响,很多人对于基于SIP协议所提供的终端,接入设备和软交换仍然缺乏信心。客户可能仍然对SIP呼叫中出现的问题有着非常大的担心。这些担心也是正常的。事实上,为了进一步提升SIP呼叫的稳定性,SIP协议本身针对传输响应处理方面也做了一些拓展,使用这些拓展用来进一步保证SIP协议传输响应的稳定性。另外,为了保证更新的网络(IMS)正常工作以及和传统PSTN的兼容性,在SIP拓展中,使用了100rel/PRACK的拓展功能,可选标签100rel是SIP响应消息中一个比较常用的拓展功能,这个拓展是通过PRACK method来进行定义的。关于100rel拓展的定义,SIP拓展协议专门针对其属性做了规范说明,此说明在RFC3262中定义。今天,我们针对RFC3262结合相关SIP拓展的相关技术话题做一个完整概述,并且针对实际业务场景中的一些问题进行讨论,希望对读者有所帮助。

1

背景介绍

如果熟悉SIP响应的读者都一定知道,请求和响应是信令协商的基本手段。在RFC3261中规定了响应的定义,响应主要分为最终响应和临时响应。根据其概念名称,读者也大致理解了最终响应和临时响应的基本含义。简单来说,最终响应是可靠的,而临时响应是临时的,不可靠的响应。根据RFC3261-7.2的说明,其定义是:

1xx: Provisional -- request received, continuing to process the request;

https://tools.ietf.org/html/rfc3261#section-7.2
在针对临时响应的定义中,读者可以非常明确地知道,对端已经收到请求,对端正在处理其请求。以下示例说明了启用PRACK的和使用最终响应处理的呼叫:

60daa9c7f3dc9934eb2c4c4bca89a81d.png

在当前的呼叫环境中,包括现代的IMS网络中,呼叫需要经过多个网络环境和处理路径,需要更多的协商和资源支持。因此,在实际呼叫流程中可能发生更多的问题,对端需要耗费一定的时间来处理请求,具体需要处理的内容很多,包括:编码协商,对端服务器资源不足,会话时间太长,编码能力匹配问题,QoS,承载服务,和PSTN接续时间太长都会导致响应丢失的问题。因此,为了保证对端有充足的时间处理请求,UAS先返回一个临时响应通知对端本地正在处理这个请求,现在仅发一个临时性的响应。

2

UAS工作方式说明

根据RFC3262的说明,只要初始的请求包含了一个Supported,它的可选项是100rel,UAS可以对INVITE发送任何非100的响应。这里的初始请求的响应是一个临时的可靠性响应。此规范除了支持INVITE以外,不支持其他的可靠性临时响应的method。如果初始请求包含了Require头域,其包含了100rel可选项的话,UAS必须发送一个非100临时可靠响应。如果UAS不愿意那样处理的话,它必须拒绝此初始请求,返回一个420响应(Bad Extension),并且在响应消息中包含一个Unsupported 头域,可选项是100rel。具体示例,参考后续介绍。

根据RFC3262说明,UAS一定不能通过100(Trying)发送可靠的响应。UAS只能通过101到109中间的响应码发送临时可靠响应。如果请求中既不包含Supported 头域也不包含Require头来表示临时可靠响应功能的话,UAS一定不能发送临时可靠响应。

100(Trying)响应只能支持hop-by-hop之间的响应。因为此原因,这里讨论的可靠性机制是介于end-to-end的响应,因此不能使用100(Trying)。这里,关于end-to-end 和hop-by-hop的使用方式,读者一定要小心理解,因为各种method涉及了代理之间的通信和用户身份安全的问题。例如,BYE method是end-to-end之间的处理,而CANCEL是hop-by-hop的请求处理。

在一些场景中,一个网络要素可以当作proxy来使用,此proxy也可以可靠临时响应。其工作方式类似于一个UAS,它的作用就是作为一个事务功能。但是,它不能尝试发送携带To头标签的请求。这里,一个proxy不能对已经在一个dialog内容中发送过的请求生成可靠临时响应。简单来说,就是已在一个dialog中发送过请求内容的,就不能对其请求生成临时可靠响应。当然,不像UAS一样,当proxy的一个网络要素收到一个PRACK时ÿ
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: RFC3261是一种通信协议,全称为“SIP:会话初始化协议”。它是一种基于IP的协议,用于建立、修改和终止多媒体会话,例如语音通话和视频会议。SIP协议在互联网通信中扮演着重要的角色。 RFC3261详细定义了SIP协议的各个方面,包括消息的格式、处理规则和状态维护机制等。它规定了通信终端之间如何进行会话请求和应答,以及如何处理错误和异常情况。 SIP协议的主要功能包括: 1. 定义了会话的建立和终止过程:SIP协议使用呼叫请求和应答进行会话的初始化和终止,允许用户在任何地点、任何设备上进行通信。 2. 支持多媒体通信:SIP协议可以传输语音、视频、即时消息和其他多媒体数据,支持实时通信和多媒体会议。 3. 具有灵活的扩展性:SIP协议允许新增自定义的头字段和方法,以满足特定应用需求,并可以与其他协议(如HTTP和LDAP)集成。 4. 提供呼叫管理功能:SIP协议可以进行呼叫转移、呼叫保持和会话协商等操作,提供了灵活的呼叫管理功能。 5. 支持用户鉴权和身份验证:SIP协议提供用户鉴权和身份验证机制,确保通信的安全性和用户身份的合法性。 总之,RFC3261定义了SIP协议的规范,它是一种重要的通信协议,广泛用于语音通信和多媒体会议等场景。通过SIP协议,用户可以方便地进行实时通信,并享受到多种多样的通信服务。 ### 回答2: RFC3261是SIP(会话初始化协议)的标准定义,它是一种用于建立、修改和终止多媒体会话的协议SIP协议在互联网上的通信中起到了重要的作用,它能够在不同的终端设备之间传输语音、视频和其他媒体数据。 RFC3261详细规定了SIP协议的各个方面,包括消息格式、请求和响应的格式、状态码、会话建立过程以及会话管理。该协议使用文本和标签作为通信的基础,使用请求-响应模型进行通信。 在RFC3261中,SIP消息包括请求消息和响应消息。请求消息包括INVITE、ACK、OPTIONS、BYE等,用于起、确认、查询和结束会话。响应消息包括1XX、2XX、3XX、4XX、5XX、6XX等状态码,用于确认请求的处理结果。 会话建立过程涉及到用户代理、代理服务器和重定向服务器之间的交互。建立会话需要INVITE请求,然后等待对端的响应。通过交换一系列的请求和响应,最终确定会话参数,并建立媒体通道。 会话管理主要包括会话保持、会话更新和会话终止等。通过送和接收SIP消息,参与者可以保持会话活动。会话更新用于修改会话参数或扩展会话。而会话终止则是通过送BYE请求来结束会话。 总而言之,RFC3261为SIP协议的设计和使用提供了详尽的规范和指导。它为多媒体会话的建立、修改和终止提供了一种标准化的方式,使得不同的终端设备能够在互联网上进行有效的通信。通过遵循RFC3261的规范,能够实现更可靠和互操作的通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值