Sip基础一

来源:互联网 发布:武汉夏威夷水会漂亮js 编辑:程序博客网 时间:2024/06/08 05:39

1.1Sip协议支持多媒体通信的五个方面

用户定位:确定用于通信的终端系统

用户能力:确定通信媒体和媒体的使用参数

用户可达性:确定被叫加入通信的意愿

呼叫建立:建立主叫和被叫的呼叫参数

呼叫处理:包括呼叫转移和呼叫终止

 

1.2SIP协议的主要概念模型

SIP协议模型定义了User Agent和Server等两类主要实体

SIP协议把User Agent(UA)分为两个部分:User Agent Client 和User Agent Server。

呼叫方(User Agent Client)发出邀请(或呼叫),被叫方(User Agent Server)接收或拒绝邀请。

 

SIP协议定义了Proxy Server、Redirect Server和Register Server等三类主要Server:

Register Server主要用于登记分组终端的当前位置和位置服务的原始数据

Proxy Server作为User Agent Client和User Agent Server间的中间媒体,它转发User Agent Server来的邀请,在转发之前,根据被叫标识请求位置服务器获得被叫的可能位置,然后分别向它们发出邀请;

Redirect Server接受User Agent Client来的邀请,根据被叫标识请求位置服务器获得被叫的可能位置,把这些信息返回给邀请的发起者(User Agent Client),和Proxy Server的不同之处就在于它不转发邀请,邀请由主叫终端自己完成

 

Sip协议基本网络模型

 

1.3相关概念

呼叫(Call):一个呼叫是由一个会议中被同一个发起者邀请加入的所有会员组成的。一个SIP呼叫用全局唯一呼叫标示符(CALL_ID)来识别。因此,如果一个用户被不同的人邀请参加同一个多点会议,每个邀请都有一个唯一的呼叫。一个点对点因特网电话交谈也被认为是一个SIP呼叫。在一个基于多点控制单元(MCU)的电话交谈节目中,每个参与者都用一个独立的呼叫与MCU相连。

呼叫支路(Call leg):一个呼叫支路由Call_ID、To以及From之中的addr-spec和tag共同标识。只有addr-spec中的user和hostport部分有意义。在同一个Call_ID中,从A到B的请求与从B到A的请求都属于同一个呼叫支路。呼叫支路也可以说是一次呼叫里消息经过的路径。

会议(Conference):一个多媒体会话,由公共的会话描述来标识。一个会议可由零个或多个成员组成,可以是多点会议,全互联会议,点对点会议,或者是他们的组合。可以用任意数目的呼叫来建立一个会议。

发起者、主叫(Initiator,Caller):发起会议邀请的一方。注意,发起者不一定是会议的建立者。

被邀请者、被叫(Invitee,Callee):被主叫方邀请参加会话的一方。

邀请(Inviation):要求用户加入会话的请求。一个成功的SIP邀请包括两个事务:一个INVITE请求,后面跟一个ACK请求。、

同构请求/响应(Isomorphic reques or response):两个含有相同的Call_ID、To、From和CSep透雨的请求/响应。此外,同构请求还必须含有相同的Rquest-URI。

并行查询(Parallel search):在一个并行查询中,代理收到请求后向可能的被叫用户发出多个请求。并行查询在发出请求时并不等待以前所发请求的响应。

最终响应(Final response):用于结束SIP事务的响应,与临时响应相对。所有的2XX,3XX,4XX,5XX和6XX响应都是最终响应

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

会话(Session):根据SDP(会话描述协议)规范的定义:“多媒体会话是由多媒体发送者,接收者以及从发送者到接收者的数据流组成的集合。例如多媒体会议。”根据定义,一个被叫可以被不同的呼叫多次邀请加入同一个会话。如果用SDP来描述,一个会话可以用户名、会话标识符、网络类型、地址类型和源地址共同定义。

SIP事务(SIP Transaction):一个SIP事务是发生在客户和服务器之间的,包括从客户向服务器发出的第一个请求直到服务器发给客户一个最终响应这期间所有的消息。事务是由一个呼叫支路(Call leg)中的Cseq 顺序号来标识的。一个ACK请求与对应的INVITE请求拥有相同的CSeq,构成自己的事务;

背靠背用户代理(B2BUA):B2BUA是接收请求并作为用户代理服务器的一个逻辑实体。为了确定应该如何响应请求,它作为一个用户代理客户(UAC)发出请求。与代理服务器不同的是它维护对话状态并必须参与所有在已建立的对话上所发的请求。由于它是一个串联UAC和UAS,对于它的行为无须作显式定义。

 

1.4 SIP协议的主要消息

1.4.1 SIP协议是以层协议的形式组成的,就是说它的行为是以一套相对独立的处理 阶段来描述的,每个阶段之间的关系不是很密切。
     SIP协议将Server和UserAgent之间的通讯的消息分为两类:请求消息和响应消息。
     请求消息:客户端为了激活特定操作而发给服务器的SIP消息,包括INVITE、ACK、BYE、CANCEL、OPTION和UPDATE消息。
     响应消息:服务器向客户反馈对应请求的处理结果的SIP消息,包括1xx、2xx、3xx、4xx、5xx、6xx响应

