SIP深入介绍目录1、SIP的提出和发起2、SIP协议的功能概述3、SIP协议所使用的环境及其运行的网络构成4、SIP协议消息的格式与操作5、SIP协议的应用实例6、SIP协议消息的可靠性机制一、SIP的提出和发起1.SIP(SessionInitiationProtocol,会话发起协议)的引入:IETF提出的IP电话信令协议解决IP网中的信令控制,以及同Softswitch的通信如图:2.H.323和SIP的比较:相同点:均为多媒体通信的应用层控制(信令)协议,目前一般用于IP电话能实现的信令控制功能基本相同都利用RTP作为媒体传输的协议异同点:H.323由ITU-T提出,采用的是传统的实现电话信令的模式,便于与传统的电话网互通;H.323协议发展得比较成熟,但相对复杂得多。SIP由IETF提出,借鉴了其他Internet标准和协议的设计思想,SIP协议简单,采用文本方式,因而具有更好的功能扩充性.....和网络可扩展性......,并易于实现。二、SIP协议的功能概述1、SIP协议的功能和特点:SIP是一个客户/服务器协议协议消息分为两类:请求..和响应..协议消息的目的是:建立或终....结会话...“邀请”是SIP协议的核心机制响应消息分为两类:中间响应....和最终响应....媒体类型、编码格式、收发地址等信息由SDP协议(会话描述协议)来描述,并作为SIP消息的消息体...和头部一起传送,因此,支持SIP的网元和终端必须支持SDP采用SIPURL......的寻址方式,特别地,其用户名字段可以是电话号码,以支持IP电话网关寻址,实现IP电话和PSTN的互通.SIP...的最强大之处就是用户定位功能..............,用户定位基于登记和DNS机制SIP独立于低层协议,可采用不同的传送层协议,若采用..UDP...传送..,要求响应消息沿请........求消息发送的同.......样路径回送.....;若采用..TCP...传送..,则同一事务的请求和响应需在同一...............TCP...连接上传送.....总之,SIP主要支持以下5个方面的功能:用户定位:确定通信所用的端系统位置。用户能力交换:确定所用的媒体类型和媒体参数。用户可用性判定:确定被叫方是否空闲和是否愿意加入通信。呼叫建立:邀请和提示被叫,在主被叫之间传递呼叫参数。呼叫处理:包括呼叫终结和呼叫转交。2、SIPURL结构:URL格式:SIP:用户名:口令@主机:端口;传送参数;用户参数;方法参数;生存期参数;服务器地址参数。URL形式:USER@HOST;用途:代表主机上的某个用户,可指示From,To,RequestURI,Contact等SIP头部字段。URL应用举例:Sip:j.doe@big.comSip:j.doe:secret@big.com;transport=tcp;subject=projectSip:+1-212-555-1212:1234@gateway.com;user=phoneSip:alice@10.1.2.3Sip:alice@registar.com;method=REGISTER3、SDP(SessionDescriptionProtocol)会话描述协议简介:描述会话信息的协议,包括会话的地址、时间、媒体和建立等信息SDP描述的内容应包括:会话名和目的会话激活的时间段构成会话的媒体接收这些媒体所需的信息(地址、端口、格式)会话所用的带宽信息(任选)会话负责人的联系信息(任选)SDP的会话描述:格式:type=value规则:type为单个字符,区分大小写value为结构化文本‘=’两侧无空格一个会话级描述,从v=开始若干媒体级描述,从m=开始SDP的会话级描述:v=(protocolversion)o=(owner/creatorandsessionidentifier).s=(sessionname)i=*(sessioninformation)u=*(URIofdescription)e=*(emailaddress)p=*(phonenumber)c=*(connectioninformation-notrequiredifincludedinallmedia)b=*(bandwidthinformation)z=*(timezoneadjustments)k=*(encryptionkey)a=*(zeroormoresessionattributelines)SDP的媒体级描述:m=(medianameandtransportaddress)i=*(mediatitle)c=*(connectioninformation-optionalifincludedatsession-level)b=*(bandwidthinformation)k=*(encryptionkey)a=*(zeroormoremediaattributelines)SDP描述举例:v=0(版本为0)o=bell536557652353687637INIP4128.3.4.5(会话源:用户名bell,会话标识53655765,版本2353687637,网络类型internet,地址类型Ipv4,地址128.3.4.5)s=Mr.Watson,comehere.(会话名:Mr.Watson,comehere.)i=ASeminaronthesessiondescriptionprotocol(会话信息:)t=31493286000(起始时间:t=3149328600(NTP时间值),终止时间:无)c=INIP4kton.bell-tel.com(连接数据:网络类型internet,地址类型Ipv4,连接地址kton.bell-tel.com)m=audio3456RTP/AVP0345(媒体格式:媒体类型audio,端口号3456,传送层协议RTP/AVP,格式列表为0345)a=rtpmap:0PCMU/8000(净荷类型....0,编码名PCMU,抽样速度为8kHZ)a=rtpmap:3GSM/8000(净荷类型3,编码名GSM,抽样速度为8kHZ)a=rtpmap:4G723/8000(净荷类型4,编码名G723,抽样速度为8kHZ)a=rtpmap:5DVI4/8000(净荷类型5,编码名DVI4,抽样速度为8kHZ)总之,SDP有如下的特点:描述会话信息的协议与具体的传输协议无关文本形式,格式要求严格包含会话级描述和媒体级描述.可扩展...三、SIP协议所使用的环境及其运行的网络构成Softswitch的软件模块结构(环境1):略基于SIP的IP网络电话系统所用的协议栈(环境2):SIP协议运行的网络构成:SIP端系统包括用户代理客户机.......(UAC...)和用户代理服务器.......(UAS...)代理服务器.....(Proxyserver):完成SIP消息的转接、转发功能。在转发请求之前,它可能改写原请求消息中的内容。重定向服务器......(redirectserver):接收SIP请求,把请求中的原地址映射为零个或多个地址,返回给客户机,客户机根据此地址重新发送请求。登记服务器.....(registrarserver):接收客户机的注册请求,完成用户地址的注册。网络构成1:网络构成2:四、SIP协议消息的格式与操作SIP消息的一般格式:SIP消息=起始行.../状态行...*消息头部....(1个或多个头部)CRLF(空行)〖消息体...〗1、SIP协议消息的主要头部字段:From:所有请求和响应消息必须包含此字段,以指示请求的发起者。服务器将此字段从请求消息复制到响应消息。该字段的一般格式为:From:显示名〈SIPURL〉;tag=xxxFrom字段的示例有:From:”A.G.Bell”sip:agb@bell-telephone.comTo:该字段指明请求的接收者,其格式与From相同,仅第一个关键词代之以To。所有请求和响应都必须包含此字段。CallID:该字段用以唯一标识一个特定的邀请...........或标识某一客户的所有登记...........。用户可能会收到数个参加同一会议或呼叫的邀请,其CallID各不相同,用户可以利用会话描述中的标识,例如SDP中的o(源)字段的会话标识和版本号判定这些邀请的重复性。该字段的一般格式为:CallID:本地标识@主机,其中,主机应为全局定义域名或全局可选路IP地址。CallID的示例可为:CallID:19771105@foo.bar.comCseq:命令序号。客户在每个请求中应加入此字段,它由请求方法和一个十进制序号组成。序号初值可为任意值,其后具有相同的CallID值,但不同请求方法、头部或消息体的请求,其Cseq序号应加1。重发请求的序号保持不变。ACK和CANCEL请求的Cseq值与对应的INVITE请求相同,BYE请求的Cseq值应大于INVITE请求,由代理服务器并行分发的请求,其Cseq值相同。服务器将请求中的Cseq值复制到响应消息中去。Cseq的示例为:Cseq:4711INVITEVia:该字段用以指示请求经历的路径。它可以防止请求消息传送产生环路,并确保响应和请求的消息选择同样的路径。该字段的一般格式为:Via:发送协议发送方;参数其中,发送协议的格式为:协议名/协议版本/传送层,发送方为发送方主机和端口号。Via字段的示例可为:Via:SIP/2.0/UDPfirst.example.com:4000Contact:该字段用于INVITE、ACK和REGISTER请求以及成功响应、呼叫进展响应和重定向响应消息,其作用是给出其后和用户直接通信的地址。Contact字段的一般格式为:Contact:地址;参数其中,Contact字段中给定的地址不限于SIPURL,也可以是电话、传真等URL或mailto:URL。其示例可为:Contact:”Mr.Watson”sip:waston@worcester.bell-telephone.com2、请求消息的格式与操作:SIP请求消息起始行=方法_请求URI_SIP版本号CRLF方法全大写请求URI:被邀用户的当前地址,不含传送参数,生存期和多播地址SIP版本,目前为SIP/2.0SIP请求消息的操作共有以下几种请求方法:INVITE-用来邀请用户或应用程序加入某会话。ACK-用于证实UAC已收到对于INVITE请求的最终响应,和INVITE消息配套使用。OPTIONS-用于询问服务器能力。BYE-USERAGENT用此方法指示释放呼叫。CANCEL-该方法用于取消一个尚未完成....的请求,对于已完成的请求则无影响。REGISTER-客户使用该方法在服务器上登记列于To字段中的地址。用户代理在启动时向地址’Sip.macst.net’(224.0.1.75)发送REGISTER请求,以完成至本地服务器的登记。INFO–传递控制信息SIP请求消息举例:C-S:INVITEsip:Watson@Boston.bell-tel.comSIP/2.0Via:SIP/2.0/UDPkton.bell-tel.comFrom:A.Bellsip:a.g.bell@bell-tel.comTo:T.Watsonsip:Watson@bell-tel.comCall-ID:662606876@kton.bell-tel.comCSeq:1INVITEContact:sip:a.g.bell@kton.bell-tel.comSubject:Mr.Watson,comehere.Content-Type:application/sdpContent-Length:...v=0o=bell5365576523536