您好,欢迎访问三七文档
SIP交互流程一、SIP(SessionInitiationProtocol)会话初始协议(SessionInitiationProtocol)是一种信令协议,用于初始、管理和终止网络中的语音和视频会话,具体地说就是用来生成、修改和终结一个或多个参与者之间的会话。SIP的业务模式是一个点对点协议,其中有两个要素——SIP用户代理和SIP网络服务器。用户代理是呼叫的终端系统元素,而SIP服务器是处理与多个呼叫相关联信令的网络设备。用户代理本身具有一客户机元素(用户代理客户机UAC)和一服务器元素(用户代理服务器UAS)。客户机元素初始呼叫而服务器元素应答呼叫。这允许点到点的呼叫通过客户机-服务器协议来完成。下图是SIP业务的网络结构和各个参与者的关系。SIP是互联网工程任务组(IETF)多媒体数据和控制体系结构的一个组成部分,因此它与IETF的许多其他协议都有联系,例如RTP(实时传输协议)和SDP协议。SIP与许多其它的协议协同工作,仅仅涉及通信会话的信令部分(controlmessage)。SIP报文内容传送会话描述协议(SDP),SDP协议描述了会话所使用流媒体细节,如:使用哪个IP端口,采用哪种编解码器等等。SIP的一个典型用途是:SIP“会话”传输一些简单的经过封包的实时传输协议流。RTP本身才是语音或视频的载体二、业务流程和协议流程这里介绍了注册和呼叫流程,其他场景需要了解,博客地址,比较详细。并有场景的抓包截图等。SIP协议也是简单的讲解请求和应答消息种类,和各个头域讲解,详细的SIP协议请查看文档rfc3261。1.注册流程:注册流程图如下图,举例用sip客户端在10.18.6.83机器上,以1001号码,向10.18.2.152上的Freeswitch注册。终端代理A代理服务器REGISTER(1)401(2)REGISTER(3)200OK(4)标题(1)用户首次试呼时,终端代理A向代理服务器发送REGISTER注册请求;(2)代理服务器通过后端认证/计费中心获知用户信息不在数据库中,便向终端代理回送401Unauthorized质询信息,其中包含安全认证所需的令牌;(3)终端代理提示用户输入其标识和密码后,根据安全认证令牌将其加密后,再次用REGISTER消息报告给代理服务器;(4)代理服务器将REGISTER消息中的用户信息解密,通过认证/计费中心验证其合法后,将该用户信息登记到数据库中,并向终端代理A返回成功响应消息200OK。抓包截图如下图客户端第一次发送的REGISTER包体内容如下图,expries=3600服务器返回的401包体内容如下图客户端带着验证信息项服务器发送REGISTER包体内容如下图服务器给客户端返回注册成功200OK包体内容如下图2.注销流程:客户端注销如下图,举例用10.18.6.128上的SIP客户端注销。用户号码是1000。终端代理代理服务器REGISTER(1)200OK(4)标题(1)终端向代理服务器送Register消息注销,其头中expire字段置0。(2)代理服务器收到后回送200OK响应,并将数据库中的用户有关信息注销。注销抓包截图如下客户端向服务器发送的注销REGISTER包体信息如下图,expries=0;服务器向客户端返回确认消息200OK的包体如下图3.基本呼叫建立过程:呼叫流程如下图,举例10.18.6.83上以1001号码注册到服务器,10.18.6.128上以1000号码注册到服务器上,1001呼叫1000。终端代理A代理服务器Invite(1)100Trying(3)终端代理BInvite(2)100Trying(4)180Ringing(5)180Ringing(6)200OK(7)200OK(8)ACK(9)ACK(10)通话(11)标题(1)用户摘机发起一路呼叫,终端代理A向该区域的代理服务器发起Invite请求;(2)代理服务器通过认证/计费中心确认用户认证已通过后,检查请求消息中的Via头域中是否已包含其地址。若已包含,说明发生环回,返回指示错误的应答;如果没有问题,代理服务器在请求消息的Via头域插入自身地址,并向Invite消息的To域所指示的被叫终端代理B转送Invite请求;(3)代理服务器向终端代理A送呼叫处理中的应答消息,100Trying;(4)终端代理B向代理服务器送呼叫处理中的应答消息,100Trying;(5)终端代理B指示被叫用户振铃,用户振铃后,向代理服务器发送180Ringing振铃信息;(6)代理服务器向终端代理A转发被叫用户振铃信息;(7)被叫用户摘机,终端代理B向代理服务器返回表示连接成功的应答(200OK);(8)代理服务器向终端代理A转发该成功指示(200OK);(9)终端代理A收到消息后,向代理服务器发ACK消息进行确认;(10)代理服务器将ACK确认消息转发给终端代理B;(11)主被叫用户之间建立通信连接,开始通话;呼叫过程抓包流程如下图1001发送向服务器发送INVITE请求的包体内容如下INVITEsip:1000@10.18.2.152SIP/2.0Via:SIP/2.0/UDP10.18.6.83;rport;branch=z9hG4bKcgapzrwjMax-Forwards:70To:sip:1000@10.18.2.152From:bobsip:1001@10.18.2.152;tag=necscCall-ID:ihvgztnhipwftni@zj-B85M-D3HCSeq:736INVITEContact:sip:1001@10.18.6.83Content-Type:application/sdpAllow:INVITE,ACK,BYE,CANCEL,OPTIONS,PRACK,REFER,NOTIFY,SUBSCRIBE,INFO,MESSAGESupported:replaces,norefersub,100relUser-Agent:Twinkle/1.9.0Content-Length:305v=0o=twinkle20618896361855002003INIP410.18.6.83s=-c=INIP410.18.6.83t=00m=audio8000RTP/AVP9897803101a=rtpmap:98speex/16000a=rtpmap:97speex/8000a=rtpmap:8PCMA/8000a=rtpmap:0PCMU/8000a=rtpmap:3GSM/8000a=rtpmap:101telephone-event/8000a=fmtp:1010-15a=ptime:20服务器返回给用户1001,100Trying消息体内容如下SIP/2.0100TryingVia:SIP/2.0/UDP10.18.6.83;rport=5060;branch=z9hG4bKleesztcpFrom:bobsip:1001@10.18.2.152;tag=necscTo:sip:1000@10.18.2.152Call-ID:ihvgztnhipwftni@zj-B85M-D3HCSeq:737INVITEUser-Agent:FreeSWITCH-mod_sofia/1.6.10~64bitContent-Length:0服务器向被叫1000转送INVITE请求消息包内容如下INVITEsip:1000@10.18.6.128:61306;rinstance=ddeb50f2659c14dbSIP/2.0Via:SIP/2.0/UDP10.18.2.152;rport;branch=z9hG4bKD92XXBpSQ5jmcRoute:sip:1000@10.18.6.128:61306;rinstance=ddeb50f2659c14dbMax-Forwards:69From:Extension1001sip:1001@10.18.2.152;tag=Qt95DD4eK4jQFTo:sip:1000@10.18.6.128:61306;rinstance=ddeb50f2659c14dbCall-ID:d37fdc79-15e9-1235-ad86-525400bcb470CSeq:98395929INVITEContact:sip:mod_sofia@10.18.2.152:5060User-Agent:FreeSWITCH-mod_sofia/1.6.10~64bitAllow:INVITE,ACK,BYE,CANCEL,OPTIONS,MESSAGE,INFO,UPDATE,REGISTER,REFER,NOTIFY,PUBLISH,SUBSCRIBESupported:timer,path,replacesAllow-Events:talk,hold,conference,presence,as-feature-event,dialog,line-seize,call-info,sla,include-session-description,presence.winfo,message-summary,referContent-Type:application/sdpContent-Disposition:sessionContent-Length:242X-FS-Support:update_display,send_infoRemote-Party-ID:Extension1001sip:1001@10.18.2.152;party=calling;screen=yes;privacy=offv=0o=FreeSWITCH14774449721477444973INIP410.18.2.152s=FreeSWITCHc=INIP410.18.2.152t=00m=audio19014RTP/AVP80101a=rtpmap:8PCMA/8000a=rtpmap:0PCMU/8000a=rtpmap:101telephone-event/8000a=fmtp:1010-16a=ptime:20被叫1000向服务器发送100Tring消息体内容如下SIP/2.0100TryingVia:SIP/2.0/UDP10.18.2.152;rport=5060;branch=z9hG4bKD92XXBpSQ5jmcTo:sip:1000@10.18.6.128:61306;rinstance=ddeb50f2659c14dbFrom:Extension1001sip:1001@10.18.2.152;tag=Qt95DD4eK4jQFCall-ID:d37fdc79-15e9-1235-ad86-525400bcb470CSeq:98395929INVITEContent-Length:0被叫1000向服务器发送180Ringing的消息体内容如下SIP/2.0180RingingVia:SIP/2.0/UDP10.18.2.152;rport=5060;branch=z9hG4bKD92XXBpSQ5jmcContact:sip:1000@10.18.6.128:61306;rinstance=ddeb50f2659c14dbTo:1000sip:1000@10.18.6.128:61306;rinstance=ddeb50f2659c14db;tag=d3757b5cFrom:Extension1001sip:1001@10.18.2.152;tag=Qt95DD4eK4jQFCall-ID:d37fdc79-15e9-1235-ad86-525400bcb470CSeq:98395929INVITEUser-Agent:X-Literelease4.9.6stam
本文标题:SIP交互流程
链接地址:https://www.777doc.com/doc-638257 .html