SIP基本呼叫

我们首先来看下基本的呼叫流程。

INVITEsip:[email protected];user=phone SIP/2.0

From:"+861069690069"<sip:+[email protected];user=phone>;tag=8741b8-ac1014d2-13c4-1c6-10e9bfd8-1c6

To:<sip:[email protected];user=phone>

Call-ID: [email protected]

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:+[email protected];user=phone>

Contact: <sip:+[email protected]: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向代理服务器发送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: [email protected]

From: "+861069690069"<sip:+[email protected];user=phone>;tag=8741b8-ac1014d2-13c4-1c6-10e9bfd8-1c6

To:<sip:[email protected];user=phone>

CSeq: 1 INVITE

Content-Length: 0

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

INVITEsip:+[email protected]:5060 SIP/2.0

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

Call-ID: [email protected]

From:<sip:[email protected]>;tag=sbc05100m0qlxw6

To:<sip:+[email protected];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:+[email protected]>

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 –

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

SIP/2.0  100 Trying

From:<sip:[email protected]>;tag=sbc05100m0qlxw6

To:<sip:+[email protected];user=phone>

Call-ID: [email protected]

CSeq: 1 INVITE

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

Supported: 100rel,replaces,timer

P-Preferred-Identity:"+861069690067"<sip:+[email protected];user=phone>

Contact:<sip:+[email protected]:5060>

Content-Length: 0

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

SIP/2.0 180 Ringing

From:<sip:[email protected]>;tag=sbc05100m0qlxw6

To:<sip:+[email protected];user=phone>;tag=874368-ac1014d2-13c4-1c7-26f60a2f-1c7

Call-ID: [email protected]

CSeq: 1 INVITE

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

Supported: 100rel,replaces,timer

P-Preferred-Identity: "+861069690067"<sip:+[email protected];user=phone>

Contact:<sip:+[email protected]:5060>

Content-Length: 0

被叫终端对INVITE消息的合法性检查通过,指示代理服务器振铃,向代理服务器发送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:[email protected]

From:"+861069690069"<sip:+[email protected];user=phone>;tag=8741b8-ac1014d2-13c4-1c6-10e9bfd8-1c6

To:<sip:[email protected];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:+[email protected]>,<tel:+861069690067>

Content-Length: 0

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

SIP/2.0 200 OK

From:<sip:[email protected]>;tag=sbc05100m0qlxw6

To:<sip:+[email protected];user=phone>;tag=874368-ac1014d2-13c4-1c7-26f60a2f-1c7

Call-ID:[email protected]

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:+[email protected];user=phone>

Contact:<sip:+[email protected]10: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

被叫方摘机,向代理服务器发送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: [email protected]

From:"+861069690069"<sip:+[email protected];user=phone>;tag=8741b8-ac1014d2-13c4-1c6-10e9bfd8-1c6

To:<sip:[email protected];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:+[email protected]>,<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

代理服务器收到200 OK消息后修改状态机,并且发送200OK消息到主叫,告诉主叫,被叫已经接通

ACK sip:192.168.246.210:5060SIP/2.0

From:"+861069690069"<sip:+[email protected]ng.chinamobile.com;user=phone>;tag=8741b8-ac1014d2-13c4-1c6-10e9bfd8-1c6

To:<sip:[email protected];user=phone>;tag=sbc0509wwxwpz1q

Call-ID:[email protected]

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:+[email protected];user=phone>

Contact:<sip:+[email protected]:5060>

Content-Length: 0

代理服务器收到ACK后,向被叫方发送200 OK对应的ACK消息,表示200
OK消息已经收到,并且主叫和被叫可以进行通话

ACKsip:+[email protected]:5060 SIP/2.0

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

Call-ID:[email protected]

From:<sip:[email protected]>;tag=sbc05100m0qlxw6

To:<sip:+[email protected];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:+[email protected];user=phone>;tag=874368-ac1014d2-13c4-1c7-26f60a2f-1c7

