IP语音网络通信基于SIP协议的IP电话第五章基于SIP协议的IP电话技术重点:熟悉SIP协议的IP电话结构难点:对SIP协议栈的了解和熟悉思考题目:1、SIP呼叫流程有多少种2、SDP/UDP协议的作用IP语音网络通信基于SIP协议的IP电话SIP(SessionInitiationProtocol,即初始会话协议)是IETF(Internet工程任务组)提出的基于文本编码的IP电话/多媒体会议协议。用于建立、修改并终止多媒体会话。SIP协议可用于发起会话,也可以用于邀请成员加入已经用其它方式建立的会话。一、SIP概述IP语音网络通信基于SIP协议的IP电话SIP协议特点应用层协议基于文本的消息编码独立于较低层次的传输协议通过代理、重定向功能支持用户的移动性易实现性易扩展性具有多个层次的可实现性,最小的实现非常简单。最完全的实现相对复杂,但能够完成非常多的功能IP语音网络通信基于SIP协议的IP电话SIP有哪些关联协议IP语音网络通信基于SIP协议的IP电话SIP可以做啥SIP不仅仅用于VoIP(可以用它实现QQ,MSN的所有信令功能)SIP(SIP-I/SIP-T)是NGN中软交换通信的重要协议之一SIP是IMS的核心协议IP语音网络通信基于SIP协议的IP电话SIP应用视频会议视频浏览视频点播VoIP软交换IP语音网络通信SIP网络模型重定向服务器定位服务器注册服务器代理服务器PSTN网关SIP网络实体代理服务器用户代理呼叫重定向(不转发)认证用户,保存用户网络地址Presence服务器SIP用户地址数据库查询呼叫转发(拨号方案)IP网与PSTN的接口呈现服务器(用户状态刷新,IM转发)基于SIP协议的IP电话IP语音网络通信基于SIP协议的IP电话SIP基本信令流程INVITE180RingingINVITEsip:userb@beijing.com180RingingACKSoftphoneASIPServer(beijing.com)SoftphoneB100TryingBYE200OKMediaStream(RTP/RTCP)200OK200OKREGISTER200OK请求临时响应最终响应媒体流IP语音网络通信基于SIP协议的IP电话SIP消息SIP协议是一个基于文本的协议,其消息包括请求和响应。请求:INVITE、ACK、OPTIONS、BYE、CANCEL、REGISTER等。响应:1XX、2XX、3XX、4XX、5XX、6XX等。IP语音网络通信基于SIP协议的IP电话SIP消息的格式与编码文本协议消息格式开始行(请求行、状态行)消息头域空行(CRLF)[消息体]消息体包含媒体信息,采用SDP协议描述IP语音网络通信基于SIP协议的IP电话SIP请求:主要方法:INVITE:表示请求用户或服务加入一个会话ACK:用来确认客户已经收到了一个对INVITE请求的最终响应OPTIONS:用于查询对方用户代理的能力BYE:用于结束一个会话CANCEL:用于撤销一个正在等待的请求REGISTER:用于将自己的地址信息注册到服务器上其他方法:INFO,REFER,PRACK,COMET,SUBSCRIBE,UNSUBSCRIBE,NOTIFY,MESSAGE等格式:MethodSPRequest-URISPSIP-VersionCRLF例子:INVITEsip:picard@wcom.comSIP/2.0IP语音网络通信基于SIP协议的IP电话SIP请求例子SIP请求消息实例: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消息的编号)IP语音网络通信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:记录消息的地址路径)SIP请求例子(续)基于SIP协议的IP电话IP语音网络通信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请求例子(续)IP语音网络通信基于SIP协议的IP电话SIP响应响应类型:1XX进展报告,请求已收到,正在处理2XX请求成功3XX重定向,还需进一步操作才能完成请求4XX客户端错误,请求包含无效语法,或服务器不能接受该请求5XX服务器端错误6XX全局错误格式:SIP-VersionSPStatus-CodeSPReason-PhraseCRLF例子:SIP/2.0404NotFoundIP语音网络通信基于SIP协议的IP电话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。IP语音网络通信基于SIP协议的IP电话会话描述协议(SDP)当描述一个会话时,SIP消息体是一个会话描述协议(SDP)消息。SDP是一个用来描述会话的应用层协议,是一个基于文本的协议,采用提供/应答模型。SDP主要包含了3级信息IP语音网络通信基于SIP协议的IP电话1.会话级描述包含会话标示和其他会话级参数,如IP地址、主题、会话或创建人的联系信息等。2.时间描述包括开始和停止时间、重复次数以及一个或多个媒体级描述。3.媒体类型和格式包括传输协议和端口号,其他媒体参数。SDP描述有两个目的:告知某会话的存在和给出参与该会话所必须的信息。会话描述协议(SDP)续IP语音网络通信基于SIP协议的IP电话09/15/2007SIP协议--AsteriskSDP协议实例用于描述会话的媒体属性.通常放在SIP协议的消息体中携带.基于文本的编码方式INVITEsip:01082253150@asterisk.comSIP/2.0……Content-Type:application/sdpContent-Length:278v=0o=Seawolf55INIP4192.168.1.119s=phone-callc=INIP4192.168.1.119//连接信息t=00m=audio9000RTP/AVP018208101//媒体信息a=rtpmap:0pcmu/8000/1//属性a=rtpmap:18g729/8000/1a=fmtp:18annexb=noa=rtpmap:20ilbc/8000/1a=rtpmap:8pcma/8000/1a=rtpmap:101telephone-event/8000/1IP语音网络通信基于SIP协议的IP电话SIP协议呼叫模式SIP基本呼叫流程INVITEisaRequestandcontainsTesla’smediainformation180RingingisanInformationalresponseandisnotrequired200OKisafinalResponseandcontainsMarconi’smediainformationACKcompletesthree-way-handshake.BYEtearsdownsessionIP语音网络通信基于SIP协议的IP电话SIP代理呼叫流程INVITEissenttoProxyinsteadoftoHeisenbergdirectly.ProxylooksupaddressofHeisenbergandforwardsINVITEtothatIPAddress.ResponsestoINVITEroutebackthroughtheProxy:180Ringingand200OK200OKcontainsaContactheaderwhichallowstheACKandallfuturerequeststogodirectlybypassingProxy.IP语音网络通信基于SIP协议的IP电话SIP重定向呼叫流程INVITEissenttoRedirectServerServerlooksupaddressofHeisenbergandreturnsthataddressinaContactheaderina302MovedTemporarilyresponseTheACKcompletesthetransactionwiththeServerSchroedingerthenre-sendstheINVITEdirectlytoHeisenbergIP语音网络通信基于SIP协议的IP电话SIP注册呼叫流程HeisenbergsendsaREGISTERrequesttoaRegistrarServer.TherequestcontainsContactheaderslistingtheURLsforwhichHeisenbergwishestoreceiveincomingSIPcallsRegistrarAcceptsregistrationandreplieswith200OKandechoescurrentContactlistIP语音网络通信基于SIP协议的IP