通信系列2: 深入浅出SIP协议

传统电话是电磁波的通信,当电话技术发展到IP技术时代,SIP协议成为了电话通信标准协议,不仅可以通电话、还可以收发信息、视频、开会、放PPT。事实上,今天的通信业已全面采用SIP协议作为通信标准,无论是固定电话、还是移动电话,其后台都是以SIP协议完成通话、交换的。 很多软件也采用SIP协议进行通信,如:Windows Messenger。

学习多天,记录如下:

一、从打电话的过程,理解SIP协议

(一) 分析一下打电话的过程

两个电话之间的一次通话称为一个会话(Session),

首先,通话双方必须有一个电话号码, 通话步骤如下:

1, 电话A拨打电话B的号码, 邀请B通话 (Invite)

2, 电话B振铃(Ring), 同时电话A可以听到电话B在振铃

3, 电话B提机表示确认应答, 双方通话开始

4, 双方通话

5, 通话过程中,如有任何一方挂电话,则通话结束。

上述会话过程 图示如下:

图中箭头表示传递信号的方向。 图中假设B先挂机

在传统电话网中,上述每个信号都是一个电磁波信号.

(二)SIP协议,英文为 Session Initiation Protocol, 中文翻译为会话发起协议。顾名思义,就是在网络上发起会话。

协议(Protocol)是计算机与计算机之间的语言。SIP协议的目的就是在IP网络中实现电话功能。

在IP网络中,通话两端的不是电话机,而是运行在计算机上的软件电话(软电话)。

同传统电话,用SIP协议打一个电话,过程是一样的。两个软电话之间,也有电话号码,也需传递信号。

这时的电话号码是SIP帐号。这时的信号不是一个电磁波信号,而是一个IP数据包(称为SIP消息)。

1, 首先,通话双方都要有一个SIP帐号(也称为URI, 是网络上的电话号码),

不同于全数字的传统电话号码, SIP帐号采用 URI 表示方法,例如:

sip:peter@company.com:5060

其中:

(1) sip: 表示采用sip协议

(2) peter是用户名, 也称为帐号. 用字母和数字均可。

(3)company.com 是帐号所属的服务器域名( 也可以用IP地址,例如: sip:peter@192.168.1.100)

(4) 最后的5060是端口号。 SIP协议默认端口为5060, 默认采用UDP传输

:5060的意思是,客户端在名为 company.com的服务器的5060端口号上等待对方连接

如果端口号是 5060,也可以省略不写。

则,上述SIP帐号写为: sip: peter@company.com

除了sip:这几个字母,SIP帐号就像一个邮件帐号

没错,SIP协议设计者的意图就是让SIP帐号与邮件帐号一致,方便与邮箱服务整合。

对用户来说方便,你要打电话给我,我的电话号就是邮箱号。

2, SIP 消息

上面讲过,一个通话过程,两端要传递多种信号。在SIP协议中,这些信号是一种约定格式的IP数据包,称为SIP消息。

SIP消息有好几种,让我们看一个通话过程理解一下

1, 软电话A 向 B 发送一个 SIP消息 INVITE, 邀请B通话

2, 软电话B振铃,向A 回复一个SIP消息 RING, 通知 A 正在振铃中,请A等待

3, 软电话B提机,向A发一个SIP消息 OK, 通知 A 可以通话了

4,软电话A 向 B回复一个回应消息 ACK,正式启动通话

5,接下来,双方通话

6,软电话B挂机,向 A发一个SIP消息 BYE, 通知 A 通话结束

7, 软电话A 向 B 回复一个消息 OK, 通话结束

可以看到,这个过程与人打电话的过程是一模一样的。只不过是采用IP数据包(SIP消息)的形式传递信号而已。

通话过程中有多种SIP消息,每一种消息都是一个IP数据包。

这就是SIP协议,它约定了会话的发起过程 、结束过程。

二、实操查看 SIP协议通话过程

为了深入SIP协议通话过程,我改编了一个Java软电话程序, 名为sip_test (可在这里下载),这个程序用来显示SIP消息的实际过程。 打开sip_test.exe运行程序,界面如下图:

我的电脑IP是192.168.31.131, 软件自动占用端口54320. 生成了一个SIP帐号:sip:some@192.168.31.131:54320

在本机上运行两次sip_test, 则形成两个软电话。这两个软电话可以相互通话了。

把两个软电话窗口左右排列,把左边软件电话的 SIP帐号(My URI那个文本框)复制到右边软电话的 Callee URI(Callee 就是被叫的意思),在右边窗口中点击按键Call开始通话(则右边的软电话是主叫,左边是被叫)。下图红字显示了操作步骤:

呼叫开始后,每个软电话均将显示一个小窗口,如下图,再点击左边软电话小窗口中的按键Pickup(提机)接听电话。下图红字显示了操作步骤

德有多高,艺有多深。

通信系列2: 深入浅出SIP协议

相关文章:

你感兴趣的文章:

标签云: