苏格兰风笛

一个人是穷人还是富人,主要取决于"出身、运气和努力",这些因素中最不重要的因素就是努力!

转载 SIP协议全方位概要介绍收藏

SIP协议全方位概要介绍

摘要:SIP协议是NGN中的重要协议,越来越得到业界的重视。本文通过SIP协议的背景、功能、网络元素、实现机制、以及SIP消息的组成等几个方面对SIP协议做了全方位的概要性介绍,以使读者对SIP有初步的概念和认识。

一、SIP协议的背景和功能

SIP( 会话初始协议)的开发目的是用来帮助提供跨越因特网的高级电话业务。因特网电话(IP电话)正在向一种正式的商业电话模式演进,SIP就是用来确保这种演进实现而需要的NGN(下一代网络)系列协议中重要的一员。

SIP是IETF标准进程的一部分,它是在诸如SMTP(简单邮件传送协议)和HTTP(超文本传送协议)基础之上建立起来的。它用来建立,改变和终止基于IP网络的用户间的呼叫。为了提供电话业务它还需要结合不同的标准和协议:特别是需要确保传输(RTP),与当前电话网络的信令互连,能够确保语音质量(RSVP),能够提供目录(LDAP),能够鉴权用户(RADIUS)等等。

SIP被描述为用来生成,修改和终结一个或多个参与者之间的会话。这些会话包括因特网多媒体会议,因特网(或任何IP网络)电话呼叫和多媒体发布。会话中的成员能够通过多播或单播联系的网络来通信。SIP支持会话描述,它允许参与者在一组兼容媒体类型上达成一致。它同时通过代理和重定向请求到用户当前位置来支持用户移动性。SIP不与任何特定的会议控制协议捆绑。

本质上,SIP提供以下功能:

名字翻译和用户定位:无论被呼叫方在哪里都确保呼叫达到被叫方。执行任何描述信息到定位信息的映射。确保呼叫(会话)的本质细节被支持。

特征协商:它允许与呼叫有关的组(这可以是多方呼叫)在支持的特征上达成一致(注意:不是所有方都能够支持相同级别的特征)。例如视频可以或不可以被支持。总之,存在很多需要协商的范围。

呼叫参与者管理:呼叫中参与者能够引入其它用户加入呼叫或取消到其它用户的连接。此外,用户可以被转移或置为呼叫保持。

呼叫特征改变:用户应该能够改变呼叫过程中的呼叫特征。例如,一呼叫可以被设置为“voice-only”,但是在呼叫过程中,用户可以需要开启视频功能。也就是说一个加入呼叫的第三方为了加入该呼叫可以开启不同的特征。

二、SIP网络元素

SIP中有两个要素。SIP用户代理和SIP网络服务器。用户代理是呼叫的终端系统元素,而SIP服务器是处理与多个呼叫相关联信令的网络设备。

用户代理本身具有一客户机元素(用户代理客户机UAC)和一服务器元素(用户代理服务器UAS)。客户机元素初始呼叫而服务器元素应答呼叫。这允许点到点的呼叫通过客户机-服务器协议来完成。

SIP服务器元素提供多种类型的服务器。有三种服务器形式存在于网络中--SIP有状态代理服务器,SIP无状态代理服务器和SIP重定向服务器。由于呼叫者未必知道被呼叫方的IP地址或主机名,SIP服务器的主要功能是提供名字解析和用户定位。可以获得的是email形式的地址或与被呼叫方关联的电话号码。使用该信息,呼叫者的用户代理能够确定特定服务器来解析地址信息--这可能涉及网络中很多服务器。

SIP代理服务器接收请求,决定将这些请求传送到何处,并且将它们传送到下一服务器(使用下一跳路由原理)。在网络中可以有多跳。

有状态和无状态代理服务器的区别是有状态代理服务器记住它接收的入请求,以及回送的响应和它转送的出请求。无状态代理服务器一旦转送请求后就忘记所有的信息。这允许有状态代理服务器生成请求以并行地尝试多个可能的用户位置并且送回最好的响应。无状态代理服务器可能是最快的,并且是SIP结构的骨干。有状态代理服务器可能是离用户代理最近的本地设备,它控制用户域并且是应用服务的主要平台。

