sip入门(3)

2019-03-16 19:35

ACK sip:marconi@tower.radio.org SIP/2.0

Via: SIP/2.0/UDP lab.high-voltage.org:5060;branch=z9hG4bK321g Max-Forwards: 70

To: G. Marconi ;tag=a53e42

From: Nikola Tesla ;tag=76341 Call-ID: 123456789@lab.high-voltage.org CSeq: 1 ACK Content-Length: 0 BYE

通话完毕后,由被叫方 Marconi 首先挂机,发送 BYE 请求命令。注意这回由 Marconi 做为主叫方了,因此 Via 字段和 From、To 与 INVITE 字段有所不同。其实也就是倒置。 BYE sip:n.tesla@lab.high-voltage.org SIP/2.0

Via: SIP/2.0/UDP tower.radio.org:5060;branch=z9hG4bK392kf Max-Forwards: 70

To: Nikola Tesla ;tag=76341 From: G. Marconi ;tag=a53e42 Call-ID: 123456789@lab.high-voltage.org CSeq: 1 BYE Content-Length: 0 200 OK

BYE 之后,要求被叫方发 200 Ok 确认,也就是让主叫知道被叫已经知道你挂断了。(注意这里所说的主被叫角色已经倒过来了)打个比方,通话之后,有一方要求挂机,另一方需要知道它已经挂机了。

SIP/2.0 200 OK

Via: SIP/2.0/UDP tower.radio.org:5060;branch=z9hG4bK392kf ;received=200.201.202.203

To: Nikola Tesla ;tag=76341 From: G. Marconi ;tag=a53e42 Call-ID: 123456789@lab.high-voltage.org CSeq: 1 BYE Content-Length: 0

到此,我们已经将最简单的呼叫过程讲完了。该过程简单在于两个终端之间没有其它设备,完全的点对点连接,它们之间只需要知道对方 IP 地址即可。现实生活中这种呼叫形式是很少见的。后面我们将继续介绍另一种利用代理方式进行呼叫连接。 留个疑问:为什么说这种点对点的方式比较少用?

SIP 学习入门范例 (2)

二、通过代理服务器的 SIP 呼叫

在前面一个例子中,我们事先假设两个终端知道对方 IP 地址。而在现实情况下,这种非常少见。因为 IP 地址不像是电话号码,基本上每个人都是固定的,大多数情况,我们只知道被叫方名字,而并不知道对方在哪,也不知道对方终端的 IP 地址。因此今天,我们继续介绍另一种呼叫方式,即通过代理服务器进行呼叫。通过代理服务器进行呼叫,和我们使用 HTTP 代理上网大同小异。我们这个例子,只有一个代理服务器。

PS. 因为这里有很多内容和第一节相似,我们大量列举内容,只在个别地方说明 M1:首先是主叫方Schroedinger发送Invite请求给代理服务器。 INVITE sip:werner.heisenberg@munich.de SIP/2.0

<=对于基于代理服务器的呼叫连接,代理服务器要处理 2 部分内容。\前的是用户,后面是终端设备地址,需要DNS解析成标准IP地址。

Via: SIP/2.0/UDP 100.101.102.103:5060;branch=z9hG4bKmp17a Max-Forwards: 70

To: Heisenberg From: E. Schroedinger ;tag=42 Call-ID: 10@100.101.102.103 CSeq: 1 INVITE

Subject: Where are you exactly?

Contact: Content-Type: application/sdp Content-Length: 159 v=0

o=schroed5244 2890844526 2890844526 IN IP4 100.101.102.103 s=Phone Call t=0 0

c=IN IP4 100.101.102.103 m=audio 49170 RTP/AVP 0 a=rtpmap:0 PCMU/8000

代理服务器在它的定位数据库中查找 SIP 地址(sip:werner.heisenberg@munich.de)。这里有两个步骤:

1、首先UA查询DNS,确定代理服务器位置;然后由代理服务器查询定位被叫地址 2、代理服务器将 Invite 消息转发到被叫地址,在 Invite 消息中增加第二Via字段 M2:代理服务器转发 INVITE 消息

INVITE sip:werner.heisenberg@200.201.202.203 SIP/2.0

Via: SIP/2.0/UDP proxy.munich.de:5060;branch=z9hG4bK83842.1 <=这里增加了个新 Via,由代理服务器产生

Via: SIP/2.0/UDP 100.101.102.103:5060;branch=z9hG4bKmp17a Max-Forwards: 69 <=经过一个跳跃,这里减 1 To: Heisenberg From: E. Schroedinger ;tag=42 Call-ID: 10@100.101.102.103 CSeq: 1 INVITE

Contact: Content-Type: application/sdp Content-Length: 159 v=0

o=schroed5244 2890844526 2890844526 IN IP4 100.101.102.103 s=Phone Call

c=IN IP4 100.101.102.103 t=0 0

m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 M3:被叫放回铃 180 Ringing SIP/2.0 180 Ringing

Via: SIP/2.0/UDP proxy.munich.de:5060;branch=z9hG4bK83842.1 ;received=100.101.102.105

Via: SIP/2.0/UDP 100.101.102.103:5060;branch=z9hG4bKmp17a To: Heisenberg ;tag=314159 From: E. Schroedinger ;tag=42 Call-ID: 10@100.101.102.103 CSeq: 1 INVITE

Contact: Content-Length: 0 M4:代理转发 180 Ringing SIP/2.0 180 Ringing

Via: SIP/2.0/UDP 100.101.102.103:5060;branch=z9hG4bKmp17a To: Heisenberg ;tag=314159 From: E. Schroedinger ;tag=42 Call-ID: 10@100.101.102.103 CSeq: 1 INVITE

Contact: Content-Length: 0

M5:被叫接通电话,发 200 OK SIP/2.0 200 OK

Via: SIP/2.0/UDP proxy.munich.de:5060;branch=z9hG4bK83842.1 ;received=100.101.102.105

Via: SIP/2.0/UDP 100.101.102.103:5060;branch=z9hG4bKmp17a To: Heisenberg ;tag=314159 From: E. Schroedinger ;tag=42 Call-ID: 10@100.101.102.103 CSeq: 1 INVITE

Contact: Content-Type: application/sdp Content-Length: 159 v=0

o=heisenberg 2890844526 2890844526 IN IP4 200.201.202.203 s=Phone Call

c=IN IP4 200.201.202.203 t=0 0

m=audio 49172 RTP/AVP 0 a=rtpmap:0 PCMU/8000 M6:代理转发 200 OK SIP/2.0 200 OK

Via: SIP/2.0/UDP 100.101.102.103:5060;branch=z9hG4bKmp17a To: Heisenberg ;tag=314159 From: E. Schroedinger ;tag=42 Call-ID: 10@100.101.102.103 CSeq: 1 INVITE

Contact: Content-Type: application/sdp Content-Length: 159 v=0

o=heisenberg 2890844526 2890844526 IN IP4 200.201.202.203 c=IN IP4 200.201.202.203 t=0 0

m=audio 49170 RTP/AVP 0 a=rtpmap:0 PCMU/8000

M7:主叫收到 200 OK,直接发 ACK 到被叫

ACK sip:werner.heisenberg@200.201.202.203 SIP/2.0

Via: SIP/2.0/UDP 100.101.102.103:5060;branch=z9hG4bKka42


sip入门(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:DAC曲线

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: