自我介绍范文网

当前位置:自我介绍范文网 > 电脑教程 > 网络知识 > 网络技术 > >

SIP协议及新IP企业通信网络技术概论-核心SIP技术介绍-6-SIP消息全面概述

来源::网络整理 | 作者:管理员 | 本文已影响

  笔者在前面的章节中已经针对一些基础概念做了比较全面的分析和详解,通过对这些必要的基础概念的分享,读者可以对SIP的基础骨干有了一个清晰的认识。万里长征第一步。学习任何知识,都需要我们从基础轮廓开始,慢慢接触细节知识。我们在以前的学习中可以获知,SIP协议实际上是基于HTTP协议发展而来的(SIP协议不是HTTP协议的扩展),因此,它的基本操作流程也同样符合HTTP协议的基本原理。进一步来说,其基本的处理流程就是一个请求和响应的流程。如果读者需要进一步了解其SIP流程和基本的概念,可以查阅:
  SIP协议及新IP企业通信网络技术概论-核心SIP技术介绍-2 

SIP协议及新IP企业通信网络技术概论-核心SIP技术介绍-6-SIP消息全面概述

  我们按照以上图例根据不同的呼叫业务可以进一步解读出SIP消息中关于请求和协议的更多的技术细节,最基础的两个大类就是请求methods和响应码,请求methods可以支持不同的请求,响应码也根据对端状态支持了非常不同的响应码。在请求和响应交互中,通过不断变换的SIP头进行进一步的协商来完成呼叫流程。所以,我们在本章节的讨论中,我们将对SIP消息核心知识进行全面讨论,主要包括通常使用的请求methods(13或者14种methods),响应码(1xx-6xx)和SIP头。在具体实战的操作过程中,技术人员同样需要通过双方的交互信息来对流程做相应的处理,也需要这些交互消息来排查问题。

  注意,我们这里所说的SIP消息和SIP规范中的message有着非常明显的不同。此消息和彼消息是完全不同的内涵。一般来说,SIP消息就是请求和响应的消息,客户端对服务器端发送请求消息,服务器端对客户端返回响应消息。我们这里通常所说的SIP消息是指一般的SIP请求和响应消息,而在SIP规范中的message是SIP规范的一种扩展的method,它允许SIP终端之间发送即时消息(instant message)。

  1、SIP请求methods和响应码

  请求和响应是SIP响应的两大核心要素。这两大要素结合SIP头决定着呼叫的最终结果。在具体的SIP请求中,根据RFC3261,SIP请求根据SIP呼叫请求的不同环境,SIP请求又细分6种不同的methods,这6种methods是RFC3261规范所规定的methods,另外还有8种常用的扩展SIP methds,这8种methods不是RFC3261的规范规定的methods,它们是通过SIP的扩展协议获得的支持。所以,我们这里总共介绍14种不同的常用的SIP请求方式。

  在SIP请求methods中,我们经常遇到的SIP请求methods包括:

REGISTER:用来注册一个用户代理,通过临时绑定一个用户代理的URI到AOR地址,这样服务器端能够获悉其用户代理的位置。简单来说,它负责注册contact消息。

INVITE,通过邀请一个用户参与到会话来发起一个呼叫。另外,INVITE也可以修改会话。

ACK,一个acknowledgement或者消息确认是作为一个对200 OK响应或其他响应的一个确认响应。这些响应是初始INVITE请求的结果,此时应该会产生会话,ACK仅对INVITE负责或者(re-INVITEs)。

CANCEL用来取消待处理的请求。

BYE用来指示结束呼叫或者会话。

OPTIONS 负责查询服务器端的媒体支持能力。

INFO,负责mid-session的SIP信令消息之间的通信,它是一个RFC3261的扩展协议,具体规范参考RFC2976。具体使用示例包括PSTN网关的PSTN信令消息,传输会话中中需要传输的DTMF,计费账号余额,无线移动端的无线信号状态,会话之间传输图片或者其他非媒体的数据。

PRACK,其全称是Provisional ACK,从字面意思可以看出,它本身是一个临时的ACK。因为它是一个临时的响应,所以它仅用来对1xx临时响应做出响应。在某些情况下,如果初始INVITE请求没有携带SDP消息体的话,在1xx临时响应后,PRACK可以包含相关的SDP消息体。另外需要注意,为了验证其可靠性,每个临时响应(例如从UAS来的183响应)都给定一个序列号,通过响应消息中的RSeg头来传输,从UAC来的PRACK的消息中包含一个RAck头,表示一个针对临时响应的序列号的确认。它也是通过一个RFC3261规范的扩展协议来支持,具体规范参考RFC3262。

Refer 用来转接呼叫,也可以用来联系外部资源。Refer method是SIP规范的扩展协议。具体关于定义Refer method规范,读者可以查阅RFC3515。

SUBSCRIBE用来在稍晚时间请求一个事件提醒或一系列事件。常见的示例是用来订阅一个请求提示(Notification),当某人的IM在线状态发生改变(离线,在线,忙状态等)以后,对其发送提示事件。关于订阅的扩展协议,读者可以查阅RFC3265。

NOTIFY用来对已订阅的事件发送notify提示消息,它也可以通过SIP服务器端对SIP客户端发送客户端事件提示,例如语音邮箱留言等。读者也可以按照RFC3265的规范进一步了解notify提示method。

Update用来支持客户端更新会话协商中的一些参数,例如媒体流的参数以及编码等。注意,update不会影响dialog的状态。关于更多update method,读者可以参考SIP的扩展协议RFC3311。

Publish发布和注册一样,它也允许用户创建,修改和移除状态,不同的是它负责发布事件状态,用户可以根据事件本身状态来提示订阅用户。具体规范查阅RFC3903。

Message method是SIP的扩展协议,用来传输请求的消息体中的即时消息。通过SIP 初始会话技术,结合在线状态和即时消息构成了当前最强大的即时通讯系统。目前,即时消息或者IM使用已经非常普及,包括我们的QQ等。但是,SIP的强大之处在于提供了在线状态应用,对基于会话初始应用机制提供支持,但是对即时消息支持不是SIP的优势。因此,读者可以看到,在SIP应用中即时消息的使用仍然不是市场主流。关于SIP 消息的规范读者可以查阅RFC3428,关于在线状态和即时消息规范读者可以查阅RFC2778和RFC2779。

  关于以上SIP method的其他深入讨论,读者可以查阅参考链接,或者阅读笔者的历史文档。因为篇幅原因,这里不再介绍。一些比较常见的method,例如, 100rel/PRACK,读者可以查阅历史文档:

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

  2、SIP请求和响应中的header

  前面我们介绍了SIP的methods和它的一些控制协议支持的methods。在各种methods中,INVITE是我们最常用的method。在这些methods中需要通过各种header来进行通信协商。在本章节我们重点介绍一下method中的header和其响应中的header。因为篇幅所限,我们这里仅介绍INVITE method和其响应,读者可以查阅SIP规范和其具体扩展协议深入了解更多的用途说明。以下是根据RFC3261官方介绍的一个基本的示例


本文标题:SIP协议及新IP企业通信网络技术概论-核心SIP技术介绍-6-SIP消息全面概述
分享到: 更多

随机阅读TODAY'S FOCUS