我们首先来看下主要的呼叫流程。

INVITEsip:69690067@beijing.chinamobile.com;user=phone SIP/2.0

From:"+861069690069"<sip:+861069690069@beijing.chinamobile.com;user=phone>;tag=8741b8-ac1014d2-13c4-1c6-10e9bfd8-1c6

To:<sip:69690067@beijing.chinamobile.com;user=phone>

Call-ID: 88a020-ac1014d2-13c4-1c6-1b3a4fb3-1c6@beijing.chinamobile.com

CSeq: 1 INVITE

Via: SIP/2.0/UDP172.16.20.210:5060;branch=z9hG4bK-1c6-6f0cc-66d0e581

Allow: INVITE,ACK,CANCEL,BYE,REGISTER,REFER,NOTIFY,PRACK,CANCEL,SUBSCRIBE,OPTIONS,INFO,UPDATE,MESSAGE

Max-Forwards: 70

Supported: 100rel,replaces,timer

P-Preferred-Identity:"+861069690069"<sip:+861069690069@beijing.chinamobile.com;user=phone>

Contact: <sip:+861069690069@172.16.20.210:5060>

Content-Type: application/SDP

Content-Length: 236

v=0

o=+861069690069 454 454 IN IP4172.16.20.210

s=-

c=IN IP4 172.16.20.210

t=0 0

m=audio 10008 RTP/AVP 8 0 18 4

a=rtpmap:8 PCMA/8000

a=rtpmap:0 PCMU/8000

a=rtpmap:18 G729/8000

a=rtpmap:4 G723/8000

a=ptime:20

a=ecan:fb on -

用户摘机发起一路呼叫,终端+861069690069向代理server发送INVITE请求

SIP/2.0 100 Trying

Via: SIP/2.0/UDP172.16.20.210:5060;branch=z9hG4bK-1c6-6f0cc-66d0e581;received=192.168.100.41

Call-ID: 88a020-ac1014d2-13c4-1c6-1b3a4fb3-1c6@beijing.chinamobile.com

From: "+861069690069"<sip:+861069690069@beijing.chinamobile.com;user=phone>;tag=8741b8-ac1014d2-13c4-1c6-10e9bfd8-1c6

To:<sip:69690067@beijing.chinamobile.com;user=phone>

CSeq: 1 INVITE

Content-Length: 0

代理server收到终端发送的INVITE请求,向终端+861069690069发送100 trying说明该请求已经收到,让终端停止INVITE重发定时器。

INVITEsip:+861069690067@172.16.20.210:5060 SIP/2.0

Via: SIP/2.0/UDP192.168.246.210:5060;branch=z9hG4bKw0hwph6xp20yo0gg2zhmwwpvmT25426

Call-ID: asbc7xw0p0x3zv6qxx1zx03n01qlv6k11z2q@192.168.10.22

From:<sip:65069@beijing.chinamobile.com>;tag=sbc05100m0qlxw6

To:<sip:+861069690067@beijing.chinamobile.com;user=phone>

CSeq: 1 INVITE

Allow:INVITE,CANCEL,ACK,BYE,OPTIONS,INFO,UPDATE,PRACK,REFER,NOTIFY,REGISTER,MESSAGE,SUBSCRIBE

Contact:<sip:192.168.246.210:5060>

Max-Forwards: 69

Supported: 100rel,replaces,timer

P-Asserted-Identity:<tel:+861069690069>

Privacy: none

P-Called-Party-ID:<sip:+861069690067@beijing.chinamobile.com>

Content-Length: 235

Content-Type: application/sdp

v=0

o=- 454 454 IN IP4 192.168.246.218

s=SBC call

c=IN IP4 192.168.246.218

t=0 0

m=audio 12962 RTP/AVP 8 0 18 4

a=rtpmap:8 PCMA/8000

a=rtpmap:0 PCMU/8000

a=rtpmap:18 G729/8000

a=rtpmap:4 G723/8000

a=ptime:20

a=ecan:fb on –

代理server通过对INVITE请求的验证通过后,检查via头域中是否包括自己的地址。若已包括自己的地址,说明已经发生回路,向终端+861069690069发送错误的应答;假设没有问题,代理server在请求消息的via头域插入自己的地址,并向INVITE消息的to头域所指的被叫终端转发INVITE请求。

SIP/2.0  100 Trying

From:<sip:65069@beijing.chinamobile.com>;tag=sbc05100m0qlxw6

To:<sip:+861069690067@beijing.chinamobile.com;user=phone>

