文档库 最新最全的文档下载
当前位置:文档库 › SIP协议讲解

SIP协议讲解

14 SIP协议关于本章

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

14.1 概述

SIP(Session Initiation Protocol)是一个应用层控制协议,用于创建、更改和终止会话。这里的会话类型包括多媒体会议、Internet电话等类似的应用。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 请求消息

14.2.2

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

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

1XX响应消息:呼叫进展响应,表示已经接收到请求消息,正在对其进行处理;2XX响应消息:成功响应,表示请求已经被成功接受、处理;

3XX响应消息:重定向响应,表示需要采取进一步动作,以完成该请求;

4XX响应消息:客户端出错,表示请求消息中包含语法错误或者服务器端不能完成对该请求消息的处理,如488消息表示“此处不接受”;

5XX响应消息:服务器端出错,表示SIP服务器故障,不能完成对正确消息的处理;

6XX响应消息:全局故障,表示请求不能在任何SIP服务器上实现。

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

表14-2 响应消息

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 | Timestamp | 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 | WWW-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结束,然后是消息体部分。

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

参数说明

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

l Call-ID

该字段用以唯一标识一次SIP呼叫。Call-ID的一般格式为:

Call-ID:local-id@host

其中,“host”为主机域名或IP地址,“local-id”是在“host”范围内唯一的标识符。Call-ID字符需区分大小写。

l From

所有请求和响应消息都必须包含此字段,以指示请求的发起者。服务器将此字段从请求消息复制到响应消息。该字段的一般格式为:

From: display-name ;tag=xxxx

其中,“display-name”为用户界面上显示的字符,如果系统不予显示,应置显示名为“Anonymous”。“tag”出现在请求消息的From字段中,当两个共享同一SIP地址的用户实例用相同的Call-ID发起呼叫邀请时,就需用此标记予以区分。“tag”必须全局唯一。用户在整个呼叫期间应保持相同的Call-ID和“tag”值。

l To

该字段指示请求的接收者,其格式和From相同。所有请求和响应消息必须包含此字段。

在SIP中,Call-ID、From和To三个字段标识一个呼叫分支。

l Cseq

客户端在每个请求消息中都应加入Cseq(Command sequence)字段,它由命令名称和一个十进制序号组成,该序号在Call-ID范围内唯一确定。

序号初值可为任意值,后续的具有相同Call-ID值、但命令名称或消息体不同的请求消息,其Cseq序号应连续加1。重发请求的序号保持不变。

服务器端将请求消息中的Cseq值复制到响应消息中,用于将请求消息和其触发的响应消息相对应。

ACK和CANCEL消息的Cseq序号和对应的INVITE请求消息的相同,BYE请求消息的Cseq序号应大于INVITE 请求消息的序号。服务器会记忆相同Call-ID的INVITE请求的最高序号,收到序号低于此值的INVITE请

求将在给出响应后予以丢弃。

l Via

Via字段的一般格式为:

Via:sent-protocol sent-by;via-params comment

其中,sent-protocol=protocol-name / protocol-version / transport,via-params=via-hidden | via-ttl | via-maddr | via-received | via-branch。

Via字段用以指示到目前为止请求消息所历经的路径。它可以防止请求消息传送产生环路,并确保响应消

息和请求消息选择同样的路径,以保证通过防火墙或满足其它特定的选路要求。

发起请求消息的客户端必须将其自身的主机名或网络地址插入请求消息的Via字段,如果未采用缺省端口号,还需插入希望接收响应消息的端口号。

在请求消息前传过程中,每个代理服务器必须将其自身地址作为一个新的Via字段加在已有的Via字段之前。

若代理服务器向多播地址发送请求,则必须在其Via字段中加入“maddr”参数,此参数指明多播地址;如果服务器收到顶端的Via字段中带有“maddr”参数的请求消息,它将会将这个请求消息发送到“maddr”

参数所列举的多播地址去。

正常情况下,每个发送或转发SIP消息的主机都会将自己的主机名和网络地址插入Via字段中,以指示消

息传送的路径。但是,当请求消息通过NATs(Network Address Translators)时,请求消息的源地址和

端口号可能被改变,此时Via字段就不能成为响应消息选路的依据。为了防止这一点,代理服务器应校验

顶端Via字段,如果发现其值和代理服务器检测到的前站地址不符,就会在前站添加的Via字段中加入“received”参数。例如:

Via:SIP/2.0/UDP https://www.wendangku.net/doc/bf12167300.html,:5060

Via:SIP/2.0/UDP 10.0.0.1:5060;received=191.169.12.30

由10.0.0.1发出的请求消息经过IP地址为191.169.12.30的NATs后,到达代理服务器

https://www.wendangku.net/doc/bf12167300.html,。后者注意到前站发送地址和Via字段地址不符,就把实际的发送地址作

为“received”参数加在前站的Via字段中,然后再将自己的地址作为新加的Via字段置于最上面。

综上所述,代理服务器或客户端收到响应消息中的Via字段时的处理规则是:

第1个Via字段应该指示正在处理本消息的代理服务器或客户端。如果不是,丢弃该消息,否则,删除该Via字段。

如果没有第2个Via字段,则表示该响应消息已经到达目的地。否则,则根据Via字段中是否有“maddr”参数或“received”参数继续做如下处理:

如果第2个Via字段中包含“maddr”参数,则按该参数指示的多播地址发送响应,端口号由“sent-by”

