SIP协议介绍及其在IMS中的应用.ppt
- 文档编号:18867042
- 上传时间:2024-02-03
- 格式:PPT
- 页数:57
- 大小:1.60MB
SIP协议介绍及其在IMS中的应用.ppt
《SIP协议介绍及其在IMS中的应用.ppt》由会员分享,可在线阅读,更多相关《SIP协议介绍及其在IMS中的应用.ppt(57页珍藏版)》请在冰点文库上搜索。
IMS技术交流技术交流-SIP协议介绍及其在协议介绍及其在IMS中的应用中的应用TopicsTopicsSIP协议简介协议简介SIP网络结构SIP协议模型SIP消息格式SIP建立通讯的过程SIP协议的特点IMS中的中的SIPIMS中的SIP协议IMS典型信令流程讲解SessionInitiationProtocol-会话发起协议是IETF制定的多媒体通信协议,它是一个基于文本的应用层控制协议,独立于底层协议,用于建立、修改和终止IP网上的双方或多方的多媒体会话。
SIP主要借鉴了Web网的HTTP和SMTP两个协议,具有灵活,可扩展,开放等特点。
什么是SIP?
SIP协议支持代理、重定向、登记定位用户等功能,支持用户移动,与RTP/RTCP、SDP、RTSP、DNS等协议配合,可支持和应用于语音、视频、数据等多媒体业务,同时可以应用于Presence(呈现)、InstantMessage(即时消息,类似QQ)等特色业务。
什么是SIP?
SIP的功能特点的功能特点用户定位(Userlocation):
确定用于通讯的终端;用户可用性(Useravailability):
确定被叫方是否空闲及是否愿意进行通讯;用户能力(Usercapabilities):
确定使用的媒体和媒体参数;会话建立(Sessionsetup):
邀请和提示被叫,在主被叫之间传递呼叫参数;会话管理(Sessionmanagement):
包括会话转移和终结会话、修改会话参数、调用业务等。
SIP的最强大之处就是用户定位功能。
SIP本身含有向注册服务器注册的功能,也可以利用其它定位服务器如DNS(DomainNameSystem)、LDAP(轻型目录访问协议)等提供的定位服务器来增强其定位功能。
SIP具有很强的包容性,它可以建立如音频、视频、多方通话等各种会话,也可以被用来传送即时消息和文件,这得益于它对HTTP等协议的吸收借鉴。
这使运营商能通过统一的业务平台提供综合业务,实现网络的融合。
SIP在灵活、方便提供业务方面具有多方面优点。
SIP网络结构SIP网络实体UserAgents-用户代理用户代理发起和终止会话的实体,包含两个功能实体UserAgentClients(UAC)发起SIP事务请求的功能实体UserAgentServer(UAS)接收SIP事务请求的功能实体,基于UAC发出的请求,产生相应的响应UAC和UAS-都能终止一个呼叫UAC/UAS是暂时性的,不存在静态的意义,即:
该角色只在一个事务(请求、最终响应)期间有意义,一个UserAgent既可以作为UAC也可以作为UAS。
ProxyServer-代理服务器代理服务器与重定向服务器(RedirectServer)及位置服务器(LocationServer)有联系为其它的客户机代理,进行SIP消息的转接和转发的功能。
消息机制与UAC和UAS相似.对收到的请求消息进行翻译和处理后,传递给其他的服务器.对SIP请求及响应进行路由.LocationServer-位置服务器位置服务器代理服务器或重定向服务器从位置服务器获取被叫当前可能的位置信息。
位置服务器可以在物理上与SIP网络服务器处于同一位置,也可以是单独配置的。
网络服务器访问位置服务器的方式(可选用LDAP,轻型目录访问协议)并不属于SIP协议的范畴,位置服务器也不能算是一种SIP服务器。
RegistrarServer-登记服务器登记服务器接收REGISTER请求完成用户注册可以支持鉴权的功能SIP网络实体RedirectServer-重定向服务器重定向服务器与位置服务器(LocationServer)有联系,协议LDAP将用户新的位置返回给呼叫方。
呼叫方可根据得到的新位置重新呼叫。
与代理服务器proxyserver不同的是,redirectserver不会发起自己的呼叫.与useragent不同的是,redirectserver不接受呼叫终止或主动终止呼叫.SIP网络实体SIP协议模型语法和编码层语法和编码层采用扩展的BNF语法。
传输层传输层发送和接收SIP消息。
事务层事务层匹配事务,处理应用层重传和超时,匹配请求和响应。
事务用户层事务用户层创建和取消事务实例除无状态proxy外,每个SIP实体都是一个事务用户。
SIP协议的承载UDPTCPTLS源小,文送资开销报传,。
实现简单缺乏可靠机制,依传输于赖SIP事的重务层传机制;大于MTU的文报依于赖IP分片。
层提供可靠接,分段连。
传输流式,必传输协议栈行用消息重须进应层;组面向接的特性,用连在UNI源侧时资开销大较提供可靠接,文连报送,分段。
传传输心跳机制。
SIP协议SCTPSIP事务SIP事务由一个请求及该请求的响应组成,响应包括一个最终响应及可能的多个临时响应。
事务层处理请求与响应的重发,保证事务的原子性。
事务处理对INVITE请求处理与其它方法略有不同,UAS的2XX响应重发由UACore而非事务层完成,对于INVITE请求,若最终响应代码不为2XX,则事务还包括ACK请求。
事务匹配:
TopVia的Branch参数及CSeq字段,若为UAS事务还需比较TopVia的Sent-by参数。
SIP对话SIP对话表示了一对UA站点间的持久性的SIP协议关系。
在RFC3261中只有INVITE请求及其2XX响应才能创建对话.到目前为止共有INVITE、REFER、SUBSCRIBE三个SIP请求可以创建对话。
对话由Dialog-ID表示,Dialog-ID由对话的Call-ID、LocalTag(对于UAC是请求消息中From的tag参数值)、RemoteTAG(UAC请求的TO首部的tag参数值)一个对话可由多个事务所组成SIP路由ProxySIPRequestINVITEsip:
SIP/2.0Route:
Record-route:
Max-Forwards:
32.SIP可以看作网络IP之上的一覆盖,有着自己完的路由机制网个网备当Route存在,以时TopRoute作路由的依据,否以为则Request-URI准为SIP求中请Record-Route部在中返回,作的路由集,的生头响应为对话它存周期也是一。
个对话SIP消息有两类:
请求和响应,消息格式如下:
generic-message=start-line*message-headerCRLFmessage-bodystart-line=Request-Line/Status-LineSIP消息格式Request-line=MethodSPRequest-URISPSIP-VersionCRLFMethod:
方法名,目前RFC3261规范定义了六种方法:
REGISTER、INVITE、ACK、CANCEL、BYE、OPTIONS,其他的标准跟踪(Standardstrack)RFC可能定义另外的方法,比如:
REFER、UPDATE、PRACKSIP-Version:
目前为SIP/2.0;不同的消息可能携带不同的SIP版本号,SIP实体应该参考该版本号确定相应的处理Request-URI:
一个SIPURI或者SIPSURI,该请求指向的用户或者服务。
也可以支持其他的编号方案,如:
TELURI;SIP实体可以通过任何可行的方法,将这些编号方式转换为SIP/SIPSURISIP消息-请求SIP消息-请求INVITE邀请用户参与来发起一次呼叫.ACK-请求用于证实UAC已收到对于INVITE请求的最终响应,和INVITE消息配套使用.BYE-USERAGENT用此方法指示释放呼叫.CANCEL-该方法用于取消一个尚未完成的请求,对于已完成的请求则无影响.REGISTER客户使用该方法在服务器上登记列于To字段中的地址.OPTIONS用于询问服务其能力.Status-line=SIP-VersionSPStatus-CodeSPReason-PhraseCRLFStatus-Code:
响应码,3数字整数:
1xx、2xx、3xx、4xx、5xx、6xxSIP-Version:
SIP版本号Reason-Phrase:
原因短语,这个字段是对Status-Code字段的一个文本描述;Status-Code是用作计算机处理用的,Reason-Phrase则是给用户看的;协议中对每种Status-Code定义了相应的英文文本含义,但实现的时候,可以选择采用不同的文本、不同的语言来描述SIP消息-响应SIP消息-响应响应码的第一个数字用来给响应消息进行分类:
1xxProvisional:
临时响应,表明UAS已经收到请求,正在继续进行处理,UAC收到该响应后,进行相应处理,但不能结束事务;2xxSuccess:
成功响应,请求被成功的收到、理解并接受;3xxRedirection:
重定向响应,为完成请求,需要进一步的动作,一般携带重定向地址,UAC收到后,自动或者手工选择重定向地址,重新发起请求;4xxClientError:
收到的请求中包含语法错误,或者由于UAC的原因服务器不能完成该请求;5xxServerError:
服务器不能完成一个明显有效的请求;6xxGlobalError:
请求不能在任何服务器上完成;SIP消息-响应响应还可以分为临时响应和最终响应临时响应(ProvisionalResponse):
临时响应收到后,不代表事务的结束,只代表事务的一个中间状态,有:
1xx;最终响应(FinalResponse):
最终响应代表一个事务的结束,UAC收到后应该释放事务相关的资源,有:
2xx、3xx、4xx、5xx、6xx,即除1xx以外的响应都是最终响应;SIP消息格式示例消息格式示例INVITEsip:
SIP/2.0Via:
SIP/2.0/UDP5555:
aaa:
bbb:
ccc:
ddd:
1357;comp=sigcomp;branch=z9hG4bKnashds7Max-Forwards:
70Route:
Content-Type:
application/sdpContent-Length:
()v=0o=-29879336152987933615INIP65555:
aaa:
bbb:
ccc:
ddds=-c=INIP65555:
aaa:
bbb:
ccc:
dddt=00m=video3400RTP/AVP9899b=AS:
75a=curr:
qoslocalnonea=curr:
qosremotenonea=des:
qosmandatorylocalsendrecva=des:
qosnoneremotesendrecva=rtpmap:
98H263a=fmtp:
98profile-level-id=0a=rtpmap:
99MP4V-ESm=audio3456RTP/AVP9796请求行消息头消息体SIP/2.0200OKVia:
SIP/2.0/UDPFrom:
ZhangliTo:
LimingCall-ID:
CSeq:
1INVITEContact:
Content-Type:
application/sdpContent-Length:
193v=0o=-29879336152987933615INIP65555:
aaa:
bbb:
ccc:
ddds=-c=INIP65555:
aaa:
bbb:
ccc:
dddt=00m=video3400RTP/AVP9899b=AS:
75a=curr:
qoslocalnonea=curr:
qosremotenonea=des:
qosmandatorylocalsendrecva=des:
qosnoneremotesendrecva=rtpmap:
98H263a=fmtp:
98profile-level-id=0a=rtpmap:
99MP4V-ESm=audio3456RTP/AVP9796响应行消息头消息体SIP消息格式示例消息格式示例SIP消息的关键消息头To:
消息的逻辑接收者,其地址由SIPURI进行标识,由用户部分(userpart)和域(domain)构成。
在To字段中可以带有一个可选的显示姓名部分。
To字段还可以包含一个tag标记,在对话之外的消息的To字段中不允许在To字段包含tag标记,因为To字段的tag标记标识了对话(一个点对点的SIP关系)中的一个“点”,所以,在对话没有建立起来的时候是不能在To字段包含tag标记的。
一个To字段可能是这样的:
To:
Carol。
From:
指示了发起请求的逻辑实体。
与To字段相似,From字段也包含了一个SIP地址和一个可选的显示姓名,From字段必须包含一个tag参数。
Call-ID:
呼叫标识,是Dialog-ID的构成之一。
在同一个对话之内的所有请求和响应都必须包含相同的Call-ID。
由UAC生成的对话之外的(对话尚未建立)请求的时候,必须要由UAC选择一个时空上全局唯一的标识作为Call-ID的值。
Via:
指示传输经过的路径及响应发送的位置,UAC在产生请求且已确定下一跳时必须填入该字段。
其中branch参数用来标识事务,因此必须保证时空上的唯一性,这一条规则的唯一例外是CANCEL消息和对非2xx响应的ACK应答。
CANCEL消息必须和它所要求取消的请求含有相同的branch参数,对非2xx响应的ACK应答和之前它所发送的(并且收到对它的非2xx响应的)INVITE请求含有相同的branch参数。
branch参数必须以“z9hG4bK”开始。
CSeq:
由一个序列数和一个方法组成,用来标识和序列化事务。
方法必须要和发送的请求所期望的行为相一致,序列数在对话之外的请求消息中其值是可以任意选取的。
对于一组请求和响应来说,其CSEQ的值是不变的。
Contact:
给出了在随后的对方的请求可以连接的本地UA实例的SIP地址,即后续请求发送的目的地。
SIP消息的关键消息头Max-Forwards:
指示了请求在发往目的地的途中所经过的“跳”数的上限值,每经过一跳该字段的值减1,如果在到达目的地之前该字段的值已经变为0,则将产生一个483(TooManyHops)的错误响应。
UAC必须给它产生的请求的Max-Forwards字段赋值为70,在不存在环路的情况下,70跳足以保证请求到达目的地。
只有在UA清楚的了解网络的拓扑的情况下,小于70的值才可以考虑被采用。
Route:
请求消息使用的路由,请求消息根据route中的相关信息确定下一条网元的地址。
多条route组成了一个路由集,来决定请求消息所经过的路径。
该路由集根据初始请求中的record-route而形成。
Record_Route:
用于标识prxoy,指定后续消息必须经过该proxy,从而确定了后续请求消息的路径,该头部在请求从本网元发出时添加。
SIP消息的关键消息头SIP地址形式用SIPURI来定义,其格式为:
userhost-用户名主机名(或域名).SIPURI实例:
sip:
hostnamechinatelecom.orgsip:
hostname192.168.10.1sip:
sip:
192.168.10.1SIP地址形式SIP建立通讯的过程建立通讯的过程用SIP来建立通讯通常需要有六个步骤:
1.登记,发起和定位用户.2.进行媒体协商-通常采用SDP方式来携带媒体参数.3.由被叫方来决定是否接纳该呼叫.4.呼叫媒体流建立并交互.5.呼叫更改或处理如呼叫转移.6.呼叫终止.Registration-登记登记每当用户打开SIP终端时(如PC,IPPHONE),将向代理服务器/登记服务器发起登记过程登记过程需要周期刷新登记服务器将把SIP终端所登记的信息传送到位置服务器存放.SIPMessages:
REGISTERRegisterstheaddresslistedintheToheaderfield.200OK.ProxyServerSIPPhoneUserLocation/RegistrationServerREGISTERREGISTER200200Registration注册注册REGISTERsip:
Reg.VSIP/2.0From:
sip:
BobV;tag=123To:
sip:
BobVCall-Id:
1_reg100.2.0.8Cseq:
100REGISTERContact:
sip:
Bob100.2.0.8Expires:
7200Content-Length:
0Via:
SIP/2.0/UDP100.2.0.8SIP/2.0200OKFrom:
sip:
BobV;tag=123To:
sip:
BobV;tag=467Call-Id:
1_reg100.2.0.8Cseq:
100REGISTERContact:
sip:
Bob100.2.0.8Expires:
7200Content-Length:
0Via:
SIP/2.0/UDP100.2.0.8Registration注销注销REGISTERsip:
Reg.VSIP/2.0From:
sip:
BobV;tag=123To:
sip:
BobVCall-Id:
1_reg100.2.0.8Cseq:
100REGISTERContact:
*Expires:
0Content-Length:
0Via:
SIP/2.0/UDP100.2.0.8SIP/2.0200OKFrom:
sip:
BobV;tag=123To:
sip:
BobV;tag=675Call-Id:
1_reg100.2.0.8Cseq:
100REGISTERContact:
*Expires:
0Content-Length:
0Via:
SIP/2.0/UDP100.2.0.8简单的简单的SIP呼叫建立和拆除流程呼叫建立和拆除流程UserAgentAProxyServer1ProxyServer2UserAgentB(5)INVITE(8)100Trying(10)180Ringing(13)200OK(16)ACK(7)INVITE(9)180Ringing(12)200OK(23)200OK(22)200OK(21)200OK(14)200OK(17)ACK(19)BYTE(18)BYTE(20)BYTE(15)ACK
(1)INVITE
(2)407(3)ACK(4)INVITE(6)100Trying(11)180RingingMediaSession简单的简单的SIP呼叫建立和拆除流程呼叫建立和拆除流程各步骤含义如下:
(1):
主叫用户发INVITE请求到代理服务器;
(2):
代理服务器收到INVITE请求,发现没有包含鉴权证书,向主叫响应407(ProxyAuthenticationRequired),要求客户机向代理鉴定自身身份。
(3)(4):
客户机收到407(ProxyAuthenticationRequired)响应,以ACK请求证实,并重新发送INVITE请求,其中包含鉴权证书。
(5)(6):
代理服务器将INVITE请求发给被叫代理服务器,其中可能要执行DNS查询;并向主叫用户返回100(Trying)响应,指示已收到INVITE请求并在处理;(7)(8):
被叫代理服务器收到INVITE请求,响应100(Trying)消息;查询定位服务器得到被叫IP地址,然后向被叫发INVITE请求;(9)(10)(11):
被叫终端收到INVITE请求,提示用户并振铃,180(Ringing)响应通过代理服务器传给主叫,主叫用户可能听到回铃音或显示一信息;(12)(13)(14):
被叫应答时200(OK)响应通过代理服务器传给主叫代理服务器;(15)(16)(17):
主叫终端收到200(OK)响应,回应ACK请求予以证实。
该响应通过代理服务器传给被叫。
(18)(19)(20):
被叫想终止会话,通过自己的用户代理向对方发送BYE请求;(21)(22)(23):
主叫回应200(OK)响应。
SIP呼叫建立和释放消息交互呼叫建立和释放消息交互网元网元RTPMEDIAPATHBYEBYE200(OK)200(OK)呼叫拆除呼叫拆除媒体通道媒体通道呼叫建立呼叫建立ProxyServerProxyServerUserAgentUserAgent100(Trying)100.1.0.252100.1.0.25100.2.0.2100.2.0.8INVITE12INVITE3INVITE5100(Trying)4ACK14ACK13200(OK)10200(OK)12200(OK)11180(Ringing)8180(Ringing)919182017180(Ringing)76100(Trying)OPTIONS15200(OK)16事务1事务2事务3DialogSIP呼叫过程实例呼叫过程实例1INVITEsip:
02220002100.1.0.25;user=phoneSIP/2.0Via:
SIP/2.0/UDP100.1.0.252From:
;tag=1981486230To:
Call-ID:
3733973800100.1.0.252CSeq:
1INVITEContact:
User-Agent:
CiscoATAv2.11ata186(0803a)Expires:
300Content-Length:
245Content-Type:
application/sdpv=0o=02120001573573INIP4100.1.0.252s=ATA186Callc=INIP4100.1.0.252t=00m=audio10000RTP/AVP048101a=rtpmap:
0PCMU/8000/1a=rtpmap:
4G723/8000/1a=rtpmap:
8PCMA/8000/1a=rtpmap:
101telephone-event/8000a=fmtp:
1010-15SIP呼叫过程实例呼叫过程实例2SIP/2.0100TryingVia:
SIP/2.0/UDP100.1.0.252Call-ID:
3733973800100.1.0.252From:
;tag=1981486230To:
CSeq:
1INVITEContent-Length:
0SIP呼叫过程实例呼叫过程实例3INVITEsip:
02220002100.2.0.2:
5060;user=phoneSIP/2.0Via:
SIP/2.0/UDP100.1.0.25:
5060;branch=beb4b540-65a2ea80-f79d94fd-6870ff45-1Via:
SIP/2.0/UDP100.1.0.252From:
;tag=1981486230To:
Call-ID:
3733973800100.1.0.252CSeq:
1INVITEContact:
User-Agent:
Cisco
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SIP 协议 介绍 及其 IMS 中的 应用