Call-ID: asbc7xw0p0x3zv6qxx1zx03n01qlv6k11z2q@192.168.10.22

CSeq: 1 INVITE

Via: SIP/2.0/UDP192.168.246.210:5060;branch=z9hG4bKw0hwph6xp20yo0gg2zhmwwpvmT25426

Supported: 100rel,replaces,timer

P-Preferred-Identity:"+861069690067"<sip:+861069690067@beijing.chinamobile.com;user=phone>

Contact:<sip:+861069690067@172.16.20.210:5060>

Content-Length: 0

终端+861069690067收到代理server发送的INVITE请求,并向代理server发送100 trying说明该请求已经收到,让终端停止INVITE重发定时器。

SIP/2.0 180 Ringing

From:<sip:65069@beijing.chinamobile.com>;tag=sbc05100m0qlxw6

To:<sip:+861069690067@beijing.chinamobile.com;user=phone>;tag=874368-ac1014d2-13c4-1c7-26f60a2f-1c7

Call-ID: asbc7xw0p0x3zv6qxx1zx03n01qlv6k11z2q@192.168.10.22

CSeq: 1 INVITE

Via: SIP/2.0/UDP192.168.246.210:5060;branch=z9hG4bKw0hwph6xp20yo0gg2zhmwwpvmT25426

Supported: 100rel,replaces,timer

P-Preferred-Identity: "+861069690067"<sip:+861069690067@beijing.chinamobile.com;user=phone>

Contact:<sip:+861069690067@172.16.20.210:5060>

Content-Length: 0

被叫终端对INVITE消息的合法性检查通过,指示代理server振铃,向代理server发送180 ring消息

SIP/2.0 180 Ringing

Via: SIP/2.0/UDP172.16.20.210:5060;branch=z9hG4bK-1c6-6f0cc-66d0e581;received=192.168.100.41

Call-ID:88a020-ac1014d2-13c4-1c6-1b3a4fb3-1c6@beijing.chinamobile.com

From:"+861069690069"<sip:+861069690069@beijing.chinamobile.com;user=phone>;tag=8741b8-ac1014d2-13c4-1c6-10e9bfd8-1c6

To:<sip:69690067@beijing.chinamobile.com;user=phone>;tag=sbc0509wwxwpz1q

CSeq: 1 INVITE

Allow:INVITE,CANCEL,ACK,BYE,OPTIONS,INFO,UPDATE,PRACK,REFER,NOTIFY,REGISTER,MESSAGE,SUBSCRIBE

Contact:<sip:192.168.246.210:5060>

P-Asserted-Identity:<sip:+861069690067@beijing.chinamobile.com>,<tel:+861069690067>

Content-Length: 0

代理server收到180 ring消息,指示主叫方听回铃音

SIP/2.0 200 OK

From:<sip:65069@beijing.chinamobile.com>;tag=sbc05100m0qlxw6

To:<sip:+861069690067@beijing.chinamobile.com;user=phone>;tag=874368-ac1014d2-13c4-1c7-26f60a2f-1c7

Call-ID:asbc7xw0p0x3zv6qxx1zx03n01qlv6k11z2q@192.168.10.22

CSeq: 1 INVITE

Allow: INVITE,ACK,CANCEL,BYE,REGISTER,REFER,NOTIFY,PRACK,CANCEL,SUBSCRIBE,OPTIONS,INFO,UPDATE,MESSAGE

Via: SIP/2.0/UDP192.168.246.210:5060;branch=z9hG4bKw0hwph6xp20yo0gg2zhmwwpvmT25426

Supported: 100rel,replaces,timer

P-Preferred-Identity:"+861069690067"<sip:+861069690067@beijing.chinamobile.com;user=phone>

Contact:<sip:+861069690067@172.16.20.210:5060>

Content-Type: application/SDP

Content-Length: 248

v=0

o=+861069690067 456 456 IN IP4172.16.20.210

s=-

c=IN IP4 172.16.20.210

t=0 0

m=audio 10012 RTP/AVP 8 0 18 4

a=rtpmap:8 PCMA/8000

a=rtpmap:0 PCMU/8000

a=rtpmap:18 G729/8000

a=rtpmap:4 G723/8000

a=ptime:20

a=ecan:fb on -

a=sendrecv

被叫方摘机,向代理server发送200OK消息,表示已经摘机能够開始通话了

SIP/2.0 200 OK

