sip gw功能包括_道哥漫谈:大话有趣的SIP通信

2c1ee7de0f624ae3400cc7c8383204cd.png

图-1 电话通信

1、SIP是何物?

SIP(会话发起协议)属于IP应用层协议,用于在IP网上为用户提供会话应用。会话(Session)指两方或多方用户之间的语音、视频、及其他媒体形式的通信,具体可能是IP电话、会议、即时消息等等。

3c812bd5f420d3d761a81062537ebe5c.png

图-2 SIP会话连接

SIP是一个信令协议,它对应于传统电话网络中的呼叫信令协议(比如SS7 ISUP)。构建一个完整多媒体通信架构还需要结合其他一些协议,必要的有:RTP,用于媒体传输;RSVP,用于QOS保证等等。

f15558cf147afe9a1c0d89629201938a.png

图-3多媒体通信的多种协议

2、SIP基本功能

2.1 会话的发起与管理

70d5b8514d223c85eaff99b94350b25a.png

图-4 创建会话

SIP主要用于创建、修改和终止一个会话。一个创建会话的简单的例子如上图-3所示,其建立逻辑结构流程如下:

  • 发起方向目的方发送一个SIP请求消息(INVITE),其中包含提议的会话参数的描述,请求在二者之间建立一个会话;
  • 目的方返回一个SIP响应消息(200 OK),其中包含接受的会话参数的描述,接受会话建立请求
  • 发起方发送一个SIP请求消息(ACK)确认会话的建立。

一个会话建立后,如果对于会话进行修改,又该如何操作?下面一个修改会话的简单例子如图-4所示。

a5d05f28d056d97fe4a3573156897939.png

图-5 修改会话

对于会话的修改,其结构流程,如下所示:

  • 会话中的任意一方可以发送一个SIP请求消息(reINVITE),其中包含提议的新的会话参数,请求修改二者之间的会话;
  • 另一方返回一个SIP响应消息(200 OK),其中包含接受的新的会话参数,接受会话修改请求

既然会话可以创建和修改,那么又该如何实现一个会话的结束?其实现方式如下图-5所示。

221078176596e92161d751a4034ceb8f.png

图-6 结束会话

一个结束会话的逻辑结构流程如下所示:

  • 会话中的任意一方可以发送一个SIP请求消息(BYE),请求结束会话;
  • 另一方返回一个SIP响应消息(200 OK),接受会话结束请求

2.2 用户位置管理&轨迹

在城市中分布着很多移动信号基站,移动的SIP终端实时与最近的基站发生着数据交互,如图-6所示。

266e7ccf5b5f0826e3928033bad5c7c4.png

图-7 移动的用户

SIP要求终端定期向网络发送注册请求(REGGISTER),报告自己的当前位置。这样SIP服务器中始终存储了用户(终端)的当前地址。当用户被呼叫时,SIP服务器能够将SIP请求发送到用户的当前地址。

每一个基站都在记录出现在其信号范围内的手机用户信息,将一定范围内的基站所接收的信息集合起来,就能识别出一个手机用户在这个范围中的活动轨迹,如图-7所示.

b3348524d439289771fa1e9d78f27c03.png

图-8 SIP手机信令数据通过基站记录用户实时位置

每个人都有手机,所以数据有接近全样本的高覆盖率;每个人都随身携带手机,所以数据有直接反映空间位置的高精度;每天都在收集手机数据,所以数据有立等可取的高时效性。

3、实体 & 网络

SIP UA(User Agent,用户代理)是最基本的SIP实体,它通常就是用户终端。理想情况下,通过SIP UA就可以完成用户之间会话的建立。但是为了支持SIP的移动性,以及其他高级功能,比如运营商对呼叫的控制等等,会话发起及管理的信令过程不能直接在两个SIP UA之间完成,而是需要经过由若干SIP服务器构成的SIP信令网络。

e303e246d67206d2b769de43af0b6060.png

图-9 网络路由的SIPs实体

这些SIP服务器可以分为两类:注册服务器和路由服务器。

  • SIP注册服务器(registrar)的主要功能是接受SIP UA的注册请求,维护用户名-地址映射。
  • 路由服务器的主要功能是将SIP消息路由到目标SIP UA。路由服务器有SIP重定向服务器(redirect server)SIP代理服务器(proxy)两种。前者以重定向方式路由SIP请求消息,后者以代理方式路由SIP请求消息。

在重定向方式下(如图-10所示),SIP重定向服务器收到了SIP请求消息,查询到目标SIP UA的当前地址后,通过SIP响应消息(302 Moved temporarily)返回给发起方SIP UA。之后的SIP消息交互与重定向服务器无关,发起方SIP UA直接向目标SIP UA的当前地址发送请求消息。

5fea8e038378541f5731957a9d675ed9.png

