您当前的位置是:  首页 > 新闻 > 国内 >
 首页 > 新闻 > 国内 >

SIP协议与应用场景技术分享笔记-卷1-rfc3261-3

2018-12-13 16:19:41   作者:james.zhu   来源:CTI论坛   评论:0  点击:


  第三层是事务层。事务是SIP的基础核心模块。事务是一个由用户端事务对服务器端事务发送的请求,用户端使用传输层对服务器端发送事务请求,所有的服务器端事务所携带响应消息返回到客户端。事务层处理应用层的重传,对请求响应的匹配和应用层超时管理。任何由用户代理(UAC)完成的任务通过使用一系列的事务来触发。具体的关于事务的讨论在Section 17有讨论。用户代理包含了一个事务层,就像是一个状态代理。无状态代理没有包含事务层。事务层包含一个用户端模块(称之为用户事务)和一个服务器端事务模块(称之为服务器端模块),每个模块通过各自的有限状态机来呈现,状态机来处理每个特别的请求。
  事务的概念非常难以理解,网上有很多这方面的资料,读者可以查阅。
  Transaction occurs between a client and a server and comprises all messages from the first request sent from the client to the server up to a final (non-1xx) response sent from the server to the client. If the request is INVITE and the final response is a non-2xx, the transaction also includes an ACK to the response. The ACK for a 2xx response to an INVITE request is a separate transaction.
  这里的示例仅对事务加以简单说明(RINGING 是 1xx 响应,OK是 2xx 响应,所以是两个事务),非rfc3261官方资料。
  在事务层上面的是事务用户(TU)。每个SIP实体,除了无状态代理都是一个事务用户。当一个TU希望发送一个请求时,它会创建一个用户事务实例,然后把这个实例传递给这个请求,并且携带目的地IP地址,端口和传输请求。一个创建了用户事务的TU也可以取消这个用户事务。当用户取消了一个事务时,它会请求服务器停止进一步的处理,变换到退出的状态,这个状态是这个事务初始化前的退出状态,并且生成对这个事务生成错误响应消息。这个处理过程是通过一个CANCEL 请求来处理,它构成了属于自己的事务,但是仅针对这个被取消的事务(Section 9)。
  事务的处理包括了多种不同的状态,主要包括以下六种(非官方资料)状态:
  • SIP 要素也就是用户代理用户测,服务器,无状态代理,有状态代理和注册。SIP要素包含了一个核心模块,这个核心模块来对各自其要素进行区别处理。在核心要素模块中,除了无状态代理以外,其他的要素都是事务用户。这里,UAC和UAS的核心处理流程越来于method。关于methods支持了多种规则和定义(Section 8)。对于UAS来说,这些规则控制请求的结构;对于UAS来说,这些规则控制请求的流程和生成响应消息。因为,注册在SIP协议中扮演着一个非常重要的角色,一个处理注册的UAS会设定一个特别的名称注册。在Section 10中描述了UAC和UAS核心的对REGISTER method的处理方式。Section 11描述了UAC和UAS核心对OPTIONS method的处理方式,它决定UA的支持能力。
  • 某些其他的请求是在dialog中发送。一个dialog是一个介于用户代理之间的peer-to-peer SIP关系,这种关系存在于一定时间内。这个dialog支持介于用户代理之间的消息的顺序传递和正确的请求路由。在这个细节规定中,INVITE method 是唯一的方法来创建dialog。当一个UAC在dialog中发送一个请求时,它会遵守一般的UAC规则,这些规则在Section 8会加以讨论,它也会遵守 mid-dialog 请求时的规则。Section 12讨论在dialog和表述它们的结构和维护流程。
  • 在SIP协议中,最重要的method是INVITE method,它用来创建参与方之间的会话。一个会话是参与方的汇总和它们之间通信的的媒体流交互。Section 13讨论了如何实现会话发起,这些导致了一个或者多个SIP dialog生成。Section 14讨论了如何在一个dialog中通过INVITE用法来修改会话属性。最后,在section 15中讨论如何结束一个会话。
  • 章节8,10,11,12,13,14,和15的流程完整讨论了UAcore(Section 9描述了取消流程,这个取消流程支持都支持UA core 和 proxy core)。Section 16讨论代理的要素,这些要素支持了介于两个用户代理之间的信息路由。
  参考资料:
  https://www.rfc-editor.org/rfc/pdfrfc/rfc3262.txt.pdf
  关注微信公众号:asterisk-cn,获得有价值的Asterisk行业分享
  Asterisk freepbx 中文官方论坛:http://bbs.freepbx.cn/forum.php
  Asterisk freepbx技术文档: www.freepbx.org.cn
  融合通信商业解决方案,协同解决方案首选产品:www.hiastar.com
  Asterisk/FreePBX中国合作伙伴,官方qq技术分享群(3000千人):589995817

【免责声明】本文仅代表作者本人观点,与CTI论坛无关。CTI论坛对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。

专题