斯是陋室,惟吾德馨

除了技术,还有更多值得关注……

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
一、SIP简介

1.1 SIP简介

  SIP(Session Initiation Protocol) 是一个应用层控制协议,它能建立、

修改和终止多媒体会话。SIP是由IETF(Internet Engineering Task Force)的

MMUSIC(Multi- party Multimedia Session Control)工作组提出。

  目前SIP协议标准是RFC3261。SIP协议还是正在快速发展的协议.SIP(Session

Initiation Protocol) 是一个应用层控制协议,它能建立、修改和终止多媒体会话。

 SIP是由IETF(Internet Engineering Task Force)的MMUSIC(Multi- party

Multimedia Session Control)工作组提出。目前SIP协议标准是RFC3261。

 SIP协议还是正在快速发展的协议.

1.2 SIP特点及优点

SIP采用文本编码,使用请求/响应模式

建立会话和描述会话分离

端到端的协议

互操作性

可扩展性

1.3 SIP用途

SIP作为一个创建服务的平台 --- SIP最重要的用途

SIP可以整合Internet服务与多媒体服务,并能传送到用户真实位置。

SIP可以统一多种通信格式。

SIP很适合传输即时消息及状态信息。

SIP使用现有的框架提供新的服务。

SIP使得应用可以分解。

SIP是3G的IP多媒体域主要信令协议。

二、SIP实体介绍

2.1 用户代理(UA:User Agent)

是一个用于和用户交互的SIP实体。

2.2 注册服务器(Registrar Server)

接收与处理用户注册消息的服务器。

2.3 代理服务器(Proxy Server)

完成SIP请求的路由转发、状态控制和事务处理的服务器,分为:
有状态代理服务器
无状态代理服务器

2.4 重定向服务器(Redirect Server)

帮助定位SIP用户代理的服务器。

2.5 定位服务器(Location Server)

存储用户位置信息,并提供位置信息管理的相关服务。
   
不是SIP实体,但是SIP协议体系结构中重要的一部分。

2.6 状态服务器(Presence Server)

接收和处理用户的状态信息、订阅信息,并能够通知订阅者相关状态信息。

不是SIP实体。

2.7 B2BUA(Back to Back User Agent)

由UAC及UAS组成,能够紧密控制会话,如能断开、修改、重新发起会话。

不是SIP实体。


三、SIP消息介绍

3.1 SIP消息类型

请求消息(Request): UAC -> UAS

响应消息(Response): UAS -> UAC

3.2 SIP消息格式

消息分为标题头和消息体两部分。由一个起始行(Start-line),几个标题头组成的

标题头(Message header)、一个标志标题头结束的空行(CRLF)以及可选项的消息体

(Message body)组成 。

请求消息:一个请求行、几个标题头、一个空行和一个消息体组成。其中消息体是

可选的。

响应消息:一个状态行、几个标题头、一个空行和一个消息体组成。其中消息体是

可选的。


消息的例子INVITE:

INVITE sip:60000164@voip.sh SIP/2.0                
From: ;tag=de011cac-13c4-41527d84-2a3a4c3b-896
To:
Call-ID: de0asdf11cac-13c4-41527d84-2a3a4c3b-2e58@voip.sh
CSeq: 1 INVITE
Via: SIP/2.0/UDP 172.1.34.39:5070;branch=z9hG4bK-41527d84-2a3a4c3b-c17
User-Agent: NoiServiceIpPhone
Max-Forwards: 70
Contact:
Content-Length:257

v=0
o=SIPUA 2890844527 2890844527 IN IP4 10.1.1.11
s=session
c=IN IP4 10.1.1.11
t=0 0
m=audio 8000 RTP/AVP 0
c=IN IP4 10.1.1.11
a=rtpmap:0 PCMU/8000
m=video 8004 RTP/AVP 34
c=IN IP4 10.1.1.11
a=fmtp:34 CIF=1 QCIF=1/MaxBR=3200
a=rtpmap:34 H263/90000

消息的例子200 OK:

SIP/2.0 200 OK
From: ;tag=0-13ce-426dec30-7d629ebc-5145
To: ;tag=4c16a8c0-1770-426de64a-10e46-1fa156c0
Call-ID: 15f4730-0-13ce-426dec30-7d629ebc-25af@wellcn.cn
CSeq: 1 INVITE
Via: SIP/2.0/UDP 172.1.34.39:5070;branch=z9hG4bK-426dec30-7d629ebc-509a
Contact:
Content-Type: application/SDP
Content-Length: 248

v=0
o=SIPUA 2890844527 2890844527 IN IP4 172.1.34.17
s=session
c=IN IP4 192.168.22.77
t=0 0
m=audio 10004 RTP/AVP 0
c=audio IP4 192.168.22.77
a=rtpmap:0 PCMU/8000
m=video 10006 RTP/AVP 34
c=video IP4 192.168.22.77
a=rtpmap:34 H263/90000

3.3 SIP方法

SIP定义了6种基本方法,如下:

REGISTER:注册联系信息。
INVITE: 初始化一个会话。
ACK: 对INVITE消息的最终响应。
CANCEL: 终止一个等待处理或正在处理的请求。
BYE: 终止一个会话。
OPTIONS: 查询服务器的性能。

SIP还定义一些扩展方法
SUBSCRIBE:订阅方法
NOTIFY: 事件通知方法
MESSAGE: 即时消息方法

3.4 SIP响应码

SIP状态码定义如下 :
100~199: 报告,表明请求已经收到、继续处理请求
200~299: 成功,表明行为已经成功收到,理解和接受
300~399: 重定向,表明为完成呼叫请求,还需要采取的进一步动作
400~499: 客户端错误,表明请求有语法或不能被服务器执行。客户端需要修 改请求,然后重发请求
500~599: 服务端错误,表明服务器出错,不能执行合法请求
600~699: 全局性错误

3.6 SIP标题头

  SIP标题头分为三个部分 :标题头名 、分隔符、标题头值。

例如:Call-ID: de0asdf11cac-13c4-41527d84-2a3a4c3b-2e58@voip.sh

  SIP定义44个标题头,根据使用方式共分为4大类,如下:

常规首部:主要用于普通的请求和相应的消息。
实体首部:主要用于定义于消息体相关的信息。
请求首部:主要用于客户端上传服务端要求的附加信息。
回应首部:主要用于服务端向客户端或请求者表明特定的附加信息。

3.7 SIP请求的6个必须标题头

 From: 说明了请求的来源。
 To: 说明了请求的接受方。
 Call-ID: 用于区分不同会话的唯一标识。
 CSeq: 用于在同一个会话中区分事务。
 Via: 描述了在请求消息经过的路径。
 Max-Forwards:用作限制请求传输到其目的地跳跃的点数或最大转发次数。

3.8 SIP扩展方法

REFER方法(RFC3515)

要求接收方用REFER请求中所提供的信息来联系另一方。

可用于呼叫转移、会话传递。

INFO方法(RFC2976)

传送会话相关的应用层信息,不改变SIP呼叫状态,可用于传递PSTN信令消息、

DTMF数字,可用于传递无线信号强度信息、影像或其它的非流信息

PRACK方法(RFC3262)

为了提供临时响应的可靠传输。

可用于SIP与PSTN交互场景

可用于呼叫排队通知

可用于确保QoS的协商

UPDATE方法(RFC3311)

不影响会话状态情况下可以更新会话参数

可用于在早期会话中调整会话参数
posted on 2007-10-24 01:45  Alex Lee  阅读(3072)  评论(0编辑  收藏  举报