1、SIP协议原理与应用 SIP协议是一个正在发展和不断研究中的协议。遵循简练、开放、兼容和可扩展的原则。充分注意到因特网开放而复杂的网络环境下的安全问题。充分考虑了对传统公共电话的各种业务,包括对IN业务和ISDN业务的支持。前前 言言掌握掌握SIPSIP协议基本概念协议基本概念了解了解SIPSIP协议的作用协议的作用掌握掌握SIPSIP协议命令协议命令掌握掌握SIPSIP协议消息交互过程协议消息交互过程了解了解SDPSDP协议协议SIP协议概述协议概述SIP协议消息协议消息SIP协议呼叫流程协议呼叫流程SDP协议协议 SIP:Session Initiation Protocol 会话发起协议
2、 用于建立,修改和终结会话 SIP是IETF为多媒体会话而开发制定的通信协议 这里的会话包括文本、视频、游戏和传统的语音 SIP是为Internet而制定设计的协议 与HTTP协议一样是基于文本的 询问/应答机制 广泛应用于internet SIP是一种应用层协议,独立于下面的传输层协议,可以承载在不同的传输协议之上,如TCP/UDP/TLS/SCTP,目前最常用的是UDP协议。应用层(SIP)传输层(TCP/UDP/TLS/SCTP)网络层 链路层 物理层 应用层(SIP)传输层(TCP/UDP/TLS/SCTP)网络层 链路层 物理层SIP协议能够支持下列五种多媒体通信的信令功能:用户定位
3、:确定参加通信的终端用户的位置;用户通信能力协商:确定通信的媒体类型和参数;用户意愿交互:确定被叫用户是否乐意参加某个通信;建立呼叫:包括向被叫振铃,确定主叫和被叫的呼叫参数;呼叫处理和控制:包括呼叫重定向、呼叫转移、终止呼叫等。信令协议 (1)注册、定位用户、路由 (2)建立、修改、释放会话 媒体传输协议 用于传输语音/视频包,RTP/RTCP协议SIP-信令协议会话管理(SIP)和会话描述(SDP)是独立的源于1996年Mbone实验1999年被IETF采纳为建议标准RFC2543RFC2543发展到了bis09,于2002年6月通过了SIP的RFC3261,这是SIP的核心规范RFC32
4、62RFC3263RFC3264RFC3265相继通过,5个RFC构成SIP协议扩展规范的一部分现在更多的RFC和草案被引入到SIP中,包括支持presence和IM等简单性扩展性伸缩性 六个主要请求,六类响应消息;基于文本编码,很多现成的工具;重点关注会话的建立、改变和终止,便于使用其他的协议。会话无关性:SIP-URL表示需要访问的资源或用户,消息体可以携带任何内容 灵活的扩展机制:增加头域,增加消息类型 强大的能力协商机制 网络对业务的透明性 分布式体系结构提高了系统的灵活性和可靠性 Proxy的三种运行模式:Call Stateful Stateless StatefulSIP协议消息
5、协议消息SIP协议呼叫流程协议呼叫流程SDP协议协议SIP协议概述协议概述SIP采用客户端/服务器的架构逻辑SIP实体包括用户代理(UA)网络服务器用户代理客户端用户代理服务器注册服务器代理服务器重定向服务器SIP采用客户端/服务器模型:客户端发出SIP请求,服务器端返回SIP响应SIP响应SIP请求SIP请求SIP响应UAC发送SIP请求UAS接受SIP请求媒体流(RTP)Request Proxy Server决定把请求消息送到何处User Agents -User Agents -用户代理用户代理一个发起和终止会话的实体,包含两个功能实体一个发起和终止会话的实体,包含两个功能实体.Use
6、r Agent Clients(UAC)User Agent Clients(UAC)发起发起SIPSIP事务请求的功能实体事务请求的功能实体.User Agent Server(UAS)User Agent Server(UAS)接收接收SIPSIP事务请求的功能实体事务请求的功能实体.UAC UAC 和和 UAS-UAS-都能终止一个呼叫都能终止一个呼叫.IP NetworkSIPTerminalSIPTerminal主叫(UAC)客户客户被叫(UAS)服务器服务器Proxy Server -Proxy Server -代理服务器代理服务器与重定向服务器(与重定向服务器(Redirect
7、ServerRedirect Server)及位置服务器(及位置服务器(Location Location ServerServer)有联系有联系为客户端转发请求或响应,可以同时做为服务器端和客户端,决定为客户端转发请求或响应,可以同时做为服务器端和客户端,决定下一跳转发请求消息。消息机制与下一跳转发请求消息。消息机制与UACUAC和和UASUAS相似。相似。Redirect Server-Redirect Server-重定向服务器重定向服务器与位置服务器(与位置服务器(Location ServerLocation Server)有联系,使用的协议为有联系,使用的协议为LDAPLDAP(轻
8、量目录访问协议)(轻量目录访问协议)将请求中的地址映射为零个或多个新的地址,将用户新的位置返回将请求中的地址映射为零个或多个新的地址,将用户新的位置返回给呼叫方。呼叫方可根据得到的新位置重新呼叫。给呼叫方。呼叫方可根据得到的新位置重新呼叫。与代理服务器与代理服务器proxy serverproxy server不同的是不同的是,redirect serverredirect server不会发起不会发起自己的呼叫自己的呼叫.与与user agent user agent 不同的是不同的是,redirect serverredirect server不接受呼叫终止或主动不接受呼叫终止或主动终止呼
9、叫终止呼叫.Registrar Server-登记服务器(注册服务器)接受REGISTER 请求完成用户地址的注册,更新用户位置信息 可以支持鉴权的功能在ZXSS10软交换体系中,SS1A/B充当着登记服务器和代理服务器的功能。Location Server-位置服务器 是一个数据库,用于存放终端用户当前的位置信息,为SIP 重定向服务器(Redirect Server)或代理服务器(proxy server)提供被叫用户可能的位置信息.SIP Proxy Server、Redirect Server、Register Server、Location Server可共存于一个设备,也可以分布在
10、不同的物理实体中。SIP服务器完全是纯软件实现,可以根据需要运行于各种相关设备中,体现了SIP网络的灵活性;Location Server是一个SIP网络公共资源,对它的信息咨询所采用的协议不是SIP,而是其它协议,如LDAP(Light Directory Access Protocol);UAC、UAS角色不是固定不变的,一个UA在一个呼叫中可以是UAC,也可以是UAS。ZXSS10 SS1A/B代理服务器登记服务器重定向服务器位置服务器ZXSS10 SS1A/B代理服务器登记服务器重定向服务器位置服务器Soft-phoneVideo-phone定义定义 消息是SIP协议的基本单位,客户端
11、和服务器端的基本交互单元;消息包括两类:消息包括两类:请求消息响应消息UACProxyUASRequestRequestResponseResponseSIP 基本请求消息:INVITE 邀请用户加入一个呼叫.ACK 对INVITE请求消息响应消息的确认,和INVITE消息配套使用.BYE 用于释放已建立的呼叫.CANCEL-该方法用于取消一个尚未完成的请求,对于已完成的请求则无影响.REGISTER 用于向SIP网络服务器登记用户位置信息.OPTIONS 用于询问服务器能力信息.SIP 扩展请求消息:MESSAGE 请求一个即时消息.SUBSCRIBE 签订一个通知事件.NOTIFY 发送一
12、个通知事件.UPDATE 在建立呼叫阶段修改会话属性.PUBLISH 发送时间状态给状态服务器.PRACK 标识临时响应的可靠性.响应消息:用于对请求消息进行相应,指示呼叫的成功或者失败的状态。不同类型的响应状态由状态码来区分,状态码包含三位整数,第一位用于定义响应类型,另外两位用于进一步对相应进行详细说明。1xx-正在处理的信息.2xx-成功.3xx-重定向.4xx-Client错误.5xx-Server错误.6xx-Global错误.URL格式:SIP:用户名:口令主机:端口;传送参数;用户参数;方法参数;生存期参数;服务器地址参数。URL形式:USERHOST;用途:代表主机上的某个用户
13、,可指示From,To,Request URI,Contact等SIP头部字段。URL 应用举例:Sip:Sip:j.doe:;transport=tcp;subject=projectSip:+1-212-555-1212:;user=phoneSip:alice10.1.2.3Sip:;method=REGISTERSIP消息格式消息格式 SIP消息采用文本方式编码;任一SIP消息都有起始行、头域和消息体组成;头域都必须以CRLF(回车换行)结尾。Start-LineSIP HeaderCRLFSIP BodySIP消息消息起始行起始行SIP起始行分请求行和状态行,请求行是请求消息的起始行
14、,状态行是相应消息的起始行举例:请求行:REGISTER SIP: SIP/2.0 状态行:SIP/2.0 200 OK头域(头域(SIP Header)n 携带SIP实体的属性、消息体的属性等。n 头域必须以CRLF结尾n 头域的基本结构举例:From:sip:;tag=123456787 To:sip:;Call-ID:3232393949AWSR头域名:头域值;头域参数说明:头域参数不是必备的,有些头域不存在头域参数命令名称 对端URI 协议版本 Via:值To:值From:值Call-ID:值Cseq:值Contact:值Max-Forward:值Content-type:值Conte
15、nt-Length:值WhiteSpace:值SDP:值注:Via、From、To、Call-ID、Cseq五个头域必须包含在每个SIP消息中。Via:该字段用以指示请求经历的路径。它可以防止请求消息传送产生环路,并确保响应和请求的消息选择同样的路径。该字段的一般格式为:Via:发送协议 发送方;参数其中,发送协议的格式为:协议名/协议版本/传送层,发送方为发送方主机和端口号。Via字段的示例可为:Via:SIP/2.0/UDP 202.202.41.8:5060From:所有请求和响应消息必须包含此字段,以指示请求的发起者。服务器将此字段从请求消息复制到响应消息。该字段的一般格式为:From
16、:显示名SIP URL;tag=xxxFrom字段的示例有:From:iwf;tag=aab7090044b2-195254e9To:该字段指明请求的接收者,其格式与From相同,仅第一个关键词代之以To。所有请求和响应都必须包含此字段。To:Call ID:该字段用以唯一标识一个特定的邀请(或唯一表示一个会话)。该字段的一般格式为:Call ID:本地标识主机,其中,主机应为全局定义域名或全局可选路IP地址。Call ID的示例可为:Call-ID:0009b7aa-124f0006-2050db78-7fded6f5202.202.41.8Cseq:命令序号。客户在每个请求中应加入此字段,
17、它由请求方法和一个十进制序号组成。序号初值可为任意值,其后具有相同的Call ID值,但不同请求方法、头部或消息体的请求,其Cseq序号应加1。重发请求的序号保持不变。ACK和CANCEL请求的Cseq值与对应的INVITE请求相同,BYE请求的Cseq值应大于INVITE请求,由代理服务器并行分发的请求,其Cseq值相同。服务器将请求中的Cseq值复制到响应消息中去。Cseq的示例为:CSeq:101 INVITEContact:该字段用于INVITE、ACK和REGISTER请求以及成功响应、呼叫进展响应和重定向响应消息,其作用是给出其后和用户直接通信的地址。Contact字段的一般格式为
18、:Contact:地址;参数其中,Contact字段中给定的地址不限于SIP URL,也可以是电话、传真等URL。其示例可为:Contact:sip:6130000202.202.41.8:5060n一个事务包含一个请求消息,零个或者多个临时响应,一个最终响应,ACKn一个事务由唯一的branch来标识n事务可以分为两大类:INVITE事务和非INVITE事务 INVITE事务:三次握手 非INVIT事务:两次握手n在事务中有两个特殊的事务(1)ACK事务:对于200 of INVITE的确认事务,是一个单独的事务,也就是说一个消息就是一个事务。(2)CANCEL事务:只能用于CANCEL I
19、NVITE事务,不能用于CANCEL非INVITE事务,CANCEL事务的branch参数和INVITE是相同的,CANCEL事务只能在收到INVITE的临时响应后,最终响应前发送。n To标签、From标签和Call-ID一起定义UAC和UAS间 对等的SIP关系,称为对话。n 对话不关心任何消息体的消息;n 对话由Call-ID,From Tag,To Tag唯一标识;建立后 不能被修改。(1)当收到带To Tag的1XX响应(非100)时,进入 Early Dialog状态;(2)被叫发送200 OK且主叫收到200 OK后,进入 Confirmed状态。主叫被叫INVITE100(IN
20、VITE)180 RingEarly Dialog200 OKConfirmed DialogACKBYE200 OK说明:说明:1.在在Early状态下,主叫可以通过发送状态下,主叫可以通过发送BYE或或CANCEL来终结对话;来终结对话;2.在在Early状态下,或者通过被叫的失败应答来终结对话;状态下,或者通过被叫的失败应答来终结对话;3.在在Early状态下,被叫是不能发送状态下,被叫是不能发送BYE来终结对话的;来终结对话的;4.Confirmed状态下,主叫和被叫都能通过状态下,主叫和被叫都能通过BYE来终结对话。来终结对话。SIP协议呼叫流程协议呼叫流程SDP协议协议SIP协议概
21、述协议概述SIP协议消息协议消息用SIP来建立通讯通常需要有六个步骤:登记,发起和定位用户.进行媒体协商-通常采用SDP方式来携带媒体参数.由被叫方来决定是否接纳该呼叫.呼叫媒体流建立并交互.呼叫更改或处理如呼叫转移.呼叫终止.n用户每次开机时都需要向服务器注册n当SIP Client的地址发生改变时需要重新注册n注册信息必须定期刷新,通常Register将注册信息保存到Location Server中n作用是将AOR地址绑定到某个Contact地址上,便于Proxy在呼叫时查找被叫的地址UACUASINVITE100 Trying180 Ring200 OKACKRTP/RTCPn当主叫UA
22、C知道被叫的当前的位置时,可以通过INVITE消息直接向被叫UAS发出呼叫请求。n直接呼叫最为简单,并且也是其他呼叫方式的基础。INVITEINVITE100 Trying180 Ring180 Ring200 OK200 OKACKACKRTP/RTCPUACUASINVITE301 MovedPermanentACKRTP/RTCPUACUASINVITE180 Ringing200 OKACKINVITE301 MovedPermanentACKRTP/RTCPUACUASINVITE180 Ringing200 OKACKINVITEACKUACUAS407INVITEINVITEIN
23、VITE100 100 180 180 180 200 200 200 ACKACKACK双向RTP MediaSDP协议协议SIP协议概述协议概述SIP协议消息协议消息SIP协议呼叫流程协议呼叫流程n SDP是一个用来描述多媒体会话的应用层控制协议。n SDP是一个基于文本的协议,用于会话建立过程中的媒体类型、编码方案、地址的协商等。n SDP它不属于传输协议它使用适当的协议,包括会话通知协议(SAP)、会话初始协议(SIP)、实时流协议(RTSP)、MIME扩展协议的电子邮件以及超文本传输协议(HTTP)。在描述一个会话时,SIP消息正文是一个会话描述协议SDP消息,消息正文格式:V行:该
24、行指示协议的版本。O行:包含与会话所有者有关的参数。第一个参数表明会话发起者的名称;第二个参数为主叫方的会话标识符;第三个参数为主叫方会话的版本,会话数据有改变时,版本号递增;第四个参数定义了网络类型,IN表示Internet网络类型,目前仅定义该网络类型;第五个参数为地址类型,目前支持IPV4和IPV6两种地址类型;第六个参数为地址表明会话发起者的IP地址,该地址为信令面的IP地址。S行:表明本次会话的标题或会话的名称。I行:会话的描述。U行:会话的URI,通过该地址可以查阅到会话的更多内容。E行:会话责任人的EMAIL地址。C行:包含为多媒体会话而建立的连接的信息,其中指出了真正的媒体流使
25、用的IP地址。第一个参数为网络类型,目前仅定义INTERNET网络类型,用IN表示;第二个参数为地址类型,目前支持两种地址类型;第三个参数为地址,该地址为多媒体流使用的IP地址。M行:又称为媒体行,描述了发送方所支持的媒体类型等信息。第一个参数为媒体名称;第二个参数为端口号;第三个参数为传输协议;第四至七参数为所支持的四种净荷类型编号。A行:为媒体的属性行,以属性的名称:属性值的方式表示。1.Invite带SDP,然后2XX响应带SDP。2.Invite带SDP,可靠的1XX响应带SDP,最终2XX响应不带SDP。3.Invite带SDP,可靠的1XX响应和Update都带SDP,最终2XX响应不带SDP。4.Invite/ReInvite和最终响应2XX都带SDP的处理。