一、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)
不影响会话状态情况下可以更新会话参数
可用于在早期会话中调整会话参数
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:
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:
To:
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)
不影响会话状态情况下可以更新会话参数
可用于在早期会话中调整会话参数