IP电话机、视频可视电话通信产品及组网方案

SIP协议的IP电话呼叫过程分析

时间:2017-03-14 15:11 作者:IP电话 分享到:

             基于SIP协议的IP电话呼叫过程目前IP电话的应用越来越广泛,IP电话所使用的协议也引起我们的关注。网络IP电话使用的协议主要有以下几种:H323、SIP、MGCP、IAX2和一些私家协议。

            H.323是最早的VOIP标准协议,使用H.322协议的用户也非常多,但现在正在被SIP协议所取代。现在SIP成为最为主流的标准协议。SIP协议介绍与分析会话初始协议(SessionInitiationProtocol)是一种信令协议用于初始、管理和终止网络中的语音和视频会话,具体地说就是用来生成、修改和终结一个或多个参与者之间的会话。SIP是互联网工程任务组(IETF)多媒体数据和控制体系结构的一个组成部分,因此它与IETF的许多其他协议都有联系,例如RTP(实时传输协议)和本文提到的SDP协议。按逻辑功能区分,SIP系统由4种元素组成:用户代理,SIP代理服务器,重定向服务器和SIP注册服务器。平时我们所说的SIP服务器已经包含了代理服务器,重定向服务器和SIP注册服务器的功能。1、SIP用户代理(UA):又称为SIP终端,是SIP系统中的最终用户,在SIP网络中具有UA功能的设备是:工作站,IP电话,电话网关,呼叫代理,自动应答服务。2、代理服务器(SIPProxyServer):代理服务器是同时作为服务器和客户机的中间实体,其目的是代表其他客户机生成请求。请求被内部处理或可能在翻译之后将其传递到其他服务器。如果需要,代理在转发之前可解释和重写请求消息。3、重定向服务器:重定向服务器接受SIP请求,并将被呼叫方的SIP地址映射成零个(如果没有可知地址)或更多的新地址并且将它们返回客户机。不像代理服务器,重定向服务器不传递请求到其他服务器。4、注册服务器:注册服务器是接受REGISTER请求的服务器,其目的是根据用户在请求中规定的联系信息更新位置数据库。SIP通过E-mail形式的地址来标明用户地址。例如:SIP:phonenumber@sip.serveraddr.com它通过诸如用户电话号码或主机名等元素来构造。

        SIP有两种类型的消息,它们是:(1)请求:从客户机发到服务器的消息。(2)响应:从服务器发到客户机的消息。其中请求消息包括:INVITE:初始呼叫,或改变参数(re-INVITE)。ACK:确认INVITE的最终应答。BYE:终止呼叫。CANCEL:撤消搜索和振铃。OPTIONS:查询另一方能力(功能)。REGISTER:用于客户出向注册服务器注册用户位置等消息。INFO:发送会话中信息而不改变会话状态。PRACK:与ACK作用相同,但是用于临时响应。SUBSCRIBE:该方法用来向远端端点预订其状态变化的通知。NOTIFY:该方法发送消息以通知预订者它所预定的状态的变化。UPDATE:允许客户更新一个会话的参数而不影响该会话的当前状态。MESSAGE:通过在其请求体中承载即时消息内容实现即时消息。REFER:其功能是指示接受方通过使用在请求中提供的联系地址信息联系第三方,多用于三方通话和呼叫转移。响应消息的内容为响应代码。SIP响应代码类似于HTTP响应代码。有两种类型的响应,它们是:临时响应(1XX):临时响应被服务器用来指示进程,但是不终结SIP事物。最终响应(2XX,3XX,4XX,5XX,6XX):最终响应终止SIP事物。部分响应代码的含义,100:尝试呼叫、180:振铃、200:注册成功,正常、401:认证失败403:客户端错误,被禁止。每个SIP数据包由以下三部分组成:(1)起始行(StartLine):每个SIP消息由起始行开始。起始行传达消息类型(在请求中是方法类型,在响应中是响应代码)与协议版本。起始行可以是一请求行(请求)或状态行(响应)。(2)消息头(messageheader):用来传递消息属性和修改消息意义。它们在语法和语义上与HTTP头域相同(实际上有些头就是借自HTTP),并且总是保持格式:<名字>:<值>。(3)消息体(messagebody):用于描述被初始的会话(例如,在多媒体会话中包括音频和视频编码类型,采样率等)。消息体能够显示在请求与响应中。SIP清晰区别了在SIP起始行和头中传递的信令信息与在SIP范围之外的会话描述信息。消息体类型就包括本文将要描述的SDP会话描述协议。SDP协议介绍与分析SDP(SessionDescriptionProtocol,会话描述协议),实际上SDP就是用来描述多媒体会话通告,多媒体会话邀请和其他形式的多媒体会话初始化的协议。
       
            SDP包通常包括以下信息:(1)会话信息会话名和目的。会话活动时间。由于参与会话的资源是受限制的,因此包括以下附加信息是非常有用的。会话使用的带宽信息。会话负责人的联系信息。(2)媒体信息媒体类型,例如视频和音频。传输协议,例如RTP/UDP/IP和H.320。媒体格式,,例如 H.261视频和MPEG视频。多播地址和媒体传输端口(IP多播会话)。用于联系地址的媒体和传输端口的远端地址(IP单播会话)。SDP描述由许多文本行组成,文本行的格式为<类型>=<值>,<类型>是一个字母,<值>是结构化的文本串,其格式依<类型>而定。头痛了吧?有点晕是不是?下面我们通过抓包分析来验证上面的知识介绍。实验环境介绍:192.168.0.106和192.168.0.187是2台终端设备即IP话机它们对应的电话号码分别为211和210,并且都注册在地址为192.168.0.222的SIP服务器上。分析工具:OmniPeekPersonal4.0现在号码211的IP话机向210发起呼叫像TCP协议一样,每次呼叫发起方都要与SIP服务器完成三次握手192.168.0.106先发送INVITE请求连接SIP服务器,192.168.0.222收到INVITE信息后给于回应,然后192.168.0.106再回复一个ACK完成三次握手。真正发起呼叫是在第4个数据包看看SIP包的结构吧,刚才看的介绍应该忘的差不多了。还记得吗,SIP有两种类型的消息:请求和响应。第一个数据包就是请求,在SIP包的起始行中可以看到请求类型为INVITE,意为初始呼叫这是第2个数据包SIP服务器发往192.168.0.106(客户端)的响应包,可以看到响应代码为407需要对客户端进行验证(不确定)。下图为192.168.0.106回应SIP服务器的消息ACK当然是确认的意思啦~三次握手后客户端再次向服务器发送INVITE消息,并告诉服务器客户端能够进行的请求。这一步才是真正的呼叫的开始。再回顾一下SIP协议中消息体(messagebody)的内容。当服务器收到192.168.0.106的呼叫请求后,向192.168.0.106回应一个相应包,可以从上图看出响应代码为100意为尝试呼叫。1—5的数据包只是涉及到主叫方与服务器之间的通信。下图是服务器收到呼叫请求后向被叫方发起呼叫。数据包6,SIP服务器向被叫方192.168.0.187(号码为210)发起呼叫请求,同时告诉主叫方开始振铃(pkt7)。被叫方收到INVITE后告诉服务器正在准备,然后发送正在振铃信息告诉服务器(pkt8-9)。服务器收到正在振铃信息后把此消息反馈给主叫方192.168.0.106(pkt10).第11个数据包是被叫方192.168.0.187(号码210)摘机后回送给服务器一个响应消息,消息代码200,服务器收到摘机信息后回送一个ACK给被叫方表示已经确认(pkt12),同时服务器把被叫方已经摘机的信息通知给主叫方(pkt13),主叫方192.168.0.106回送一个ACK给SIP服务器(pkt14)。至此呼叫建立过程已经完成。接下来便是语音的传输了。上图第15-16数据包是主叫向被叫建议语音包传输过程,通过RTP协议传输语音编码为G.729。在40-50数据包是被叫向主叫建立语音包传输过程。通过抓包发现双方的语音通话是通过SIP服务器中转的。上图是通话结束的情况,被叫方先挂机并向SIP服务器发送BYE终止呼叫请求,服务器收到BYE请求后返回一个ACK响应,同时向主叫方发送一个BYE终止呼叫的请求,主叫方回送一个ACK确认,通话结束。以上是本人结合从互联网上学习到的知识,进行SIP会话过程的学习总结,或许其中有理解偏差或者错误的地方,希望各位网络达人指出。

版权所有:IP电话:http://www.g3voip.com 转载请注明出处

热销IP电话产品hot products