1.4.2 SIP消息结构

请求消息和响应消息都包括SIP消息头字段和SIP消息体字段;
SIP消息头主要用来指明本消息是有由谁发起和由谁接受,经过多少跳转等基本信息;
SIP消息体主要用来描述本次会话具体实现方式;

1.4.3 消息格式

请求消息格式:

SIP请求消息的格式,由SIP消息头和一组参数行组成,如图所示,通过换行符区分命令行和每一条参数行。

注意:参数行的顺序是不固定的。

sip请求消息实例:

INVITE sip:0109@127.0.0.1:5060;User=phone SIP/2.0
Call-ID:01E04633512400000@127.0.0.1

Via:SIP/2.0/UDP127.0.0.1:5061
From:<sip:010203@127.0.0.1:5061;User=phone>;tag=29005358336B534F610A000
To:<sip:0109@127.0.0.1:5060;User=phone>
Contact: sip:010203@127.0.0.1:5061
CSeq:1 INVITE
Max-Forwards:70

Content-Type: application/SDP
Content-Length:168
v=0
o=UserA 2890844526 2890844526 INIP4 here.com
s=Session SDP
c=IN IP4 192.0.0.1
t=0 0
m=audio 49172 RTP/AVP 0 8
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=sendonly

INVITE消息是其中一种SIP请求消息。
第一行由消息头和对端SIP实体的URI(通用资源标识)以及SIP版本号码组成。SIP URI是电话URI,附在IP地址上,表示对端和端点收发SIP消息的端口的域。
“From”、“To”和“Contact”这三个SIP消息头属于电话URI。
当背靠背用户代理发出呼叫时,“From”消息头中的URI填写在“Via”消息头里。
请求消息类型填写在CSeq消息头里,并且当该SIP端点发送一个请求,号码就相应递增。
SIP协议版本为SIP/2.0。其中SDP被加入到INVITE消息内容里,在消息头里的Content-Length说明了SDP内容的长度

 

消息响应格式:

SIP响应消息的格式,由SIP响应消息头和一组参数行组成,如图所示。通过换行符区分命令行和每一行参数

 

注意:参数行的顺序是不固定的。

SIP响应消息实例:

SIP/2.0 200 OK
Content-Type:application/SDP
Via:SIP/2.0/UDP127.0.0.1:5061
Call-ID:01EF351F8140000000000@127.0.0.1
CSeq:1 INVITE
From:<sip:010203@127.0.0.1:5061;User=phone>;tag=29005358336B534F
610A000
To:<sip:0109@127.0.0.1:5060;User=phone>;tag=5358336B534F2900CD1B0000

Contact:<sip:0109@127.0.0.1:55061>
Content-Length:156
v=0
o=HuaweiSoftX3000 1073741824 1073741824 IN IP4 127.0.0.1
s=Sip Call
c=IN IP4 110.111.112.113
t=0 0
m=audio 5060RTP/AVP 0
a=rtpmap:0 PCMU/8000

 

200 OK消息是SIP响应消息的一种。
第一行由SIP版本号和200响应消息组成。
SIP URI是电话URI,附在IP地址上,表示对端和端点收发SIP消息的端口的域。
“From”、“To”和“Contact”这三个SIP消息头属于电话URI。
当背靠背用户代理发出呼叫时,“From”消息头中的URI填写在“Via”消息头里。
请求消息类型填写在CSeq消息头里,并且当该SIP端点发送一个请求,号码就相应递增。
SIP协议版本为SIP/2.0。把SDP加入到INVITE消息内容里,在消息头里说明内容的长度。

 

SIP协议的主要响应码

1.1响应码分类

SIP响应消息用于对请求消息进行响应,指示呼叫的成功或失败状态。不同类的响应消息由状态码来区分,状态码包含三位整数,状态码的第一位用于定义响应类型,另外两位用于进一步对响应进行更加详细的说明。

1XX 进程响应   临时响应

2XX 成功      最终响应

3XX 重定向响应 最终响应

4XX 客户端错误 最终响应

5XX 服务端错误 最终响应

6XX 全局错误   最终响应

临时响应用于指示呼叫正在进行,最终响应应用与结束请求消息。

 

下面分别进行介绍

 

1XX类消息

1xx消息表示服务器或代理正在进行处理,还未得到确定的响应。客户应该继续等待服务器的响应。当服务器预测在200毫秒之内不能得到最终响应时,它应该发送一个1xx响应。服务器可以发送多个1xx响应。、

2XX类消息

2xx消息表示请求已经被接收、处理并被成功接受;
200 :OK---请求成功。

 

3XX类消息

3xx消息表示响应给出有关用户新位置或其它可选服务的信息

 

4XX类消息

4xx消息表示请求消息中包含语法错误或者SIP服务器不能完成对该请求消息的处理

5XX类消息

5xx消息表示SIP服务器故障不能完成对正确消息的处理

6XX类消息

6xx消息表示请求不能在任何SIP服务器上实现

 

 

 

 

0 0
原创粉丝点击