To:<sip:[email protected]>;tag=sbc05100m0qlxw6

Call-ID: [email protected]

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:+[email protected];user=phone>

Content-Length: 0

主叫方挂机,向代理服务器发送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:[email protected]

From: <sip:+[email protected];user=phone>;tag=874368-ac1014d2-13c4-1c7-26f60a2f-1c7

To:<sip:[email protected]>;tag=sbc05100m0qlxw6

CSeq: 1 BYE

Content-Length: 0

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

BYEsip:+[email protected]:5060 SIP/2.0

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

Call-ID: [email protected]

From:<sip:[email protected];user=phone>;tag=sbc0509wwxwpz1q

To:"+861069690069"<sip:+[email protected];user=phone>;tag=8741b8-ac1014d2-13c4-1c6-10e9bfd8-1c6

CSeq: 1 BYE

Max-Forwards: 69

Reason: Q.850;cause=16

Content-Length: 0

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

SIP/2.0 200 OK

From:<sip:[email protected];user=phone>;tag=sbc0509wwxwpz1q

To: "+861069690069"<sip:+[email protected];user=phone>;tag=8741b8-ac1014d2-13c4-1c6-10e9bfd8-1c6

Call-ID: [email protected]

CSeq: 1 BYE

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

Supported: 100rel,replaces,timer

P-Preferred-Identity:"+861069690069"<sip:+[email protected];user=phone>

Content-Length: 0

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

呼叫消息的流程图

根据上述的呼叫信息,对其进行详细的讲解。

1)  主叫方“+861069690069”发起语音呼叫,主叫方地址:172.16.20.210,向代理服务器(192.168.246.210:)发送INVITE请求,需要和被叫方“69690067”建立呼叫。

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

3)  代理服务器对收到的INVITE消息进行合法性检查,检查通过后,在注册服务器上查找被叫,是否存在这样的注册被叫号码,如果被叫不存在向主叫方发送404消息结束本次呼叫请求,否则,想被叫注册的地址发送呼叫请求INVITE消息。

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

5)  被叫方对INVITE消息的合法性检测通过后,开始振铃,并且向代理服务器发送180,表示被叫方开始振铃,主叫方听回铃音或彩铃。

6)  代理服务器收到180后,修改代理服务器的状态机状态,修改为振铃状态,并且发送振铃消息给主叫方,主叫方听回铃音。

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

8)  代理服务器收到200OK消息后修改状态机,并且发送200OK消息到主叫,告诉主叫,被叫已经接通。

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

10)代理服务器收到ACK后,向被叫方发送200OK对应的ACK消息,表示200OK消息已经收到,并且主叫和被叫可以进行通话。

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

12)通过以上11个步骤,通话终于建立成功。

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

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

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

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

SIP基本呼叫

时间: 2024-10-11 21:18:01

SIP基本呼叫的相关文章

sip协议呼叫流程详解

1.SIP业务基本知识 1.1 业务介绍会话初始协议(Session Initiation Protocol)是一种信令协议,用于初始.管理和终止网络中的语音和视频会话,具体地说就是用来生成.修改和终结一个或多个参与者之间的会话.SIP的业务模式是一个点对点协议,其中有两个要素——SIP用户代理和SIP网络服务器.用户代理是呼叫的终端系统元素,而SIP服务器是处理与多个呼叫相关联信令的网络设备.用户代理本身具有一客户机元素(用户代理客户机UAC)和一服务器元素(用户代理服务器UAS).客户机元素

Asterisk 源代码解析之SIP呼叫

下图是asterisk的呼叫流程图: 我们以sip的呼叫过程为例来描述,其他channel的呼叫过程基本类似. Astersik下注册的sip用户主动发起一个呼叫的函数调用过程(incoming)如下: do_monitor->sipsock_read->handle_request->handle_request_invite->sip_new/ast_pbx_start->pbx_thread->__ast_pbx_run -> ast_spawn_exten

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