重定向服务器接收请求,但不是将这些请求传递给下一服务器而是向呼叫者发送响应以指示被呼叫用户的地址。这使得呼叫者可以直接联系在下一服务器上被呼叫方的地址。

三、SIP协议的实现机制

SIP是一个分层结构的协议,这意味着它的行为根据一组平等独立的处理阶段来描述,每一阶段之间只是松耦合。协议分层描述是为了表达,从而允许功能的描述可在一个部分跨越几个元素。它不指定任何方式的实现。当我们说某元素包含某层,我们是指它顺从该层定义的规则集。

不是协议规定的每个元素都包含各层。而且,由SIP规定的元素是逻辑元素,不是物理元素。一个物理实现可以选择作为不同的逻辑元素,甚至可能在一个个事务的基础上。

SIP的最底层是语法和编码。它的编码使用增强Backus-Nayr形式语法(BNF)来规定。

第二层是传输层。它定义了网络上一个客户机如何发送请求和接收响应以及一个服务器如何接收请求和发送响应。所有的SIP元素包含传输层。

第三层是事务层。事务是SIP的基本元素。一个事务是由客户机事务发送给服务器事务的请求(使用传输层),以及对应该请求的从服务器事务发送回客户机的所有响应组成。事务层处理应用层重传,匹配响应到请求,以及应用层超时。任何用户代理客户机(UAC)完成的任务使用一组事务产生。用户代理包含一个事务层,有状态的代理也有。无状态的代理不包含事务层。事务层具有客户机组成部分(称为客户机事务)和服务器组成部分(称为服务器事务),每个代表有限的状态机,它被构造来处理特定的请求。

事务层之上的层称为事务用户(TU)。每个SIP实体,除了无状态代理,都是事务用户。当一个TU希望发送请求,它生成一个客户机事务实例并且向它传递请求和IP地址,端口,和用来发送请求的传输机制。一个TU生成客户机事务也能够删除它。当客户机取消一个事务时,它请求服务器停止进一步的处理,将状态恢复到事务初始化之前,并且生成特定的错误响应到该事务。这由CANCEL请求完成,它构成自己的事务,但涉及要取消的事务。

SIP通过EMAIL形式的地址来标明用户地址。每一用户通过一等级化的URL来标识,它通过诸如用户电话号码或主机名等元素来构造(例如:SIP:usercompany.com)。因为它与EMAIL地址的相似性,SIP URLs容易于用户的EMAIL地址关联。

SIP提供它自己的可靠性机制从而独立于分组层,并且只需不可靠的数据包服务即可。SIP可典型地用于UDP或TCP之上。

SIP提供必要的协议机制以保证终端系统和代理服务器提供以下业务:

● 用户定位

● 用户能力

● 用户可用性

● 呼叫建立

● 呼叫处理

● 呼叫前转,包括:(1)等效800类型的呼叫,(2)无应答呼叫前转,(3)遇忙呼叫前转,(4)无条件呼叫前转

● 呼叫号码传递,该号码可以是任何命名机制。

● 个人移动性,例如通过一个单一的、位置无关的地址来到达被呼叫方,即使被呼叫方改变了终端。

● 终端类型的协商和选择:呼叫者可以给出选择如何到达对方,例如通过因特网电话,移动电话或应答业务等。

● 终端能力协商

● 呼叫者和被呼叫者鉴权

● 不知情和指导式的呼叫转移

● 多播会议的邀请

