一、SIP概念
SIP(Session Initiation Protocol,会话发起协议)是一个用于建立,更改和终止多媒体会话的应用层控制协议,其中的会话可以是IP电话、多媒体分发及多媒体会议。它是IETF多媒体数据和控制体系结构的核心协议(最新RFC文档是RFC3261)。其主要目的是为了解决IP网中的信令控制,以及同软交换平台的通信,从而构成下一代的增值业务平台,对电信,银行,金融等行业提供更好的增值业务。
SIP用于发起会话,它能控制多个参与者参加的多媒体会话的建立和终结,并能动态调整和修改会话属性,如会话带宽要求、传输的媒体类型(语音、视频和数据等)、媒体的编解码格式、对组播和单播的支持等。SIP协议基于文本编码,大量借鉴了成熟的HTTP协议,并且具有易扩展,易实现等特点,因此非常适合用来实现基于因特网的多媒体会议系统。
SIP协议采用Client/Server模型,主要通过与Proxy Server之间的通信来完成用户呼叫的建立过程。
SIP终端通过发送“邀请”消息给会话目的终端,消息中携带了自己的描述信息。目的终端可以根据“邀请”信息和自身的能力接受或拒绝请求。SIP可以通过称为“代理服务器”的实体来转发“邀请”消息。代理服务器可以完成确定目的终端的位置、查找路由的工作,根据会话终端的要求进行认证和授权,还能提供会话终端的呼叫路由策略。SIP通过“注册服务器”记录各终端的描述信息,包括地址信息,路由信息,号码信息等,各SIP终端可以通过发送“注册”消息给注册服务器,以登记或更新其描述信息。
另外,SIP作为应用层协议,在传输层上可以使用TCP,也可以使用UDP。SIP可以支持IPv4和IPv6。
二、重要概念说明
多媒体会话(Multimedia Session),根据RFC2327的定义,是指一组多媒体发送者和接受者以及从发送者到接受者的数据流。例如一个多媒体会议就是一个多媒体会话。一个会话由一组用户名称、会话ID、网络类型、地址类型以及各个单元的地址来确定。
2.2 用户代理用户代理(UA,User Agent)也称SIP终端,是指支持SIP协议的多媒体会话终端。例如SIP电话、SIP网关、支持SIP的路由器等。
2.3 用户代理客户机用户代理客户机(UAC,User Agent Client)是指在SIP会话建立过程中主动发送会话请求的设备。例如,主叫SIP终端。当代理服务器向被叫终端发送会话请求时,也是作为用户代理客户机。
用户代理服务器(UAS,User Agent Server)是指在SIP会话建立过程中接收会话请求的设备。例如,被叫SIP终端。当代理服务器接收主叫终端发送会话请求时,也是作为用户代理服务器。
代理服务器(Proxy Server)是代理主叫UA(SIP终端)向被叫UA发送会话请求,并代理被叫UA向主叫UA发送应答消息的设备。代理服务器在接收到主叫UA的会话请求后,首先要向注册服务器请求查找被叫的位置以及主、被叫的呼叫策略信息。只有找到被叫并且此呼叫是允许的,代理服务器才会向被叫发送会话请求。
重定向服务器(Redirect Server)是为主叫UA指明重新呼叫被叫UA的位置。当重定向服务器收到主叫UA发送的会话请求消息后,查找被叫UA的位置信息,并向主叫UA返回一个位置信息,使其重新向该位置发起会话请求。此位置可以直接是被叫UA的位置,也可以是一个代理服务器的位置。接下来主叫UA如同直接呼叫被叫UA或者向代理服务器呼叫的流程一样。
位置服务器器(Location Server)是为代理服务器和重定向服务器等提供用户代理信息的设备。位置服务器记录了注册服务器接收到的用户代理的信息。位置服务器与注册服务器通常在同一个设备上。
注册服务器(Registration Server)是记录UA的位置信息并向代理服务器提供查询UA的位置信息的设备。在简单的应用中,注册服务器和代理服务器通常也在同一个设备上。
三、SIP的功能和特点
SIP主要有五个基本功能:
SIP的特点如下:
四、SIP工作原理1. 登记注册
在完整的SIP系统中,所有的SIP终端作为User Agent都应该向注册服务器(SIP Registration Server)登记注册,以告知其位置信息、会话能力信息、呼叫策略等等。
通常,SIP终端开机启动时或者配置管理员执行注册操作时,就向注册服务器发送注册请求消息(REGISTER),该消息中携带了所有需要登记的信息。注册服务器收到注册请求消息后向终端发送回应消息,以告知其请求消息已收到。如果注册成功,就再向终端发送“成功”消息。如下图所示。
图4-1 User Agent向SIP Location Server注册的消息交互
SIP协议采用Client/Server模型,主要通过UA与Proxy Server之间的通信来完成用户呼叫的建立过程。
图4-2 UA通过PROXY连接
例如,如上图所示,电话1需要呼叫电话2,两个路由器作为SIP终端(UA)。当电话1拨完电话2的号码后,路由器1向SIP Server发送会话请求消息。SIP Server通过查找电话2的号码所对应的信息,向路由器2发送会话请求消息。路由器2收到请求后,如果电话2可用,就向SIP Server发送应答,并使电话2振铃。SIP Server收到应答后,向路由器1发送应答消息。这里所说的应答包括两个消息,一个临时应答和一个“成功”应答。整个过程中的消息交互如下图所示。
图4-3 UA通过Proxy Server的呼叫流程图
这个例子是一种简单的应用,只使用了一个代理服务器,并且没有使用注册服务器。在复杂的应用中,可以有多个代理服务器,以及注册服务器。
SIP重定向服务器收到会话请求消息后,不是转发会话请求消息,而是在回应消息中告知被叫SIP终端的地址。主叫终端从而重新直接向被叫终端发送会话请求消息。被叫终端也将直接向主叫发送应答消息。呼叫过程的消息交互如下图所示。
图6-4 UA重定向呼叫流程图
这是比较常见的一种应用。从原理上来说,重定向服务器也可以向主叫终端回复一个代理服务器的地址,接下来的呼叫过程就和使用代理服务器的呼叫过程一样。