Via: SIP/2.0/UDP172.16.20.210:5060;branch=z9hG4bK-1c6-6f0cc-66d0e581;received=192.168.100.41

Call-ID: 88a020-ac1014d2-13c4-1c6-1b3a4fb3-1c6@beijing.chinamobile.com

From:"+861069690069"<sip:+861069690069@beijing.chinamobile.com;user=phone>;tag=8741b8-ac1014d2-13c4-1c6-10e9bfd8-1c6

To:<sip:69690067@beijing.chinamobile.com;user=phone>;tag=sbc0509wwxwpz1q

CSeq: 1 INVITE

Allow:INVITE,CANCEL,ACK,BYE,OPTIONS,INFO,UPDATE,PRACK,REFER,NOTIFY,REGISTER,MESSAGE,SUBSCRIBE

Contact:<sip:192.168.246.210:5060>

Supported: 100rel,replaces,timer

P-Asserted-Identity:<sip:+861069690067@beijing.chinamobile.com>,<tel:+861069690067>

Content-Length: 247

Content-Type: application/sdp

v=0

o=- 456 456 IN IP4 192.168.246.218

s=SBC call

c=IN IP4 192.168.246.218

t=0 0

m=audio 12964 RTP/AVP 8 0 18 4

a=rtpmap:8 PCMA/8000

a=rtpmap:0 PCMU/8000

a=rtpmap:18 G729/8000

a=rtpmap:4 G723/8000

a=ptime:20

a=ecan:fb on -

a=sendrecv

代理server收到200 OK消息后改动状态机,而且发送200OK消息到主叫,告诉主叫,被叫已经接通

ACK sip:192.168.246.210:5060SIP/2.0

From:"+861069690069"<sip:+861069690069@beijing.chinamobile.com;user=phone>;tag=8741b8-ac1014d2-13c4-1c6-10e9bfd8-1c6

To:<sip:69690067@beijing.chinamobile.com;user=phone>;tag=sbc0509wwxwpz1q

Call-ID:88a020-ac1014d2-13c4-1c6-1b3a4fb3-1c6@beijing.chinamobile.com

CSeq: 1 ACK

Via: SIP/2.0/UDP172.16.20.210:5060;branch=z9hG4bK-1c8-6f6ac-7e19e755

Max-Forwards: 70

P-Preferred-Identity:"+861069690069"<sip:+861069690069@beijing.chinamobile.com;user=phone>

Contact:<sip:+861069690069@172.16.20.210:5060>

Content-Length: 0

代理server收到ACK后,向被叫方发送200 OK相应的ACK消息,表示200
OK消息已经收到,而且主叫和被叫能够进行通话

ACKsip:+861069690067@172.16.20.210:5060 SIP/2.0

Via: SIP/2.0/UDP192.168.246.210:5060;branch=z9hG4bKw0wp6h1p6ovh1lzr1lgr1rpzmT25427

Call-ID:asbc7xw0p0x3zv6qxx1zx03n01qlv6k11z2q@192.168.10.22

From:<sip:65069@beijing.chinamobile.com>;tag=sbc05100m0qlxw6

To:<sip:+861069690067@beijing.chinamobile.com;user=phone>;tag=874368-ac1014d2-13c4-1c7-26f60a2f-1c7

CSeq: 1 ACK

Max-Forwards: 69

Content-Length: 0

被叫发送收到ACK消息后,通话建立成功

语音通讯建立成功,開始进行正常的语音通话……

BYE sip:192.168.246.210:5060SIP/2.0

From:<sip:+861069690067@beijing.chinamobile.com;user=phone>;tag=874368-ac1014d2-13c4-1c7-26f60a2f-1c7

To:<sip:65069@beijing.chinamobile.com>;tag=sbc05100m0qlxw6

Call-ID: asbc7xw0p0x3zv6qxx1zx03n01qlv6k11z2q@192.168.10.22

CSeq: 1 BYE

Via: SIP/2.0/UDP172.16.20.210:5060;branch=z9hG4bK-1d1-719f3-76b3cbbd

Max-Forwards: 70

Supported: 100rel,replaces,timer

P-Preferred-Identity:"+861069690067"<sip:+861069690067@beijing.chinamobile.com;user=phone>

Content-Length: 0

主叫方挂机,向代理server发送BYE消息

SIP/2.0 200 OK

Via: SIP/2.0/UDP172.16.20.210:5060;branch=z9hG4bK-1d1-719f3-76b3cbbd;received=192.168.100.41