当一用户希望呼叫另一用户,呼叫者用INVITE请求初始呼叫,请求包含足够的信息用以被呼叫方参与会话。如果客户机知道另一方的位置它能够直接将请求发送到另一方的IP地址。如果不知道,客户机将请求发送到本地配置的SIP网络服务器。如果服务器是代理服务器它将解析被呼叫用户的位置并且将请求发送给它们。有很多方法完成上步,例如搜索DNS或访问数据库。服务器也可以是重定向服务器,它可以返回被呼叫用户的位置到呼叫客户机用以它直接与用户联系。在定位用户的过程中,SIP网络服务器当然能够代理或重定向呼叫到其它的服务器,直到到达一个明确地知道被呼叫用户IP地址的服务器。

一旦发现用户地址,请求就发送给该用户,此时将产生几种选择。在最简单的情况,用户电话客户机接收请求——也就是,用户的电话振铃。如果用户接受呼叫,客户机用客户机软件的指定能力响应请求并且建立连接。如果用户拒绝呼叫,会话将被重定向到语音邮箱服务器或另一用户。“指定能力”参照用户想启用的功能。例如,客户机软件可以支持视频会议,但用户只想使用音频会议,那则只会启用音频功能。

SIP还具有另外两个有重要意义的特征。第一个是有状态SIP代理服务器具有分割入呼叫或复制入呼叫的能力,从而可以同时运行几个扩展分支。第一个应答的分支接受呼叫。该特征在用户工作在两位置之间(例如实验室和办公室)或者同时对经理和其秘书振铃时是非常便利的。

第二个特征是SIP独特的返回不同媒体类型的能力。举个用户联系公司的例子。当SIP服务器接收到客户机的连接请求,它能够通过WEB交互式语音响应页面来返回到顾客的客户机,该页面具有可获得的部门分支或提供在列表上的用户。点击适当的链接后将发送一请求到所点击选择的用户从而建立起呼叫。

四、SIP消息的组成

有两种类型的SIP消息:

● 请求:从客户机发到服务器

● 响应:从服务器发到客户机

SIP请求消息包含三个元素:请求行、头、消息体。

SIP响应消息包含三个元素:状态行、头、消息体。

请求行和头域根据业务、地址和协议特征定义了呼叫的本质,消息体独立于SIP协议并且可包含任何内容。

SIP定义了下述方法:

INVITE——邀请用户加入呼叫。

BYE——终止一呼叫上的两个用户之间的呼叫。

OPTIONS——请求关于服务器能力的信息。

ACK——确认客户机已经接收到对INVITE的最终响应。

REGISTER——提供地址解析的映射,让服务器知道其它用户的位置。

INFO——用于会话中信令。

五、结束语

SIP协议凭借其简单、易于扩展、便于实现等诸多优点越来越得到业界的青睐,它正逐步成为NGN(下一代网络)和3G多媒体子系统域中的重要协议,并且市场上出现越来越多的支持SIP的客户端软件和智能多媒体终端,以及用SIP协议实现的服务器和软交换设备。虽然SIP协议目前还不成熟,但可以预见SIP必定是将来网络多媒体通信中的明星。

 

发表于 @ 2006年11月02日 20:46:00|评论(loading...)

新一篇: RADIUS协议 | 旧一篇: SIP协议

用户操作
[即时聊天] [发私信] [加为好友]
xia
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
xia的公告
xymyeah@163.com
技术之家圈子http://blog.csdn.net/group/xymyeah欢迎加盟
文章分类
收藏
AJAX
ajax特效
icefaces
Java开源 AJAX开发组件
jQuery中文社区
jsf ajax
prototype.js 1.4版开发者手册
blog收藏
baggio785的专栏
blueroc收藏
firebody
gembin
Java对Xml进行解析
jdom详解
JFreeChart
langhua opencms
opencms
opencms
大型系统架构经验分享
干煸四季豆
滴水的能量
电信网管
CORBA
Brief Tutorial on CORBA
CORBA Technology and the Java Platform
EJB3.0
EJB3.0开发指南
EJB3Trail
Enterprise JavaBeans 3.0, 5th Edition
IBM
MyEclipse EJB Project 快速开始
hibernate
hibernate中文网站
hibernate官方网站
xdoclet Hibernate Tags
j2ee
cms4j
cms4j blog
ComponentReference
freemarker
ireport
J2EE v1.4 Documentation
javaeye tapestry
javatang(ajax等)
Jmesa(分页工具)
JMX相关
open source cms mmbase
quartz
struts2 document
Struts-menu
struts标记库
subersion eclipse
Tapestry中文文档
Tapestry中文文档
老高
J2ME
java application
Java swing tutorial
JViews Telecom Graphic Objects
JavaScript
google个性主页的拖拽效果的js
JavaScript高级教程
Java基础
java jar包下载
java在线API
java线程并发包util.concurrent的研究
JXTA
NetBeans IDE官方教程
Thinking in Patterns with Java(中文版)
visualvm -- monitoring and performance analysis for the Java SE platform
中文版jdk API
文件对比工具
JBOSS
JBoss Web Services
JOSS工具箱
JSF、Groovy、Drools
Drools
JSF in javaeye
JSF中文论坛
Liferay
Liferay Portal 系列文章
Liferay个人收集
Liferay英文站点
liferay论坛
php
drupal(php cms)
joomla(php cms)
open php cms
php
php download
PHP-CMS的发展方向
phpeclipse
Zend Framework手册 中文版
RIA
Flex 2: Developing Rich Client Applications
Flex GettingStart
Flex中文相关论坛
Seam
3-ways-to-easy-ajax-in-seam-jsf-facelets-prelude
JavaEye Jboss Seam
Jboss Seam
JBoss Seam中文站
jboss seam开发
Seam - 无缝集成 JSF
Seam 2.0 Reference中文翻译
SEAM 安装和版本说明
seam-next-gen-web-framework/
Spring
Acegi 扩展开发
acegi官方网站
Acegi文档翻译与笔记
AppFuse
Security Acegi
springside 中文
Spring中文网站
Spring官方网站
Spring开发参考手册
Spring聚集
UML
jude
RUP 学堂
WebServices
AppFuseXFire
Java Technology and Web Services
Java Technology and Web Services - Documentation
Learn technology
SOA
SOA and Web services IBM
SOA专家群
SOA专题
Web Services Code Samples
操作系统
OpenSolaris/Solaris中文FAQ
电信
ctiforum
Essential SNMP, 2nd Edition
openvoip
中国网管联盟
通信专业门户
通信技术
工具箱
ER/Studio的数据结构管理和数据库设计
erwin绝好的数据库建模工具
jsch远程安全拷贝协议SCP的java实现和ant的结合
Memcached: Libraries, UDFs, Storage Engines
protocolbuffers协议缓冲
Selenium是一个用于Web应用程序测试的工具
SilkTest(类似于QTP的自动化测试工具)
WinSCP
工作流
Jboss JBPM
JBoss jBPM 3.1
JBPM
JBPM Group
jBPM开发入门指南
osworkflow
架构
《程序员》官方blog
Memcache
software analysis and design
开源社区
cas
Cindy
Groovy and Grails 专题
Memory Analyzer (MAT)
uses static analysis to look for bugs in Java code
开源中国
精通 Groovy
手机
how-to-develop-iphone-applications-in-java
iphoneside
数据库
Oracle® Database PL/SQL User's Guide and Reference
PL/SQL User's Guide and Reference
xsb Oracle Blog
甲骨文学(oracle)
网络
Getting Started with JCR
JCR示例项目
JSR 170
NetBios, NetBEUI, NBF, SMB, CIFS Networking
perforce
Slide
TCP拥塞控制算法
xlightweb
网站
Berkeley DB Java Collections API
Squid中文权威指南
大型网站架构开源
项目管理
CMMI ON LINE
CMMI V1.2 中文版
FDD
IT项目管理 企业级项目管理
IT项目管理专题
JAVAEYE软件开发和项目管理版
Sunspl技术管理
thoughtworks
如何快速学习CMMI?
开发文档网
需求工程
项目管理
项目管理资源网
协议
sliding_window
sliding_window demo2
TCP/TP协议详解
杂记
opengroup
月光博客
存档
Csdn Blog version 3.1a
Copyright © xia