参数指明,如未指明,就使用端口号5060。响应的生存期应置为“ttl”参数指定的值,如未指明,则置

为1。

如果第2个Via字段中不包含“maddr”参数,但有一个“received”参数,则应将该响应发往“received”参数指示的地址。

如果既无“maddr”又无“received”参数,就按“sent-by”参数指示的地址发送响应。

Via字段的示例:

Via: SIP/2.0/UDP

191.169.1.116:5061;ttl=16;maddr=191.169.10.20;branch=a7c6a8dlze

l Contact

该字段用于INVITE、ACK和REGISTER请求以及成功响应、呼叫进展响应和重定向响应消息,其作用是给出其后和用户直接通信的地址。

INVITE和ACK请求中的Contact字段指示该请求发出的位置。它使被叫可以直接将请求(如BYE请求)发往该地址,而不必借助Via字段经由一系列代理服务器返回。

Contact字段的一般格式为:

Contact:name-addr;q=value;action= “proxy” | “redirect”;expires=value;

extension-attribute

其中,地址参数name-addr的表示形式和To,From字段的相同。q参数的取值范围为[0,1],指示给定位置的相对优先级。数值越大,优先级越高。action参数仅用于REGISTER请求,它表明希望服务器对其后到该客户的请求进行代理服务还是重定向服务。如果未含此参数,则执行动作取决于服务器的配置。expires 参数指明URI的有效时间,可用秒表示,也可用SIP日期表示。Extension-attribute就是扩展名。Contact字段的示例为:

Contact: ;q=0.7;expires=3600

l Max-Forwards

该字段用于限定一个请求消息到达其目的地址前所允许被转发的次数。

每个代理服务器或网关在收到带有该字段的请求消息后,在转发该消息之前,必须检查和更新该字段的值,该字段的初始值为70,请求消息每经过一个代理或网关,该值减1。如果该值为0时该请求还没有到达其目的地址,服务器将回送“483”(Too Many Hops)响应并终止这个请求。

设置该字段的目的主要是为了保证消息传递过程中出现环路时不会一直消耗代理服务器的资源。

Max-Forwards字段的一般格式为:

Max-Forwards:十进制整数

l Allow

该字段给出代理服务器支持的所有请求消息类型列表。

Allow字段的示例:

Allow: INVITE, ACK, OPTIONS, CANCEL, BYE

l Content-Length

该字段表示消息体的大小,为十进制值。应用程序使用该字段表示要发送的消息体的大小。如果使用基于流的协议(如TCP协议)作为传输协议,则必须使用此消息头字段。

消息体的长度不包括用于分离消息头和消息体的空白行。 Content-Length值必须大于等于0。如果消息中没有消息体,则Content-Length头字段值必须设为0。

Content-Length字段的一般格式为:

Content-Length:十进制值

l Content-Type

Content-Type字段表示发送的消息体的媒体类型。如果消息体不为空,则必须存在Content-Type 字段。Content-Type字段的示例:

Content-Type: application/sdp

l Expires

Expires头字段指定了消息(或消息内容)多长时间之后超时。

请求消息示例

下面是SIP请求消息编码的示例:

INVITE sip:66500002@191.169.1.110 SIP/2.0

From: ;tag=1ccb6df3

To:

CSeq: 1 INVITE

Call-ID: 20973e49f7c52937fc6be224f9e52543@sx3000

Via: SIP/2.0/UDP 191.169.1.116:5061;branch=z9hG4bkbc427dad6

Contact:

Max-Forwards:70

Content-Length:230

Content-Type: application/sdp

v: 0

o: HuaweiSoftX3000 1073741831 1073741831 IN IP4 191.169.1.116

s: Sip Call

c: IN IP4 191.169.1.95

t: 0 0

m: audio 30000 RTP/AVP 8 0 4 18

a: rtpmap:8 PCMA/8000

a: rtpmap 0 PCMU/8000

a: rtpmap 4 G723/8000

a: rtpmap 18 G729/8000

解释如下:

第一行:请求行。Method标记为INVITE请求消息;对端用户的URI为

“sip:66500002@191.169.1.110”;SIP版本号为2.0。

第二行:From字段。指明请求发起方的地址为“”。“tag”为“1ccb6df3”,用于共享同一SIP地址的不同用户用相同的Call-ID

发起呼叫邀请时,对用户进行区分。

第三行:To字段。指明请求接收方的地址为“”。第四行:Cseq字段。

第五行:Call-ID字段。该字段唯一标识一个特定的邀请,全局唯一。

第六行:Via字段。该字段用于指示该请求历经的路径。“SIP/2.0/UDP”表示

发送的协议,协议名为“SIP”,协议版本为“2.0”,传输层为“UDP”;“191.169.1.116:5061”表示发送方CSOFTX3000 IP地址为191.169.1.116,端口号为5061;“branch=z9hG4bkbc427dad6”为分支参数,CSOFTX3000并行分发请求时标记各个分支。

第七行:Contact字段。指示其后的请求(如BYE请求)可以直接发往

,而不必借助Via字段。

第八行:Max-Forwards字段。表示该请求到达其目的地址所允许经过的中转站

的最大值为70。

第九行:Content-Length字段。指示消息体长度。

第十行:Content-Type字段,表示消息中携带的消息体是单消息体且为SDP。

第十一行:空行,表示消息头结束,下面为SDP描述的消息体。

消息体部分的简要解释如下,详细的解释可以参阅SDP相关的资料。

v=<协议版本>