Call-ID:asbc7xw0p0x3zv6qxx1zx03n01qlv6k11z2q@192.168.10.22

From: <sip:+861069690067@beijing.chinamobile.com;user=phone>;tag=874368-ac1014d2-13c4-1c7-26f60a2f-1c7

To:<sip:65069@beijing.chinamobile.com>;tag=sbc05100m0qlxw6

CSeq: 1 BYE

Content-Length: 0

代理server收到,BYE消息后,确认挂机后,向主叫方发送200OK,表示主叫方已经成功挂机,而且向被叫方发送BYE消息,通知其挂机

BYEsip:+861069690069@172.16.20.210:5060 SIP/2.0

Via: SIP/2.0/UDP 192.168.246.210:5060;branch=z9hG4bKlvog2lhovvv0w6pmllymrhl16T15221

Call-ID: 88a020-ac1014d2-13c4-1c6-1b3a4fb3-1c6@beijing.chinamobile.com

From:<sip:69690067@beijing.chinamobile.com;user=phone>;tag=sbc0509wwxwpz1q

To:"+861069690069"<sip:+861069690069@beijing.chinamobile.com;user=phone>;tag=8741b8-ac1014d2-13c4-1c6-10e9bfd8-1c6

CSeq: 1 BYE

Max-Forwards: 69

Reason: Q.850;cause=16

Content-Length: 0

代理server向被叫发送关机消息BYE,告诉被叫主叫已经挂机

SIP/2.0 200 OK

From:<sip:69690067@beijing.chinamobile.com;user=phone>;tag=sbc0509wwxwpz1q

To: "+861069690069"<sip:+861069690069@beijing.chinamobile.com;user=phone>;tag=8741b8-ac1014d2-13c4-1c6-10e9bfd8-1c6

Call-ID: 88a020-ac1014d2-13c4-1c6-1b3a4fb3-1c6@beijing.chinamobile.com

CSeq: 1 BYE

Via: SIP/2.0/UDP192.168.246.210:5060;branch=z9hG4bKlvog2lhovvv0w6pmllymrhl16T15221

Supported: 100rel,replaces,timer

P-Preferred-Identity:"+861069690069"<sip:+861069690069@beijing.chinamobile.com;user=phone>

Content-Length: 0

被叫方收到BYE消息后,确认挂机,而且回复200OK,表示挂机操作已经成功完毕

呼叫消息的流程图

依据上述的呼叫信息,对其进行具体的解说。

”建立呼叫。

2)  代理server收到主叫方,发送的INVITE请求后,回复100 Trying。100
Trying表示代理server已经收到了INVITE请求,不须要UAC,即主叫方启用INVITE重发定时间,再次发送INVITE消息。

消息结束本次呼叫请求,否则,想被叫注冊的地址发送呼叫请求INVITE消息。

4)  被叫方收到INVITE请求消息后,回复100 Trying。并对INVITE消息的合法性检測。

,表示被叫方開始振铃,主叫方听回铃音或彩铃。

后,改动代理server的状态机状态,改动为振铃状态,而且发送振铃消息给主叫方,主叫方听回铃音。

7)  被叫方摘机,向代理server发送200OK消息,表示被叫方已经摘机。

8)  代理server收到200OK消息后改动状态机,而且发送200OK消息到主叫,告诉主叫,被叫已经接通。

9)  主叫收到200OK后,打开媒体通道,建立通话,而且向代理server发送ACK消息,表示已经收到200OK消息。

10)代理server收到ACK后,向被叫方发送200OK相应的ACK消息,表示200OK消息已经收到,而且主叫和被叫能够进行通话。

11) 被叫发送收到ACK消息后,通话建立成功。

个步骤,通话最终建立成功。

13)主叫方挂机,向代理server发送BYE消息。

14)代理server收到,BYE消息后,确认挂机后,向主叫方发送200OK,表示主叫方已经成功挂机,而且向被叫方发送BYE消息,通知其挂机。

15) 被叫方收到BYE消息后,确认挂机,而且回复200OK,表示挂机操作已经成功完毕。

16) 经过以上步骤,通话到此结束。

