作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/
1.Overview:
2.SIP协议:
1)概述
SIP: Session Initiation Protocol,由IETF制定,最早由MMUSIC工作组提出,现在主要由SIP工作组负责维护和后期扩展,是一种轻量级的应用层通用信令协议,用于多媒体通信控制,可建立、修改和终止IP网上的语音和多媒体会话。
典型的SIP梯形网络结构:
SIP的Offer/Answer模型:
也称为会话协商模型,以在对等功能实体之间进行会话协商通过在SIP消息的消息体中包含SDP描述完成。、
- Offer:包括媒体类型、媒体格式、地址
- Answer:是否接收媒体类型、媒体格式、地址
在会话过程中,任何一方可以通过Offer/Answer模型修改会话属性。
2)发展和应用情况:
- 1999年,MMUSIC工作组推出SIP V1.0 (RFC2543)。
- 2003年,SIP工作组推出SIP V2.0 (RFC3261)目前已进行了许多扩展,并被3GPP/3GPP2、OMA、ETSI、ITU-T等标准化组织广泛采纳。
3)相关标准:
a)SIP核心标准:
b)SIP扩展标准:
IETF针对SIP的不同应用需求制定了上百篇SIP扩展RFC,
SIP相关RFC:
3261-32xx, 33xx, 34xx, 35xx, 36xx, 37xx, 38xx, 39xx, 40xx,
41xx, 42xx, 43xx, 44xx, 45xx, 46xx, 47xx, 48xx, 49xx, 50xx,
51xx, 52xx, 53xx, 54xx, before 3261
4)SIP基本功能:
- 用户定位:确定被叫用户通信所使用的终端系统的位置
- 用户能力协商:确定所用媒体类型和媒体参数
- 用户可用性判断:确定被叫用户是否空闲以及是否愿意加入会话
- 邀请用户加入会话(呼叫建立):邀请和提示被叫用户,在主被叫间传递控制参数是SIP的主要功能
- 呼叫处理:对呼叫进行终结和转移等
5)SIP的特点
- 基于文本的协议:简单灵活,便于扩展,易于用Java、Perl等面向对象的语言实现,易于调测排错
- 独立于底层传输协议:可工作在UDP、TCP、SCTP等协议之上,消息的格式及操作
- 过程与传送协议无关:推荐首选UDP,可以减少呼叫建立时延,便于应用采用多播机制
- 呼叫和媒体控制信息同时传送:在传送呼叫控制信令的同时,还可以在消息文本中通过SDP传送呼叫的媒体类型和格式等信息,以加快呼叫建立的速度便于增加新的应用或媒体
- 支持用户移动性
- 支持直接路由和代理路由
6)网络中元素:
SIP基本网络模型:客户-服务器协议,在语法和语义上与HTTP类似,SIP客户发出请求,SIP服务器接收请求并进行响应
a)SIP用户代理UA:
端系统中的SIP应用称作SIP用户代理(UA),UA = UAC(事务发起方) + UAS(事务最终接收方),UA最基本的功能是支持SIP请求和应答的正确发送和接收。UAC和UAS是基于transaction而言的。其余实体都是基于功能特征而言的。
- 用户代理客户(UAC) - 发送SIP请求
- 用户代理服务器(UAS)-侦听呼叫请求,提示用户或执行程序作出响应
B2BUA:在一次呼叫中既充当UAC又充当UAS角色,UAC根据UAS接收到的请求消息构造新的请求消息进行发送。
b)SIP代理服务器Proxy Server:
负责代表UA去转发请求, 到下一跳SIP代理服务器或重定向服务器或最终的UAS,也可能将请求分发到多个下一跳服务器。和B2BUA不同,Proxy只能允许对SIP头域中做非常小的改动,RFC3261中有描述(第16章)。
主要功能:寻址、路由、转发,可以解释、翻译、改写SIP请求。
分类:
- 有状态代理服务器:作为虚拟的UAC/UAS,维持事务/对话状态机,需要记忆入请求和出请求
- 无状态代理服务器:接收请求,进行必要的翻译,发出请求,不需要记忆任何请求信息(除了这个以外其余实体都可以做UAC或者UAS)
- 分叉代理服务器:必须有状态记忆能力,以便将请求和应答进行匹配
- 非分叉代理服务器:可以无状态记忆能力
c)SIP重定向服务器Redirect Server:
通过响应告诉请求的发起方下一跳服务器的地址,然后由请求发起方根据此地址向下一跳服务器重新发送请求 。一个重定向服务器是一个SIP代理服务器或者SIP-registrar来对一个INVITE消息回复3XX响应的实体。这个回复带有Contact头域,提供应该去联络的设备的地址。
与Proxy Server的区别
- 重定向服务器的目的是提供可供选择的地址列表供用户定位SIP UA,代理服务器则是代替用户继续后面的定位尝试
- 重定向服务器只提供地址解析服务,类似于DNS
- 重定向服务器不主动发送SIP请求
- 重定向服务器不需要维持事务状态 (你问一个问题,它回答一个,之后什么都不记得了)
完整一个重定向服务器的流程如下图:
注意图中的注释:任何一个SIP代理服务器都可以对这个302响应进行处理,将INVITE请求转发到新的目的地去。
d)SIP注册服务器Register Server
通过注册过程接收客户当前的位置信息,并对位置服务器进行添加、修改、查询等操作。通常与代理服务器或重定向服务器放在一起。
功能:
- 接收用户的注册请求
- 记录用户的SIP地址和IP地址的绑定关系
- 提供注册认证功能,是实现用户移动性的基础
e)位置服务器
存储并向用户返回可能的位置信息,在SIP网络架构中起到重要作用的Internet公共服务器。位置服务器的信息可能来自SIP注册服务器,也可能通过其他渠道获取。位置服务器与SIP服务器之间通过使用LDAP协议 进行通信,位置服务器可能返回多个位置信息,重定向服务器和代理服务器可以采用不同的方式来处理这多个位置信息。
我们看一个呼叫的过程体会一下各个功能实体的作用:
更加实用的网络形式如下:
注意,除了SBC(Session Border Controller)以外,没有任何SIP服务器或者MGC自身会去处理数据流。与PSTN的互通需要软交换(MGC + MGW)的参与。PDN或者Internet与这个网络的互通要经过防火墙或者SBC。
7)SIP协议的结构及其位置
各层功能相对独立。层与层之间松散耦合,SIP独立于网络传输协议。
事务用户层
- 负责处理请求或响应、产生请求或响应
- 负责客户事务(CT)和服务器事务(ST)的创建和销毁
作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/
作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/
除非另有声明,本网站采用知识共享“署名 2.5 *”许可协议授权。