o=<用户名><会话标识><版本><网络类型><地址类型><地址>

s=<会话名>

c=<网络类型><地址类型><连接地址>

t=<起始时间><终止时间>

m=<媒体><端口><传送层><格式列表>

a =rtpmap:<净荷类型><编码名><编码>

14.3.2 响应消息

如图14-2所示是SIP响应消息的格式,由状态行、消息头、空行和消息体组成。通过换行符区分消息头中的每一行参数。对于不同的响应消息,参数不固定。

图14-2 SIP响应消息结构

状态行包括SIP协议版本号、状态码和描述性短语。状态码是由三位整数组成,指示该响应消息的类型;描述性短语用简短的语言描述状态码的含义。

在“消息类型”一节中已经介绍过,SIP响应消息分为6类,状态码分别为1XX、2XX、3XX、4XX、5XX、6XX,代表不同的响应类型。

消息头部分的参数与请求消息的参数相同,在此不再叙述。

14.4 SIP-T简介

CSOFTX3000支持SIP-T协议。

SIP-T(Session Initiation Protocol for Telephones)是SIP协议的扩展,提供了在SIP消息中携带ISUP信令的机制,以实现PSTN和SIP网络的更好互通,包括三种呼叫模型:PSTN-IP、IP-PSTN、PSTN-IP-PSTN。

SIP-T协议采用SIP的消息结构和消息流程。SIP-T主要采用了“封装”和“映射”两大技术。

“封装”即在SIP消息体中携带ISUP消息。包括两种情况:

l SIP消息本身不携SDP,ISUP消息封装在SIP消息体中,消息体类型为Application/SDP;

l SIP消息本身携带SDP,则SIP消息需要包含多个消息体,封装了ISUP的消息体类型为Application/ISUP。“映射”包括ISUP-SIP消息映射,以及ISUP消息参数与SIP消息头域之间的映射。

l ISUP-SIP消息映射

在网关处必须能够根据收到的每一条SIP消息产生一条对应的ISUP消息,反之每一条ISUP消息也都能对应生成一条SIP消息。SIP-T规定了ISUP和SIP消息之间的映射关系,比如,在收到INVITE消息后,必须发送IAM消息,在BYE消息后发送REL消息等。

SIP消息与ISUP消息之间的映射关系可简单描述为:

IAM = INVITE

ACM = 180 RINGING

ANM = 200 OK

REL = BYE

RLC = 200 OK for BYE

l ISUP消息参数与SIP消息头之间的映射

在用于建立呼叫的SIP请求消息中包含有使得消息正确路由到目的地的必要信息,如被叫号码等。因此,SIP-T就定义了在ISUP消息参数和SIP消息头之间映射的规则,比如,ISUP IAM消息中的被叫号码必须映射到SIP消息头字段“To”中。

14.5 SIP消息流程

本消息流程中没有涉及CSOFTX3000控制MGW完成承载建立的过程,在后续章节的呼叫流程介绍中有完整的流程介绍。

14.5.1 通过SIP中继的移动用户呼叫流程

下面介绍普通移动用户通过CSOFTX3000之间的SIP中继呼叫另一用户的流程。流程如图14-3所示。

图14-3 SIP呼叫流程(移动呼叫SIP中继)

1.主叫移动用户发起CM_SERVICE_REQ业务请求消息。

2.CSOFTX3000向BSS下发ASS_REQ指配请求消息。

3.BSS向MSC发送ASS_CMP指配完成消息。

4.CSOFTX3000经过号码分析发现出局局向是SIP局向后,向被叫SIP中继局向发送INVITE消息,其中消息体中带有主叫承载信息。

5.被叫局给CSOFTX3000回送100 Trying表示已经接收到请求消息,正在对其进行处理。

6.CSOFTX3000收到180 Ringing振铃消息。

7.如果被叫用户摘机,则被叫局会发送200 OK消息给本局CSOFTX3000,其中消息体中带有被叫承载信息。

8.待本局CSOFTX3000控制MGW完成承载建立后,向对局发送ACK消息,表示已经建立了双方通话的信令通路。

9.如果是主叫用户挂机,CSOFTX3000收到CLEAR_REQ呼叫拆除请求消息后,将会向被叫局发送BYE消息,同时,向主叫侧BSS发送CLEAR_CMD呼叫拆除命令。被叫局收到BYE消息后,向CSOFTX3000发送200 for BYE消息。主叫侧BSS发送CLEAR_CMP消息确认主叫拆除完成。

10.如果是被叫用户挂机,本局CSOFTX3000在收到被叫局发送的BYE消息后,直接回送200 for BYE消息,并向主叫侧BSS发送CLEAR_CMD消息通知拆除主叫侧,主叫侧BSS回CLEAR_CMP消息确认拆除完成。14.5.2 SIP-T呼叫流程

下面以PSTN-IP-PSTN呼叫模型为例,简单介绍PSTN消息通过SIP-T消息透传的呼叫流程,呼叫流程如图14-4所示。

图14-4 成功的SIP-T呼叫流程(PSTN-IP-PSTN)

1.主叫PSTN用户摘机拨号,LS A向CSOFTX3000 A发送IAM消息。

2.CSOFTX3000 A收到IAM消息后,将其封装在INVITE消息的消息体中发送给CSOFTX3000 B。

3.CSOFTX3000 B从INVITE消息中解析出IAM消息,将其发送给LS B。

4.CSOFTX3000 B给CSOFTX3000 A回送100 Trying表示已经接收到请求消息,正在对其进行处理。

5.被叫PSTN用户振铃,同时,LS B发送ACM消息给CSOFTX3000 B,CSOFTX3000 B收到ACM消息,将其封装到180 Ringing响应消息中发送给CSOFTX3000 A。

6.CSOFTX3000 A收到180 Ringing消息后,将ACM消息从180 Ringing消息中解析出来转发给LS A。LS A 收到ACM消息,同时,主叫PSTN用户听回铃音。

7.被叫PSTN用户摘机,LS B发送ANM消息给CSOFTX3000 B,CSOFTX3000 B收到ANM消息,将其封装到200 OK响应消息的消息体中发送给CSOFTX3000 A。

8.CSOFTX3000 A收到200 OK消息后,将ANM消息解析出来转发给LS A。

9.CSOFTX3000 A发送ACK消息给CSOFTX3000 B,证实已经收到CSOFTX3000 B对于INVITE请求的最终响应。此时,就建立了一个双向的信令通路,双方可以进行通话。

10.主叫PSTN用户挂机,LS A发送REL消息给CSOFTX3000 A。CSOFTX3000 A收到REL消息,将其封装到BYE请求消息的消息体中,发送给CSOFTX3000 B。

11.CSOFTX3000 B收到BYE消息,将REL消息解析出来转发给LS B。

12.LS B收到REL消息,给被叫PSTN用户送忙音。被叫PSTN用户挂机,LS B发送RLC消息给CSOFTX3000 B。

13.CSOFTX3000 B收到RLC消息,将其封装在200 OK响应消息的消息体中发送给CSOFTX3000 A。

14.CSOFTX3000 A收到200 OK响应,将RLC消息从中解析出来转发给LS A。

SIP协议呼叫流程及协议分析

一、SIP协议介绍: 会话发起协议SIP(Session Initiation Protocol)是一个应用层控制信令协议,用于建立、更改和终止多媒体会话或呼叫。SIP作为一个基础,可以在其上提供很多不同的服务。目前已经定义的媒体类型有音频、视频、应用、数据、控制。 二、SIP呼叫流程: 注册流程: (1)用户首次试呼时,终端代理A 向代理服务器发送REGISTER 注册请求; (2)代理服务器通过后端认证/计费中心获知用户信息不在数据库中,便向终端代理回送401Unauthorized 质询信息,其中包含安全认证所需的令牌; (3)终端代理提示用户输入其标识和密码后,根据安全认证令牌将其加密后,再次用REGISTER 消息报告给代理服务器; (4)代理服务器将REGISTER 消息中的用户信息解密,通过认证/计费中心验证其合法后,将该用户信息登记到数据库中,并向终端代理A 返回成功响应消息200 OK。 呼叫流程:

(1)用户摘机发起一路呼叫,终端代理A 向该区域的代理服务器发起Invite 请求;(2)代理服务器通过认证/计费中心确认用户认证已通过后,检查请求消息中的Via 头域中是否已包含其地址。若已包含,说明发生环回,返回指示错误的应答;如果没有问题,代理服务器在请求消息的Via 头域插入自身地址,并向Invite 消息的To 域所指示的被叫终端代理B 转送Invite 请求; (3)代理服务器向终端代理A 送呼叫处理中的应答消息,100 Trying; (4)终端代理B 向代理服务器送呼叫处理中的应答消息,100 Trying; (5)终端代理B 指示被叫用户振铃,用户振铃后,向代理服务器发送180 Ringing 振铃信息; (6)代理服务器向终端代理A 转发被叫用户振铃信息; (7)被叫用户摘机,终端代理B 向代理服务器返回表示连接成功的应答(200 OK);(8)代理服务器向终端代理A 转发该成功指示(200 OK); (9)终端代理A 收到消息后,向代理服务器发ACK 消息进行确认; (10)代理服务器将ACK 确认消息转发给终端代理B; (11)主被叫用户之间建立通信连接,开始通话; 结束流程:

sip协议原理分析及总结

SIP协议学习总结 1、SIP协议定义 SIP(Session Initiation Protocol,即初始会话协议)是IETF提出的基于文本编码的IP电话/多媒体会议协议。用于建立、修改并终止多媒体会话。SIP 协议可用于发起会话,也可以用于邀请成员加入已经用其它方式建立的会话。多媒体会话可以是点到点的话音通信或视频通信,也可以是多点参与的话音或视频会议等。SIP协议透明地支持名字映射和重定向服务,便于实现ISDN,智能网以及个人移动业务。SIP协议可以用多点控制单元(MCU)或全互连的方式代替组播发起多方呼叫。与PSTN相连的IP电话网关也可以用SIP协议来建立普通电话用户之间的呼叫。 SIP协议在IETF多媒体数据及控制体系协议栈结构的位置 H.323SIP RTSP RSVP RTCP H.263 etc. RTP TCP UDP IP PPP Sonet AAL3/4AAL5 ATM Ethernet PPP V.34 SIP协议支持多媒体通信的五个方面: ◆用户定位:确定用于通信的终端系统; ◆用户能力:确定通信媒体和媒体的使用参数; ◆用户有效性:确定被叫加入通信的意愿; ◆会话建立:建立主叫和被叫的呼叫参数; ◆会话管理:包括呼叫转移和呼叫终止; SIP协议的结构 SIP是一个分层的协议,也就是说SIP协议由一组相当无关的处理层次组成,这些层次之间只有松散的关系。 SIP最底层的是它的语法和编码层。编码方式是采用扩展的Backus-Naur Form grammar (BNF范式)。 第二层是传输层。它定义了一个客户端发送请求和接收应答的方式,以及一 个服务器接收请求和发送应答的方式。所有的SIP要素都包含一个通讯层。 第三层是事务层。事务是SIP的基本组成部分。一个事务是UAC向UAS发送的一个请求以及UAS向UAC发送的一系列应答。事务层处理应用服务层的重发,匹配请求的应答,以及应用服务层的超时。任何一个用户代理客户端完成的事情都是

