第1页共46页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共46页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本身第2页共46页第1页共46页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第2页共46页才是语音或视频的载体二、业务流程和协议流程这里介绍了注册和呼叫流程,其他场景需要了解,博客地址http://www.cnblogs.com/gnuhpc/archive/2012/12/10/2812095.html,比较详细。并有场景的抓包截图等。SIP协议也是简单的讲解请求和应答消息种类,和各个头域讲解,详细的SIP协议请查看文档rfc3261。1.注册流程:注册流程图如下图,举例用sip客户端在10.18.6.83机器上,以1001号码,向10.18.2.152上的Freeswitch注册。抓包截图如下图第3页共46页第2页共46页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第3页共46页客户端第一次发送的REGISTER包体内容如下图,expries=3600服务器返回的401包体内容如下图客户端带着验证信息项服务器发送REGISTER包体内容如下图服务器给客户端返回注册成功200OK包体内容如下图第4页共46页第3页共46页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第4页共46页2.注销流程:客户端注销如下图,举例用10.18.6.128上的SIP客户端注销。用户号码是1000。注销抓包截图如下客户端向服务器发送的注销REGISTER包体信息如下图,expries=0;第5页共46页第4页共46页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第5页共46页服务器向客户端返回确认消息200OK的包体如下图3.基本呼叫建立过程:呼叫流程如下图,举例10.18.6.83上以1001号码注册到服务器,10.18.6.128上以1000号码注册到服务器上,1001呼叫1000。第6页共46页第5页共46页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第6页共46页呼叫过程抓包流程如下图第7页共46页第6页共46页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第7页共46页1001发送向服务器发送INVITE请求的包体内容如下INVITEsip:1000@10.18.2.152SIP/2.0Via:SIP/2.0/UDP10.18.6.83;rport;branch=z9hG4bKcgapzrwjMax-Forwards:70To:From:"bob";tag=necscCall-ID:ihvgztnhipwftni@zj-B85M-D3HCSeq:736INVITEContact:Content-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消息体内容如下第8...