SIP协议培训提纲•协议架构•典型逻辑部件•请求和应答消息•基本呼叫流程•业务流程•协议设计特点什么是SIP?“”SIP(SessionInitiationProtocol)•Anapplicationlayersignalingprotocolthatdefinesinitiation,modificationandterminationofinteractive,multimediacommunicationsessionsbetweenusers.•会话初始协议,由IETF制定,是一个基于文本的应用层控制协议,独立于底层传输协议TCP/UDP/SCTP,用于建立、修改和终止IP网上的双方或多方多媒体会话。IETFRFC3261SIP•1999年,IETF发布了第一个SIP规范,即RFC2543。•2001年,发布了SIP规范RFC3261。标志着SIP的基础已经确立。•2001年至今,RFC增补版本,充实了安全性和身份验证等领域的内容。RFC3262对临时响应的可靠性作了规定;RFC3263确立了SIP代理服务器的定位规则;RFC3264提供了提议/应答模型;RFC3265确定了具体的事件通知。SIP应用•Voice•Video•Chat•interactivegames•…SIP控制模式•SIP采用Client/Server结构的消息机制,对呼叫的控制是将控制信息封装到消息的头域中,通过消息的传递来实现。•因此SIP系统的终端就比较智能化,它不只提供数据,还提供呼叫控制信息。其他各种服务器则用来进行定位、转发或接受消息。•这样,SIP将网络设备的复杂性推向了网络终端设备,因此更适于构建智能型的用户终端。•SIP系统体现的是一种分布式的控制模式。SIP协议体系其它协议Q.931、H.245…•SIP协议体系以模块的形式包括呼叫信令、注册信令和重定向信令三部分。•通过其他相关或独立的协议体系提供其他相关或独立的功能和业务。呼叫信令注册信令重定向信令SIP协议RedirectServer重定向服务器SIP分布式架构LocationServer定位服务器RegistrarServer注册服务器UserAgent用户代理ProxyServer代理服务器Gateway网关SIP部件ProxyServer代理服务器SIP分布式架构–说明•用户代理(UserAgent)代表的就是各种终端设备(如:SIP电话机)。用户代理首先发起SIP通讯请求,随后进行媒体数据的发送和接收。•注册服务器(RegistrarServer)在接收到用户代理的注册请求后,在定位服务器(LocationService)或其它数据库中对用户代理信息进行更新。•代理服务器(ProxyServer)在接收到用户代理或其它代理的SIP请求后,对其进行转发。•重定向服务器(RedirectServer)在接收到用户代理或其它代理的请求后,发回重定向应答,指示出重新发送请求的方向。•定位服务器(LocationServer)SIP重定向服务器或者代理服务器,通过定位服务器,获取被叫的可能的位置信息。提纲•协议架构•典型逻辑部件•请求和应答消息•基本呼叫流程•业务流程•协议设计特点用户代理用户代理,可发起呼叫、接收呼叫和终止呼叫•用户代理客户端,能发起呼叫•用户代理服务端,能接收呼叫•二者都能终止呼叫用户代理(UserAgent)代表的就是各种终端设备(如:SIP话机),负责发出呼叫、媒体流的编解码。注册服务器注册服务器(RegistrarServer)在接收到用户代理的注册请求后,在定位服务器(LocationService)或其它数据库中对用户代理信息进行更新。通常与Proxy或者RedirectServer共存,可以提供定位服务代理服务器代理服务器负责接受终端的呼叫请求消息,并根据重定向服务器给出的地址信息将呼叫请求消息转发给下一个代理服务器,并一直送达最终的用户终端。重定向服务器接受一个SIP呼叫请求,返回零个或者多个新地址•重定向服务器(RedirectServer)在接收到用户代理或其它代理的请求后,发回重定向应答,指示出重新发送请求的方向。定位服务器•注册服务器(RegistrarServer)在接收到用户代理的注册请求后,在定位服务器(LocationService)中对用户代理信息进行更新。•SIP重定向服务器或者代理服务器,通过定位服务器,获取被叫的可能的位置信息。提纲•协议架构•典型逻辑部件•请求和应答消息•基本呼叫流程•业务流程•协议设计特点IHLTotalLengthIdentificationFlagsFragmentOffsetHeaderChecksumProtocolTimetoLiveSourceAddressDestinationAddressPaddingOptionsVersionDSCPECNIPv4头,20字节,二进制SourcePortDestinationPortChecksumLengthUDP头,8字节,二进制(4层协议可以是TCP或SCTP)SIP头使用US-ASCII格式(variableinlengthperheader/permessage)SIP消息头,文本格式,变长SIP消息有时有一个消息体-SIP消息头指示消息体类型-可能是文本,数据,音频,视频或者别的什么SIP消息体,变长,多种消息类型SIP消息格式SIP消息头例如:-----------------------------------------------------------------SIP消息头-----------------------------------------------------------------INVITEsip:5120@192.168.36.180SIP/2.0Via:SIP/2.0/UDP192.168.6.21:5060From:sip:5121@192.168.6.21To:sip:5120@192.168.36.180Call-ID:c2943000-e0563-2a1ce-2e323931@192.168.6.21CSeq:100INVITEExpires:180User-Agent:huaweiIPPhone/Rev.1/SIPenabledAccept:application/sdpContact:sip:5121@192.168.6.21:5060Content-Type:application/sdp•SIP借用HTTP的语法和语义•SIP消息类似HTTP消息,包括消息格式、MIME支持。消息体主要是对消息所要建立的会话的描述。典型的消息体为SDP格式。会话描述协议(SDP,SessionDescriptionProtocol)规定了对描述会话的必要信息怎样进行编码。SDP不包括任何传输机制,也不包含任何种类的协商参数。一个SDP描述仅仅是能够被系统用于在一个多媒体会话中加入大量信息。一个SDP描述含有会话级信息和媒体级信息。会话级信息应用于整个会话。媒体级信息作用于特殊的媒体流。v=0o=Bob2890844526289084207INIP410.105.1.129s=SIPSeminarc=INIP4224.2.17.12/127t=28733974962873404696a=recvonlym=audio49170RTP/AVP0a=rtpmap:0PCMU/8000m=video51372RTP/AVP31a=rtpmap:31H261/90000SIP消息体SessionDescriptionProtocol(SDP)RFC2327•SDP协议用于多媒体连接•介绍了多媒体会话的参数集–功能上类似H.245•由IETFMMUSICWG开发•简单灵活–基于文本–可扩展•SIPOffer/AnswerModelisRFC3264“Lines”belowareinorder•v=协议版本•o=所有者/创建者和会话标识•s=会话名称•c=连接信息•k=密钥•t=指定会话活动时间•m=媒体描述和传输地址•a=(0行或多行)媒体media属性行SIP消息体字段说明SIP消息类型–方法和应答SIP方法:–INVITE:发起呼叫,邀请用户加入会话。–ACK:证实已收到对INVITE消息的最终应答。–BYE:终止一个呼叫。–CANCEL:取消一个请求。–REGISTER:注册用户代理。–OPTIONS:查询服务器能力。–INFO:携带带外信息,如DTMF数字。SIP应答:–1xx:InformationalMessages.–2xx:成功应答–3xx:重定向应答–4xx:请求失败应答–5xx:服务器失败应答–6xx:全局失败应答SIP部件通信,通过交换SIP消息:响应(Response)消息的开始行Startline=responseline响应行(Responseline)的固定格式:SIP-versionSPStatus-CodeSPReason-PhraseCRLF例子:SIP/2.0100Trying状态码SIP协议的版本原因短语响应消息-状态码(1)Provisional1xx100Trying180Ringing181CallIsBeingForwarded182Queued183SessionProgressSuccessful2xx200OKRedirection3xx300MultipleChoices301MovedPermanently302MovedTemporarily305UseProxy380AlternativeService响应消息-状态码(2)RequestFailure4xx400BadRequest401Unauthorized402PaymentRequired403Forbidden404NotFound405MethodNotAllowed406NotAcceptable407ProxyAuthenticationRequired408RequestTimeout410Gone413RequestEntityTooLarge414Request-URITooLong415UnsupportedMediaType416UnsupportedURIScheme420BadExtension421ExtensionRequired423IntervalTooBrief480TemporarilyUnavailable481Call/TransactionDoesNotExist482LoopDetected483TooManyHops484AddressIncomplete485Ambiguous486BusyHere487RequestTerminate488NotAcceptableHere491RequestPending493Undecipherable响应消息-状态码(3)ServerFailure5xx500ServerInternalError501NotImplemented502BadGateway503ServiceUnavailable504ServerTime-out505VersionNotSupported513MessageTooLargeGlobalFailures6xx600BusyEverywhere603Decline604DoesNotExistAnywhere606NotAcceptableSIP消息中的常用信息-SIP地址–Fully-QualifiedDomainNames•sip:leon.huawei-3com.com–SMTP风格域名[RFC2368]•sip:leon@huawei-3com.com–E.164风格