SIP协议相关文件

Osip2是一个开放源代码的sip协议栈,是开源代码中不多使用C语言写的协议栈之一,它具有短小简洁的特点,专注于sip底层解析使得它的效率比较高。 eXosip是Osip2的一个扩展协议集,它部分封装了Osip2协议栈,使得它更容易被使用。 一、介绍 Osip2是一个开放源代码的sip协议栈,是开源代码中不多使用C语言写的协议栈之一,它具有短小简洁的特点,专注于sip底层解析使得它的效率比较高。但缺点也专门明显,首先确实是可用性差,没有专门好的api封装,使得上层应用在调用协议栈时专门破裂;其次,只做到了transaction层次的协议过程解析,

缺少call、session、dialog等过程的解析,这也增加了使用的难度;再次,缺少线程并发处理的机制,使得它的处理能力有限。 eXosip是Osip2的一个扩展协议集,它部分封装了Osip2协议栈,使得它更容易被使用。eXosip增加了call、dialog、registration、subscription等过程的解析,使得有用性更强。然而eXosip局限于UA的实现,使得它用于registrar、sip server等应用时极其不容易。另外,它并没有增加线程并发处理的机制。而且只实现了音频支持,缺少对视频和其它数据格式的支持。 综合来讲,Osip2加上eXosip协议栈仍然是个实现Sip协议不错的选择。因此需要依照不同的需求来增加更多的内容。 二、Osip2协议栈的组成 Osip2协议栈大致能够分为三部分:sip协议的语法分析、sip 协议的过程分析和协议栈框架。 1、Sip协议的语法分析:

要紧是osipparser2部分,目前支持RFC3261和RFC3265定义的sip协议消息,包括INVITE、ACK、OPTIONS、CANCEL、BYE、SUBSCRIBE、NOTIFY、MESSAGE、REFER和INFO。不支持RFC3262定义的PRACK。 遵循RFC3264关于SDP的offer/answer模式。带有SDP的语法分析。 支持MD5加解密算法。支持Authorization、www_authenticate 和proxy_authenticate。 2、Sip协议的过程分析: 要紧是osip2部分,基于RFC3261、RFC3264和RFC3265的sip 协议描述过程,围绕transaction这一层来实现sip的解析。 Transaction是指一个发送方和接收方的交互过程,由请求和应答组成。请求分为Invite类型和Non-Invite类型。应答分为响应型的应答和确认型的应答。响应型的应答是指那个应答仅代表

SIP协议主要消息讲解

第一章SIP协议主要消息 1.1 SIP消息分类 SIP协议是以层协议的形式组成的,就是说它的行为是以一套相对独立的处理阶段来描述的,每个阶段之间的关系不是很密切。 SIP协议将Server和User Agent之间的通讯的消息分为两类:请求消息和响应消息。 请求消息:客户端为了激活特定操作而发给服务器的SIP消息,包括INVITE、ACK、BYE、CANCEL、OPTION和UPDATE消息。 SIP请求的6种方法: 1、邀请(INVITE)——邀请用户加入呼叫 2、确认(ACK)——确认客户机已经接收到对INVITE的最终响应 3、可选项(OPTIONS)——请求关于服务器能力的信息 4、再见(BYE)——终止呼叫上的两个用户之间的呼叫 5、取消(CANCEL) 6、注册(REGISTER)——提供地址解析的映射,让服务器知道其它用户的位置 响应消息:服务器向客户反馈对应请求的处理结果的SIP消息,包括1xx、2xx、3xx、4xx、5xx、6xx响应 1.2 SIP消息结构 请求消息和响应消息都包括SIP消息头字段和SIP消息体字段; SIP消息头主要用来指明本消息是有由谁发起和由谁接受,经过多少跳转等基本信息; SIP消息体主要用来描述本次会话具体实现方式; 1.3 消息格式 1.3.1 请求消息格式 SIP请求消息的格式,由SIP消息头和一组参数行组成,如图1-1所示。通过换行符区分命令行和每一条参数行。

图1-1 SIP 请求消息结构 注意:参数行的顺序不是固定的。对应的参数解释见错误!未找到引用源。。 消息体定义: Call-ID :头字段是用来将消息分组的唯一性标识 From :头字段是指示请求发起方的逻辑标识,它可能是用户的注册地址。From 头字段包含一个URI 和一个可选的显示名称 CSeq :头字段用于标识事务并对事务进行排序。它由一个请求方法和一个序列号组成,请求方法必须与对应的请求消息类型一致 Max-Fowords :头字段限定一个请求消息在到达目的地之前允许经过的最大跳数。它包含一个整数值,每经过一跳,这个值就被减一。如果在请求消息到达目的地之前该值变为零,那么请求将被拒绝并返回一个483(跳数过多)错误响应消息。 Via :头字段定义SIP 事务的下层(传输层)传输协议,并标识响应消息将要被发送的位置。只有当到达下一跳所用的传输协议被选定后,才能在请求消息中加入Via 头字段值。 expires :参数指出了该值中包含的URI 地址的有效期。这个参数的值是以秒为单位计算的。如果没有提供该参数,那么URI 地址的有效期由Expires 头字段值来确定。 消息头

