SIP原理与应用内容简介:一.历史回顾和概述二.SIP的结构和消息三.SIP的呼叫流程四.SIP与H.323的比较历史回顾•SIP出现于二十世纪九十年代中期,源于哥伦比亚大学计算机系副教授HenningSchulzrinne及其研究小组的研究。•1996年,他向IETF提交了一个草案,其中包含了SIP的重要内容。•IETF继续进行这项工作,于2001年发布了SIP规范RFC3261。标志着SIP的基础已经确立。SIP(SessionInitiationProtocol,即初始会话协议)是IETF提出的基于文本编码的IP电话/多媒体会议协议。用于建立、修改并终止多媒体会话。SIP协议可用于发起会话,也可以用于邀请成员加入已经用其它方式建立的会话。SIP概述SIP协议支持多媒体通信的五个方面•用户定位•用户能力•用户可达性•呼叫建立•呼叫处理SIP是基于客户/服务器的体系结构,网络组件基本分为用户代理(UserAgent)和网络服务器(NetworkServer)。(1)SIP的用户代理SIP的用户代理是SIP系统中的终端用户,根据它们在会话中扮演的角色又可分为用户代理客户机(UAC,UserAgentClient)和用户代理服务器(UAS,UserAgentServer),前者发起呼叫请求,后者响应呼叫请求。(2)SIP网络服务器SIP网络服务器的主要功能是名字解析和用户定位。主要分为代理服务器、重定向服务器、注册服务器三类。代理服务器:I.为其它的客户机代理,进行SIP消息的转接和转发的功能。消息机制与UAC和UAS相似.II.对收到的请求消息进行翻译和处理后,传递给其他的服务器.III.对SIP请求及响应进行路由.通过代理服务器的呼叫重定向服务器:I.接受SIP请求消息,进行地址映射,将映射后的地址(零个或多个)返回给客户机.II.与代理服务器proxyserver不同的是,redirectserver不会发起自己的呼叫.III.与useragent不同的是,redirectserver不接受呼叫终止或主动终止呼叫.通过重定向服务器的呼叫注册服务器:I.接受REGISTER请求的服务器II.可以支持鉴权的功能III.在典型应用中,可与代理服务器proxysever或重定向服务器redirectserver一起提供用户定位服务SIP结构和消息SIP是一个分层结构的协议,它的行为根据一组平等独立的处理阶段来描述,由SIP规定的元素是逻辑元素,不是物理元素。事务用户层事务层传输层语法和编码层SIP协议层次第一层:语法和编码第二层:传输层。第三层:事务层。第四层:事务用户层。SIP消息由三部分组成,即消息行、消息头和消息体。SIP消息的具体格式如下:Message=start-line*Message-headerCRLF[message-body]1、消息行通过识别首行来判断一个SIP消息是请求还是响应。请求的首行被称为请求行,由方法名、请求UIR和协议版本三部分组成。响应的首行被称为状态行,由协议版本、状态码和原因短语三部分组成。SIP请求消息的操作共有以下请求方法:状态码分为以下六类:2、消息头字段消息头字段包含与请求有关的信息,例如请求的发起者,请求的接收者和呼叫标识。消息头字段的格式如下:Header—name:Header—Value3、消息体消息体可携带任何基于文本的信息,而请求方法和响应的状态码决定消息正文该如何解释。SDP是一个用来描述会话的应用层协议,是一个基于文本的协议,采用提供/应答模型。SDP主要包含了3级信息1.会话级描述2.时间描述3.媒体类型和格式SDP描述有两个目的:告知某会话的存在和给出参与该会话所必须的信息。SIP消息头实例:-----------------------------------------------------------------SIPHeader-----------------------------------------------------------------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:CiscoIPPhone/Rev.1/SIPenabledAccept:application/sdpContact:sip:5121@192.168.6.21:5060Content-Type:application/sdpSIP请求消息实例:Request-Line:INVITEsip:8882101@10.77.226.41SIP/2.0(开始行:INVITE+URL+SIP的版本号)MessageHeader(消息头)From:sip:8882100@10.77.226.41;tag=1c13959(From:说明本次会话是由谁发起的)To:sip:8882101@10.77.226.41(To:说明本消息是送给谁的)Call-Id:call-973574765-4@10.77.226.121(CALL-ID:用来唯一标识一次SIP呼叫的编号)Cseq:1INVITE(Cseq:用来区分同一个呼叫不同INVITE消息的编号)Content-Type:application/sdp(Content-Type:用来说明消息体的类型)Content-Length:199(Content-Length:用来说明消息体的长度)Accept-Language:en(Accept-Language:用来说明消息体语言类型)Contact:sip:8882100@10.77.226.121(Contact:用来告诉对方回信息给谁)User-Agent:Pingtel/1.0.0(VxWorks)(User-Agent:指明UA的用户类型)Via:SIP/2.0/UDP10.77.226.121(Via:记录消息的地址路径)SessionDescriptionProtocol(SDP)SessionDescription,version(v):0(SDP版本号)Owner/Creator,SessionId(o):INIP410.77.226.121(描述源端信息)SessionName(s):phone-call(SDP本次呼叫名字)ConnectionInformation(c):INIP410.77.226.121(本端IP信息)TimeDescription,activetime(t):00MediaDescription,nameandaddress(m):audio8766RTP/AVP0968(RTP媒体类型描述)MediaAttribute(a):rtpmap:0pcmu/8000/1(支持PCMU率压缩编码方式)MediaAttribute(a):rtpmap:96telephone-event/8000/1(支持telephone-event)MediaAttribute(a):rtpmap:8pcma/8000/1(支持PCMA率压缩编码方式)该消息用来指明本次呼叫需要由谁和谁参与,采用那种媒体类型。SIP响应消息实例:Status-Line:SIP/2.0100TryingMessageHeaderCall-ID:call-973574765-4@10.77.226.121CSeq:1INVITE(注意CSeq没有变,说明本消息是对INVITE的响应)From:sip:8882100@10.77.226.41;tag=1c13959To:sip:8882101@10.77.226.41Via:SIP/2.0/UDP10.77.226.121Content-Length:0该消息只是表明已接收方接受INVITE消息并正在处理中,其Call-ID、CSeq、From、To、Via是INVITE消息中的复制,由于没有SDP,所以Content-Length为0。SIP的呼叫流程•注册流程•注销流程•基本呼叫建立过程•会话更改流程•正常呼叫建立过程•被叫忙呼叫释放•...1.注册流程2.注销流程3.基本呼叫建立过程4.会话更改流程5.正常呼叫释放过程6.被叫忙呼叫释放7.被叫无应答流程一8.被叫无应答流程二9.遇忙呼叫前转10.无应答呼叫前转流程SIP与H.323的比较•体系结构的比较•复杂性的比较•可靠性及服务质量的比较•对视频和语音的编码格式的支持•会议规模•各自优点体系结构的比较•在H.323系统中,终端主要为媒体通信提供数据,功能比较简单,而对呼叫的控制、媒体传输控制等功能的实现则主要由网守来完成。H.323系统体现了一种集中式、层次式的控制模式。•SIP采用Client/Server结构的消息机制,对呼叫的控制是将控制信息封装到消息的头域中,通过消息的传递来实现。因此SIP系统的终端就比较智能化,它不只提供数据,还提供呼叫控制信息。复杂性的比较•消息的组成:H.323定义了上百个基本元素;而SIP只有37个头部。•消息的表示:H.323采用基于ASN.1和PER的二进制方法表示其消息。SIP以文本方式表示消息,只需要相对简单的生成器和词法语法分析器。•协议栈结构可靠性•H.323定义了很多功能来处理中间网络设备故障问题。•SIP则不具备处理中间实体故障的能力服务质量•在H.323中,网守提供一组丰富的控制和管理功能,包括地址翻译、接纳控制、带宽控制和地域管理。•SIP自身不支持管理和控制功能,而是依赖于别的协议。对视频和语音的编码格式的支持•目前存在的编码格式有数百种之多,SIP支持任何编码格式,不同应用实现也可以根据符串名字识别编码格式并从IANA得到有关信息。•H.323支持的每种编码格式都必须是ITU标准化的,这也成为推广IP电话应用的一个障碍。会议规模•H.323进行集中、层次式控制。尽管集中控制便于管理,但当用于控制大型会议电话时,H.323中执行会议控制功能的多点控制单元很可能成为瓶颈。•而SIP能支持任何规模的通话,SIP信令系统不需要集中控制的MC,而是采用完全分布式的控制方式,因此提高了通信规模和复杂情况的适应能力。h.323优点•H.323是一个整套的协议栈用来在IP和包交换网络中传输标准的电话语音服务。•除了在设计时独立于其它标准,H.323的基本功能里也包括很多电话的辅助功能,例如会议和呼叫转移。这种实现的优点是,它给希望开发高级特性和服务的开发者留下了很明确的接口,这样就保证了高度的兼容性。•整个行业都在为H.323增加功能和增进互通性方面作了很多的工作。H.323会成为下一代网络中的一个重要的信令协议。•SIP协议是基于文本的协议,类似于HTTP协议,这样它的实现方式就简单、高效,并可以借鉴许多IP网络中基于文本的协议的研究成果。•SIP协议所采用的C/S工作模式,是IP网络的典型工作模式,为SIP在网络中的应用创建了必要的前提条件。•SIP采取分散、对等的控制方式,能将网络设备的复杂性推向网络边缘,更适合NGN的需求,是未来软交换体系结构中重要的组成协议之一。•SIP协议具有可扩展强的特点,通过与其它协议的结合可以更容易地建立起很多新的增值服务。SIP协议的优点