SIP(会话发起协议)SIP是类似于HTTP的基于文本的协议.SIP可以减少应用特别是高级应用的开发时间.由于基于IP协议的SIP利用了IP网络,固定网运营商也会逐渐认识到SIP技术对于他们的深远意义. SIPSIP(Session Initiation Protocol)是一个应用层的信令控制协议.用于创建.修改和释放一个或多个参与者的会话.这些会话可以是Internet多媒体会议[1] .IP电话或多媒体分发.会话的参与者可以通过组播(multicast).网状单播(unicast)或两者的

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

1. SIP SIP 是一个应用层的控制协议,可以用来建立,修改,和终止多媒体会话,例如Internet电话 SIP在建立和维持终止多媒体会话协议上,支持五个方面: 1)   用户定位: 检查终端用户的位置,用于通讯. 2)   用户有效性:检查用户参与会话的意愿程度. 3)   用户能力:检查媒体和媒体的参数. 4)   建立会话: “ringing”,建立会话参数在呼叫方和被叫方. 5)       会话管理:包括发送和终止会话,修改会话参数,激活服务等等. 1.1 SIP基本组成要素 用户

Android 开发 voip/sip 程序

首先说明一下相关概念,voip 和Sip ,voip的意思是网络电话,会话发起协议(SIP)是建立VOIP连接的IETF标准.SIP是一种应用层协议,用于和一个或多个参与者创建.修改和终止会话.SIP的结构与HTTP(客户-服务器协议)相似.客户机发出请求,并发送给服务器,服务器处理这些请求后给客户机发送一个响应). 简单点就是voip是网络电话,而sip则是网络电话使用的协议.别的信息就请各位读者自己百度了.至于Android voip程序也就是写一个程序用于实现网络电话功能. 注意:在本篇博

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

下面我们通过一个简单的场景例子来简单介绍一下 SIP 会话流程. Tom 和 Jerry 是非常好的伙伴,Tom 在他的 PC 上使用一个 SIP 的应用程序呼叫 Internet 上另一个 SIP 电话用户 Jerry. 1. 注册过程 : SIP 注册过程是建立用户当前 IP 地址与用户URI之间的对应关系.首先,Tom 和 Jerry 的 SIP 应用程序或者硬件设备,需要在网络中注册.之后终端需要知道代理呼叫会话控制功能(P-CSCF)的地址.P-CSCF 是终端向网络中发送所有 SIP

asterisk-java ami4 一些基本功能的例子

比如:挂机,拨号,拨外线,保留通话,示闲,示忙等等.... 在api中可以获得这些方法说明 /**  * 给分机挂机  * @param Extension 要挂机的分机号  * @return  * @throws TimeoutException   * @throws IOException   * @throws IllegalStateException   * @throws IllegalArgumentException   */ public static ManagerRes

FreeSWITCH与PSTN对接

FreeSWITCH与PSTN电话系统对接设定 一.环境介绍 我们目前使用模拟的话机连接到电信运营商,购买他们配套的电话总机,勉强实现了公司的基本通话.但是客户电话总机系统以及升级添加新的应用不但费用高,而且难以维护. 随着规模的扩大,继续使用原有的电话系统变得很难.基于上述的诸多问题,我们觉定在新事业中心采用VoIP的电话系统,Server使用FreeSWITCH,话机使用SIP/IP Phone 或者模拟电话(使用语音网关转换),通过语音网关进行对接,实现在满足正常使用的前提下,与原有的电话

带鉴权信息的SIP呼叫

INVITE sip:[email protected]/2.0 Via: SIP/2.0/UDP192.168.50.32:2445;branch=z9hG4bK-d8754z-244fd550d2729557-1---d8754z-;rport Max-Forwards: 70 Contact:<sip:[email protected]:2445> To: <sip:[email protected]> From:"1002"<sip:[email