SIP协议格式详解

1.SIP 1.1.1.SIP格式 每条SIP消息由以下三部分组成: (1)起始行(Start Line):每个SIP消息由起始行开始。起始行传达消息类型(在请求中是方法类型,在响应中是响应代码)与协议版本。起始行可以是一请求行(请求)或状态行(响应)。 (2)SIP头:用来传递消息属性和修改消息意义。它们在语法和语义上与HTTP头域相同(实际上有些头就是借自HTTP),并且总是保持格式:<名字>:<值>。 (3)消息体:用于描述被初始的会话(例如,在多媒体会话中包括音频和视频编码类型,采样率等)。消息体能够显示在请求与响应中。SIP清晰区别了在SIP起始行和头中传递的信令信息与在SIP 范围之外的会话描述信息。可能的体类型就包括本文将要描述的SDP会话描述协议。

1.1. 2.消息头 Header field where proxy ACK BYE CAN INV OPT REG Accept R - o - o m* o Accept 2xx - - - o m* o Accept 415 - c - c c c Accept-Encoding R - o - o o o Accept-Encoding 2xx - - - o m* o Accept-Encoding 415 - c - c c c Accept-Language R - o - o o o

Accept-Language 2xx - - - o m* o Accept-Language 415 - c - c c c Alert-Info R ar - - - o - - Alter-Info 180 ar - - - o - - Allow R - o - o o o Allow 2xx - o - m* m* o Allow r - o - o o o Allow 405 - m - m m m Authentication-Info 2xx - o - o o o Authorization R o o o o o o Call-ID c r m m m m m m Call-Info ar - - - o o o Contact R o - - m o o Contact 1xx - - - o - - Contact 2xx - - - m o o Contact 3xx d - o - o o o Contact 485 - o - o o o Content-Disposition o o - o o o Content-Encoding o o - o o o Content-Language o o - o o o Content-Length ar t t t t t t Content-Type * * - * * * Cseq c r m m m m m m Date a o o o o o o Error-Info 300-699 a - o o o o o Expires - - - o - o From c r m m m m m m In-Reply-To R - - - o - - Max-Forwards R amr m m m m m m Min-Expires 423 - - - - - m MIME-Version o o - o o o Organization ar - - - o o o Priority R ar - - - o - - Proxy-Authenticate 407 ar - m - m m m Proxy-Authenticate 401 ar - o o o o o Proxy-Authorization R dr o o - o o o Proxy-Require R ar - o - o o o Record-Route R ar o o o o o o Record-Route 2xx,18x mr - o o o o - Reply-To - - - o - - Require ar - c - c c c - o o o o o Retry-After 404, 413,

SIP协议扩展分析

协议分析 协议扩展分析 STATE KEY LABORATORY OF SWITCHING TECHNOLOGY AND TELECOMMUNICATION NETWORK ????STATE KEY LABORATORY OF SWITCHING TECHNOLOGY AND TELECOMMUNICATION NETWORK ???STATE KEY LABORATORY OF SWITCHING TECHNOLOGY AND TELECOMMUNICATION NETWORK STATE KEY LABORATORY OF SWITCHING TECHNOLOGY AND TELECOMMUNICATION NETWORK ???STATE KEY LABORATORY OF SWITCHING TECHNOLOGY AND TELECOMMUNICATION NETWORK ?

SWITCHING TECHNOLOGY AND TELECOMMUNICATION NETWORK 与传统 Telephony 业务互通的场景 ?Encapsulation –'Transparent' Transit of ISUP Messages –SIP 与ISUP 协议不可能一一映射 –如果为了保证SP1-SP2之间业务的无缝互通,只有SP1发出的ISUP 消息能够透传到SP2–将ISUP 消息封装在SIP 消息体里–Content-Type: application/ISUP

STATE KEY LABORATORY OF SWITCHING TECHNOLOGY AND TELECOMMUNICATION NETWORK ?可STATE KEY LABORATORY OF SWITCHING TECHNOLOGY AND TELECOMMUNICATION NETWORK SIP GW INVITE SIP Proxy PSTN PSTN IAM SIP GW Transaction STATE KEY LABORATORY OF SWITCHING TECHNOLOGY AND TELECOMMUNICATION NETWORK ???准?STATE KEY LABORATORY OF SWITCHING TECHNOLOGY AND TELECOMMUNICATION NETWORK SIP GW INVITE SIP Proxy PSTN PSTN IAM SIP GW STATE KEY LABORATORY OF SWITCHING TECHNOLOGY AND TELECOMMUNICATION NETWORK ?规则CANCEL ???

sip协议解析与实现(c和c 使用osip)11

sip协议解析与实现(c和c++使用osip)11 第八章查询能力 SIP的OPTIONS方法允许一个UA查询另外一个UA或者一个代理服务器的能力。这能让客户端探测关于它们所支持的方法、内容类型、扩展和编码等信息,而不用"呼叫(ringing)"另外一端。例如,在客户端插入了一个Require头域到INVITE 中,并列出了不确定目标UAS是否支持的能力之前,它可以先使用OPTIONS方法查询目标UAS是否要查询的选项被目标UAS在应答的Supported头域中返回。所有UA必须支持OPTIONS方法。 OPTIONS方法的目标使用Request-URI来标识,因为它可以表示不同的UA或者SIP服务器。如果OPTIONS被定位到一个代理服务器,Request-URI不由客户端设置,这类似于REGISTER请求设置Request-URI的方法。 如果服务器接收到一个Max-Forwards头域的值为0的的OPTIONS请求,它要对这个请求进行应答而不用管Request-URI. 这个行为与HTTP/1.1一致。这个行为可以被用于"追踪路由线路(traceroute)"功能,从而使用发送一系列递增的 Max-Forwards值的OPTIONS请求的方法检查消息路由过程中个别服务器的能力。

作为一般UA的行为,如果OPTIONS长时间没有应答,事务层能够返回一个超时错误。这将指出,目标是不可到达的并且查询的能力是不可以使用的。 OPTIONS请求可能由建立一个对话的一端发送,用于查询对端在后面的对话中可能会被使用到的能力。 第一节构造OPTIONS请求 OPTIONS请求使用像RFC3261第8.1.1讨论的标准的构造SIP请求的规则来构造。 OPTIONS可能会有一个Contact头域。 应该包含一个Accept头域用来指出UAC希望接收到的应答中的消息体类型。典型的,这可能被设置成用来描述UA的媒体能力的类型,比如,SDP(application/adp)。OPTIONS请求的应答被认为是有限定范围的,它被限定在原始请求的Request-URI内。只有当OPTIONS被作为建立对话的一部分发送,它保证会话中后继的请求也由应答OPTIONS的服务器所接收时,对OPTIONS请求的应答才是可用的。 OPTIONS请求的例子: OPTIONS sip:carol@https://www.wendangku.net/doc/bf12167300.html, SIP/2.0 Via: SIP/2.0/UDP https://www.wendangku.net/doc/bf12167300.html,;branch=z9hG4bKhjhs8ass877 Max-Forwards: 70

SIP协议介绍及应用前景分析

2017年第2期信息通信2017 (总第170 期)INFORM ATION & COMMUNICATIONS (Sum. No 170) SIP协议介绍及应用前景分析 杜鑫 (中国人民解放军9155〇部队3分队) 摘要:S IP是一种源于互联网的IP语音会话控制协议,具有灵活、易于实现、便于扩展等特点。文章介绍了 S IP协议的发 展历史、网络组成,通过与传统的电信网络协议对比分析了 S IP协议的特点,结合S IP协议特点及现状对其应用前景进 行了分析。 关键词:SIP ;融合通信;VO LTE;互联网 中图分类号:TN913.23 文献标识码:A文章编号:1673-1131(2017)02-0105-02 1S IP协议的发展历史 SIP(Session Initiation Protocal)会话初始化协议的概念在 1996年出现,主要运用在Internet的不同文本类型当中,用于 电子邮件以及文字聊天等各项环节中。1999年由IE T F最初 建立,应用于Internet的相关网络环境结构当中,实现实时性 通讯。二H世纪初,由IE T F当中的S IP工作团队发出 RFC3261建议后才得到了逐渐推广。 S IP协议最初应用于Internet网络中,实现多媒体的会话 建立控制,后来作为IMS(IP M ultim edia Subsystem IP多媒体 子系统)的主要信令应用于电信领域的VOBB(V oiceover Broad Band宽带语音),近年来随着LT E的推广,SIP成为LTE 的语音最终解决方案V O LTE的主要信令协议,其应用范围从 特定环境逐步扩展至主流多媒体通信环境。 2 S IP网络组成 2.1 S IP协议在IM S中的应用 S IP协议是IM S中的基本协议,应用于M w、U t、ISC、M i、M g、M j、M k、M r等众多接口,整个IM S网络的会话控制功能 都是由S IP协议完成,具体使用情况如图1所示: P-CSCF ATS IM-SSF SIPl 4 M RFC UGC 19 图1S IP协议在IM S网络中应用示意图 2.2 S IP网络架构 S IP使用CS(Client/server客户端/服务器)架构如图2所 示,交互形式为请求、响应的方式。User Agent C lie n t即客户 端,发起S IP请求;User Agent Server即服务器端,进行S IP请 求处理,并进行响应,Request Proxy Server起到消息路由转发的功能。 3.2认证测试标准 系统B模型采用的简表是07B0,根据K N X协议必须满 足如表1所列的功能需求。认证测试将会针对这些基本功能 来设计测试例进行测试。 按照测试规范[6]要求,先通过E TS配置软件配置好K N X 设备后,采用E IT T软件编写好测试例,运行测试序列,所有测 试例均通过,说明该协议栈符合K N X协议规范要求。在软件 开发过程中,可以通过该方式进行各个功能点的验证,从而保 证软件的可靠性,缩短最终的认证周期。 表1系统B的基本功能表 协议栈主要功能 数据链路层数据帧的封装和解析、应答、数据过滤 网络层正确设置路由计数器 传输层支持四种传输模式;支持style3的状态机 配置和管理直接内存访问;用户内存的直接内存访问;验证模式;接口对象处理;下载状态机;运行状态机;重启;授权;设备描述业务;编程模式;K N X序列号;地址表?,关 联表;组对象表;应用相关参数 4结语 本文介绍的系统B模型的K N X设备是基于LPC处理器、L in u x系统来设计和实现的,并采用了 NCN5120芯片作为 K N X总线收发模块。该设备通过了第三方认证测试实验室的 认证测试,符合K N X协议规范。系统B模型K N X具有更丰 富的资源,可应用于复杂的智能家居和楼宇控制系统中,具有 广阔的市场价值和应用前景。 参考文献: [1]夏长凤.基于K N X总线智能家居控制系统的设计[J].电 器自动化,2016, 38⑴. [2]任志勇.基于K N X智能家居的应用[J].重庆电子工程职 业学院学报,2010, 19(4). [3]Jason Richards,Development o f Complex K N X Devices. W EINZIERL ENGINNERING GmbH,2010. [4]Konnex Association.Konnex Standard,Vol3,System Specifications,2013. [5]Konnex Association.Konnex Standard,Vol6,Profiles,2013. [6]Konnex Association.Konnex Standard,Vol8,System Test Specifications,2013. 作者简介:朱莉(1979-),女,四川省资中县人,电子工程师,硕 士学位,主要研宄方向为智能家居、大数据、LTE。 105