图-10 路由定向服务寻址

在代理方式下(如下图-11所示),SIP代理服务器收到了SIP请求消息,查询到目标SIP UA的当前地址后,将SIP请求消息转发到目标SIP UA的当前地址。之后的SIP消息交互都要经过SIP代理服务器。这使得SIP代理服务器可以对会话进行控制,比如结束会话等等。

b3ad7a74307fd6a796eaab3311010e7c.png

图-11 路由代理寻址

4 SIP的原子性

cb5d8ddff5f44791f8743bca696bc2ca.png

图-12 SIP的原子性

SIP所提供的功能是通过一些原子性的基本功能(比如注册(registration),发起会话(Initiation)、会话结束等)组合而成的。每个原子性基本功能是通过一个SIP操作完成的SIP操作基于类似HTTP的请求/响应事务模型,每个操作的调用过程体现为一个所谓事务 – 包含一个SIP请求和一个或多个相应的SIP响应。其中SIP请求消息中的方法(Method)指示出调用的操作。

下表是在RFC 3261中定义的方法及其对应的SIP操作。

方法Method SIP操作

INVITE 会话邀请

ACK 确认会话邀请

CANCEL 取消会话邀请

BYE 结束会话

REGISTER 注册

OPTIONS 查询服务器能力

4.1 SIP协议组成

3a0967d9b7ecbf12ac2983ca61a538fa.png

图-13 SIP协议

SIP是一个基于文本(text-based)的协议,使用 UTF-8 字符集。SIP消息与HTTP/1.1非常类似,同样可以包含消息体(message body),通常是会话描述(session descriptions),也可能是其他内容。

SIP 消息有两类:从客户机到服务器的请求消息(request),从服务器到客户机的响应消息(response)。

除了第一行分别是请求行(Request-Line)和状态行(Status-Line)以外,SIP请求消息和SIP响应消息的剩下部分的组成基本类似,包括消息头域(message header)和消息体(message body)两部分(如上图-13所示)。

4.2 SIP消息请求

根据请求行中的方法(method)的不同,SIP请求消息有很多种,分别完成各种操作的调用,实现各种功能,下面进行简单的介绍。

  • INVITE/reINVITE:INVITE 发起会话邀请。reINVITE(在一个已存在的对话中发送的INVITE称为reINVITE)修改已建立会话的参数。
  • ACK:完成会话建立的3次握手 [INVITE-200-ACK],仅仅用于INVITE
  • BYE :结束会话。
  • CANCEL:取消正在建立中会话(INVITE已发送,但尚未收到最终响应(final response))。
  • UPDATE:更新会话参数。它被建议用于替代 re-INVITE,与 re-INVITE不同在于:它可以在初始INVITE未完成时发送,能用于在早对话(early dialog)中更新会话参数。

上面的4个请求用于会话建立与管理。

  • REGISTER:登记UA当前的联系地址(contact)
  • OPTIONS:查询服务器或对端UA的能力,具体包括支持的方法(method),扩展(extensions)、编解码(codecs)等。
  • PRACK:临时响应(Provisional Response)确认。用于确认收到了临时响应,例如 “183 Session Progress”,以支持临时响应的可靠传送。它不能应用于“100 Trying ”,只有101~199 临时响应需要可靠传送。如果没有收到 PRACK,响应消息将被重传。
  • NOTIFY:事件通知,具体的事件包括、业务状态的改变(MWI,...),用户状态的改变等等。
  • SUBSCRIBE:订阅/取消(Expires=0)事件通知。
  • PUBLISH:发布事件状态。PUBLISH 与 REGISTER 的相似之处在于:允许用户在另一个实体(状态管理实体/registrar)中创建、修改和移除自己的状态。对PUBLISH 请求的寻址与对于SUBSCRIBE 请求的寻址是一样的,PUBLISH 请求的Request-URI 中填入的是用户希望发布其事件状态的资源地址。

上面的3个请求构成SIP事件发布-订阅-通知机制

  • INFO:用于传送 mid-call 信令信息,同一时刻只能有一个 INFO 事务存在。通常用于携带 PSTN 信令消息(作为 MIME 附件),例如,ISDN UUI (用户到用户信息)。
  • MESSAGE:针对即时消息 (IM)的扩展,用于传送即时消息。MESSAGE请求通过MIME附件中携带内容。MESSAGE 请求自身不发起 SIP 对话,在正常的用法中,每个即时消息都是单独存在的,非常类似 pager 消息。MESSAGE 请求可以在其他SIP请求发起的对话上下文中发送。
  • REFER:指示接收者 (Request-URI所标识的) 应该使用请求中提供的信息联系第三方。典型应用:Call Transfer features 。Allowed outside an established dialogue。
70b25dc7fd5e7d2774092f9e50406021.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值