SIP协议讲解

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SIP协议讲解
14
关于本章
SIP协议
内容本章描述内容如下表所示。

标题 14.1 概述14.2 SIP 消息类型14.3 SIP消息结构14.4 SIP-T简介本节简要介绍SIP 协议的应用以及相关概念。

本节介绍SIP消息的类型。

本节介绍SIP消息的结构。

本节介绍SIP-T的应用。

14.5 SIP消息流程本节举例介绍SIP相关的消息流程。

本章将对SIP协议做一简要介绍,包括涉及的基本概念、消息结构以及简要的消息流程。

14.1 概述
SIP(Session Initiation Protocol)是一个应用层控制协议,用于创建、更改和终止会话。

这里的会话类型包括多媒体会议、Inter电话等类似的应用。

SIP是实现VOIP(Voice over IP)的关键协议之一。

SIP支持别名映射、重定向服务、ISDN和智能网业务。

它支持个人移动(personal mobility),即终端用户能够在任何地方、任何时间请求和获得已订购的任何电信业务。

总的来说,SIP能够支持下列五种多媒体通信的信令功能。

l用户定位:确定参加通信的终端用户的位置; l用户通信能力协商:确定通信的媒体类型和参数; l用户意愿交互:确定被叫是否乐意参加某个通信;
l建立呼叫:包括向被叫“振铃”,确定主叫和被叫的呼叫参数; l呼叫处理和控制:包括呼叫重定向、呼叫转移、终止呼叫等等。

SIP可以通过MCU(Multipoint Control Unit)、单播联网方式、或组播方式创建多方会话,支持PSTN和IP电话之间的网关功能。

SIP协议对低层协议作了最少的假设,低层协议可以为SIP协议提供可靠或非可靠传输,可以为分组或字节流业务。

SIP可以使用UDP协议或TCP协议作为传输层协议,首选UDP协议。

14.1.1 相关概念
呼叫
一个呼叫是由一个会议中被同一个发起者邀请加入的所有成员组成的。

一个SIP呼叫由Call-ID进行标识。

因此,如果一个用户是被不同的人邀请参加同一个多点会议,那么每个邀请都构成一个呼叫。

点到点IP电话会话是一种最简单的会话,它映射为单一的SIP呼叫。

呼叫分支
一个呼叫分支(Call leg)由Call-ID、To、From三个参数共同决定。

在同一个Call-ID中,从A到B的请求与从B到A的请求都属于同一个呼叫分支,呼叫分支也可以理解成一次呼叫中消息经过的路径。

事务
事务是发生在客户端和服务器之间的,包括从客户端发给服务器的第一个请求消息直到服务器端发给客户端的最终响应消息,这期间的所有的消息。

事务是由一个呼叫分支中的CSeq顺序号来标识的。

但也有例外,比如一个ACK请求与对应的INVITE请求具有相同的CSeq,但它们却构成了各自的事务。

一个正常的呼叫一般包含三个事务。

其中,呼叫启动包含两个操作请求:邀请(INVITE)和证实(ACK),前者需要回送响应,后者只是证实已收到最终响应,不需要回送响应。

呼叫终结包含一个操作请求:再见(BYE)。

定位服务
SIP重定位服务器或代理服务器用来获得被叫位置的一种服务,可由定位服务器提供,但SIP协议不规定SIP服务器如何请求定位服务。

代理服务器
代理服务器(Proxy Server)是用于将SIP请求路由到目的地的中间路径。

它既是客户端也是服务器。

用户请求可以直接被代理服务器处理或被转发给别的代理服务器。

代理服务器在转发之前要对消息进行解析,必要时还会改写请求。

重定向服务器
重定向服务器(Redirect server)将请求中的目的地址映射为零个或多个新的地址,然后返回给客户端,客户端直接再次向
这些新的地址发起请求。

重定向服务器并不接收或者拒绝呼叫,主要完成路由功能。

注册员
注册员(Registrar)为接收注册请求的服务器,通常与Proxy Server或者Redirect Server共存。

注册员需要将注册请求中的地址映射关系保存到数据库中,供后续的相关呼叫过程使用,同时可以提供定位服务。

用户助理
用户助理(User Agent)是用来发起或者接收请求的逻辑实体。

14.1.2 SIP寻址
在SIP消息中,采用URL(Uniform Resource Locators)来指示请求发出的源端和目的端的地址,以及重定向地址。

最常用的SIP URL的结构为:
SIP:user:password@host:port;transport-param|user-param|method-param| ttl-param|maddr-param|other-param SIP:表示需采用SIP协议和所指示的端系统通信。

用户名(user):可以由任意字符组成,一般可取类似于E-mail用户名形式,也可以是电话号码。

口令(password):口令可以置于SIP URL中,但因为以文本方式传送鉴权信息会有安全隐患,因此,并不推荐在SIP URL 中包含口令。

主机(host):可为主机域名或IP地址。

端口(port):指示请求消息送往的端口号,其缺省值为5060,即公开的SIP端口号。

传送参数(transport-param):指示采用TCP还是UDP传送,缺省值为UDP。

用户参数(user-param):SIP URL的一个
特定功能是允许主机类型为IP电话网关,此时,用户名可以为一般的电话号码。

该字段有两个可选值:“IP”和“电话”,当其
设定为“电话”时,表示用户名为电话号码,对应的端系统为IP 电话网关。

方法参数(method-param):指示所用的方法(操作)。

生存期参数(ttl-param):指示UDP多播数据包的寿命,仅当传送参数为“UDP”、服务器地址参数为多播地址时才能使用。

服务器地址参数(maddr-param):指示和该用户通信的服务器的地址,它覆盖“主机”字段中的地址,通常为多播地址。

参数transport-param、user-param、method-param、 ttl-param、maddr-param、other-param是任选参数。

CSOFTX3000目前支持的SIP URL格式为:E.164号码@IP地址:端口号。

如:
Sip:8613301080001@127.0.0.1:5060;
14.2 SIP消息类型
SIP消息采用文本方式编码,分为两类:请求消息和响应消息。

14.2.1 请求消息
请求消息是客户端为了激活特定操作而发给服务器端的消息,包括INVITE, ACK,OPTIONS,BYE,CANCEL和REGISTER消息,各消息功能如表14-1所示。

表14-1 请求消息
请求消息消息含义请求消息 INVITE ACK BYE CANCEL REGISTER OPTIONS 消息含义发起会话请求,邀请用户加入一个会话。

证实已收到对于INVITE请求的最终响应。

该消息仅和INVITE消息配套使用。

释放已建立的呼叫。

释放尚未建立的呼叫,对于已完成的请求(即已收到最终响应的请求)则没有影响。

向SIP网络服务器登记用户位置信息。

查询服务器的能力信息。

14.2.2 响应消息
响应消息是服务器端向客户端反馈对应请求的处理结果的消息。

响应消息分为临时响应和最终响应,临时响应消息是服务器用来表示工作进展,并不结束SIP事务的一种响应。

编码为1XX 的响应是临时响应,其他响应都是最终响应。

1XX响应消息:呼叫进展响应,表示已经接收到请求消息,正在对其进行处理; 2XX响应消息:成功响应,表示请求已经被成功接受、处理;
3XX响应消息:重定向响应,表示需要采取进一步动作,以完成该请求;
4XX响应消息:客户端出错,表示请求消息中包含语法错误或者服务器端不能完成对该请求消息的处理,如488消息表示“此处不接受”;
5XX响应消息:服务器端出错,表示SIP服务器故障,不能完成对正确消息的处理;
6XX响应消息:全局故障,表示请求不能在任何SIP服务器上实现。

表14-2中给出了常见的1XX和2XX消息。

表14-2 响应消息
状态码 100 180 181 182 183 200 消息功能试呼叫振铃
呼叫正在前转排队可靠临时响应 OK 14.3 SIP消息结构请求消息和响应消息都包括起始行、消息头字段、一个标志头字段结束的空行和消息体字段。

请求消息的起始行是请求行,响应消息的起始行是状态行;消息头包括通用头、请求头、响应头和实体头几类,每个SIP消息可以带一个或多个头域;消息体可以采用SDP(Session Description Protocol)来描述本次会话的具体实现方式,也可以封装ISUP消息。

通用头中包含的参数字段有:Accept | Accept-Encoding | Accept-Langrage | Call-ID | Contact | Cseq | Date | Encryption | From | Record-Route | Require | Supported | Timest | To | User-Agent | Via;请求头中包含的参数字段有:Authorization | Contact | Hide | Max-Forwards|
Organization | Priority | Proxy-Authorization | Proxy-Require | Route | Require | Response-Key | Subject;
响应头中包含的参数字段有:Proxy-Authenticate | Retry-After | Server | Unsupported | Warning | -Authenticate;
实体头中包含的参数字段有:Allow | Content-Encoding | Content-Length | Content-Type | Expires。

14.3.1 请求消息
如图14-1所示是SIP请求消息的结构,由请求行、消息头、空行和消息体组成。

通过换行符区分消息头中的每一条参数行。

图14-1 SIP请求消息结构
请求行由Method 标记开始,后跟标识对端URI的Request-URI 和标识协议版本的SIP-Version,最后以回车换行结束。

元素之间用空格符隔开。

Method即INVITE、ACK、OPTIONS、BYE、CANCEL、REGISTER 这几类请求消息名。

请求消息的消息头类型可以是通用头、请求头和实体头。

消息头中的参数顺序不一定。

每一个参数由名字后面跟冒号和参数值,参数值与冒号之间有一个空格。

消息头以回车换行符CRLF结束,然后是消息体部分。

图中所示的消息头中的参数只是请求消息中可能带有的参数,没有列举出所有参数。

参数说明
下面仅对几个常用的请求消息头参数字段进行说明。

lCall-ID
该字段用以唯一标识一次SIP呼叫。

Call-ID的一般格式为:Call-ID:local-id@host
其中,“host”为主机域名或IP地址,“local-id”是在“host”范围内唯一的标识符。

Call-ID字符需区分大小写。

lFrom
所有请求和响应消息都必须包含此字段,以指示请求的发起者。

服务器将此字段从请求消息复制到响应消息。

该字段的一般格式为:
From: display-name ;tag=xxxx
其中,“display-name”为用户界面上显示的字符,如果系统不予显示,应置显示名为“Anonymous”。

“tag”出现在请求消息的From字段中,当两个共享同一SIP地址的用户实例用相同的Call-ID发起呼叫邀请时,就需用此标记予以区分。

“tag”必须全局唯一。

用户在整个呼叫期间应保持相同的Call-ID和“tag”值。

相关文档
最新文档