SIP协议测试总结

SIP协议测试总结 一:响应码定义 1、响应(Response) 1)1XX:临时响应,表示请求消息正在被处理。 2)2XX:成功响应,表示请求已被成功接收,完全理解并被接受。 3)3XX:重定向响应,表示需采取进一步以完成该请求。 4)4XX:客户机错误,表示请求消息中包含语法错误信息或服务器无法完成客户机请求。 5)5XX:服务器错误,表示服务器无法完成合法请求。 6)6XX:全局故障,表示任何服务器无法完成该请求。 100:临时响应,正在尝试 180:振铃,UA收到INVITE请求之后用该响应通知用户,该响应也可以再发起一个本地回铃 181:呼叫正在转发 182:排队 183:会话进行 200:OK 300网络协议不兼容:会话描述中的一个或多个网络协议不可用。 301网络地址格式不兼容:会话描述中的一个或多个地址格式不可用。 302传送协议不兼容:会话描述中的一个或多个传送协议不可用。 303带宽单位不兼容:会话描述中的一个或多个带宽度量单位不被理解。 304媒体类型不可用:对话描述中的一个或多个媒体类型不可用。 305媒体格式不兼容:对话描述中的一个或多个媒体格式不可用。 306媒体特征不被理解:对话描述中的一个或多个媒体特征不被支持。

307对话描述参数不被理解:除上述几种参数之外的参数不被理解。 330组播不可用:用户站点不支持组播。 331单播不可用:用户站点不支持单播通信(通常是由于防火墙的存在)。 370带宽不足:对话描述中定义的或者媒体定义的带宽超出可用带宽。 399混合告警:该告警表示用户存在的任意一种错误,收到该告警的系统不可以采取任何自动的动作 401:未授权 403:禁止 404:未找到 405:不允许的请求方法 406:不接受 407:代理服务器需要鉴权 408:请求超时 413:请求消息过大 415:不支持的媒体类型 414:Request-URI过长 415:不支持媒体类型 416:不支持的URI方案 420:错误的扩展 421:需要扩展支持 423:间隔太短 480:临时不可用 481:呼叫/事务不存在 482:检测到路由循环

SIP协议的认识及呼叫追踪分析实验

《软交换系统实验》实验报告四 实验室名称:现代通信网络实验室实验日期: 2011 年 6月 5日 学院(系)专业、班级姓名成绩 实验项目SIP协议的认识及呼叫追踪分析实验指导教师 教师评语 教师签名: 年月日 一、实验过程原始记录(数据、图表等) 1.设备配置实验记录 设备名称设备IP地址短号设置长号设置 EIA2016设备192.168.0.3 101 EIT200 SIP电话192.168.1.101 802 2.呼叫跟踪实验记录 3.1)主叫信息 群号: 1 短号: 101 长号:用户标识码: (2)被叫信息 群号:1 短号: 102 长号:用户标识码: (3)呼叫消息原始记录(包括:主叫方和被叫方与EIX交互的信令消息) ①主叫方与EIX交互的呼叫信令消息跟踪结果: [151-12:02:09:970] MSG :--->> to 192.168.0.3/58525 crypt:TRUE Phone Call proto:P2PV2 len:739 INVITE sip:25130016@192.168.0.3 SIP/2.0 Via: SIP/2.0/UDP 192.168.0.3:2080;branch=z9hG4bK7155de6d801d63c038d6335428dfb99e ;rport From: ;tag=95e1a9c636206889ba1e1906afc802bf To: Call-ID: 9677d064ead93fedc5873390abd0f84a@192.168.0.3 CSeq: 25971 INVITE Contact: Supported: 100rel Allow: INVITE, ACK, CANCEL, BYE, OPTIONS, [152-12:02:09:970]INFO, UPDATE, PRACK Content-Type: application/sdp Max-Forwards: 70 Content-Length: 244 v=0

SIP协议讲解

14 SIP协议关于本章

本章将对SIP协议做一简要介绍,包括涉及的基本概念、消息结构以及简要的消息流程。 14.1 概述 SIP(Session Initiation Protocol)是一个应用层控制协议,用于创建、更改和终止会话。这里的会话类型包括多媒体会议、Internet电话等类似的应用。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请求路由到目的地的中间路径。它既是客户端也是服务器。用户请求可以直接被代理服务器处理或被转发给别的代理服务器。代理服务器在转发之前要对消息进行解析,必要时还会改写请求。 重定向服务器

相关文档