SIP基本呼叫的更多相关文章

  1. Sipdroid实现SIP(二): 呼叫请求

    INVITE 许多介绍sip的文章没有介绍以下几点细节: 重传, Timer A, B Transaction的有限状态机, 记录当前Transactin的进展情况 与INVITE消息相关的行为(Cl ...

  2. sip协议呼叫流程详解

    1.SIP业务基本知识 1.1 业务介绍会话初始协议(Session Initiation Protocol)是一种信令协议,用于初始.管理和终止网络中的语音和视频会话,具体地说就是用来生成.修改和终 ...

  3. [百科] - SIP(会话发起协议)

    SIP(会话发起协议)SIP是类似于HTTP的基于文本的协议.SIP可以减少应用特别是高级应用的开发时间.由于基于IP协议的SIP利用了IP网络,固定网运营商也会逐渐认识到SIP技术对于他们的深远意义 ...

  4. 【转】SIP 中的Dialog,call,session 和 transaction

    如果你对Sip协议中Call, Dialog, Transaction和Message之间的关系感觉到迷惑,那么,那么我可以告诉你,你并不孤单,因为大多数初学者对于这些名词之间的关系都会感到疑惑.   ...

  5. 阐述:SIP协议是什么

    sip协议是什么?可能刚刚接触这个协议的朋友会掌握不好它的定义.那么首先我们要了解一下,目前企业中大多数VoIP应用都使用H.323协议,但是,随着越来越多的企业研究SIP协议,不久的将来基于SIP协 ...

  6. 【SIP协议】学习初学笔记

    1.SIP这玩意是怎么走来和如何构建的? 通俗的说,SIP就是一个轻量级信令协议,它可以作为音频.视频.及时信息的信令. 说到SIP是怎么出来的就要提H.323,而提到这个标准由不得不提到ITU-T, ...

  7. SIP协议&开源SIP服务器搭建和客户端安装

    1. SIP SIP 是一个应用层的控制协议,可以用来建立,修改,和终止多媒体会话,例如Internet电话 SIP在建立和维持终止多媒体会话协议上,支持五个方面: 1)   用户定位: 检查终端用户 ...

  8. sip会话流程以及sip介绍(2)

    下面我们通过一个简单的场景例子来简单介绍一下 SIP 会话流程. Tom 和 Jerry 是非常好的伙伴,Tom 在他的 PC 上使用一个 SIP 的应用程序呼叫 Internet 上另一个 SIP ...

  9. sip会话流程以及sip介绍(1)

    参考连接 :https://www.2cto.com/kf/201609/546336.html https://www.w3cschool.cn/session_initiation_protoco ...

随机推荐

  1. 忽然想到:把Mu的源代码一网打尽

    那么那些流媒体开发的公司,就不会拒绝我了,真是一举两得.

  2. Spring4 MVC 多文件上传(图片并展示)

    开始需要在pom.xml加入几个jar,分别是 <dependency> <groupId>commons-fileupload</groupId> <art ...

  3. Delphi 中 FindWindow 和 FindWindowEx 找到外部进程,然后发送消息(比如最大化)

    FindWindow(lpClassName,        {窗口的类名}lpWindowName: PChar {窗口的标题}): HWND;              {返回窗口的句柄; 失败返 ...

  4. Linux共享wifi给Android手机

    亲測可行,測试系统:Deepin2014,Ubuntu也一样.步骤很easy. 1.卸载hostapd,sudo apt-get remove hostapd(假设原来装过的话卸载,由于某些版本号不支 ...

  5. java socket 的参数选项解读(转)

    java socket中有很多参数可以选择,这篇博客的目的是沉淀出这些参数的语义和用法,供自己以后查阅. 1.java socket参数选项总览 在JDK1.6中有如下参数选项: 1 public f ...

  6. Swift实现OC中的单例模式

    一.MySingle类 import Foundation class MySingle{ //定义单例的属性 var name:String? var age:Int? var height:Dou ...

  7. 《C/C++专项练习》 — (3)

    序 第三次C/C++专项.嗯,要抗住打击,继续加油~ 错题分析与总结 1 . 在64位系统中.有例如以下类: class A { public: void *p1; private: void *p2 ...

  8. Java 使用AES/CBC/PKCS7Padding 加解密字符串

    介于java 不支持PKCS7Padding,只支持PKCS5Padding 但是PKCS7Padding 和 PKCS5Padding 没有什么区别要实现在java端用PKCS7Padding填充, ...

  9. angular学习(二):Controller定义总结

    上文中总结完了ng-view的应用,将运维后台分开界面到2个,进行到 逻辑Controller处理中,本文将总结一下在项目中Controller都用到了哪些知识: $scope:作用域对象,仅仅是代表 ...

  10. iOS ,呼叫捕获抛出勉未知方法的障碍

    iOS 捕获未知方法的调用,避勉抛出异常 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 ...