sip协议是什么?可能刚刚接触这个协议的朋友会掌握不好它的定义。那么首先我们要了解一下,目前企业中大多数VoIP应用都使用H.323协议,但是,随着越来越多的企业研究SIP协议,不久的将来基于SIP协议的VoIP必将迅速发展.那么在了解sip协议是什么之前,我们先来看看H.323协议的定义。

  H.323协议簇

  1.1基本概念

  H.323是ITU-T第16工作组的建议,H.323由一组协议构成,其中有负责音频与视频信号的编码、解码和包装,有负责呼叫信令收发和控制的信令,还有负责能力交换的信令.1999年7月前,多数系统是基于H.323第二版的,而在此之后,H.323第三版开始应用.H.323是个框架性的协议,由系列协议组成,包括:H.225、H.245、G.711、G.723.1、G.729等.

  1.2基本功能

  目前我国网上使用的H.323协议基本上是第二版本的.针对信令方面主要为H.225、H.245.

  1.2.1H.225协议的功能

  (1)RAS信令功能:就是采用H.225中的消息在端点和网守之间实现注册、接入许可、带宽修改、状态和拆除程序.

  (2)呼叫信令功能:采用H.225呼叫信令在H.323端点之间建立连接,包括呼叫建立和拆除等流程.

  1.2.2H.245协议的功能

  (1)控制功能:H.245控制功能采用H.245控制通路交换端到端控制信息,从而保证H.323实体的运作,其中包括能力交换、打开/关闭逻辑通路模式选择、流控消息、一般命令和指示.H.245信令在两个端点和一个网守之间建立.端点必须为其参与的每个呼叫建立正确的H.245控制通路,这个通路必须使用H.245消息和流程.

  (2)H.245的能力交换:指提供独立的接收和传送功能.

  (3)逻辑通路信令.每个逻辑通路承载从一个发送方至另一个或多个接收方的信息.

  (4)模式选择.接收方可以使用requestMode消息请求发送方发送一个特定模式.

  (5)主从决定.主从决定主要是解决冲突问题.

  好了,到这里,大家爱应该能够清楚H.323等一系列协议的内容了,那么这里我们就具体讲解一下sip协议是什么。

  SIP协议

  2.1基本概念

  SIP(SessionInitiationProtocol,会话发起协议)是由IETF提出的IP电话信令协议.它的主要目的是为了解决IP网中的信令控制,以及同软交换的通信,从而构成下一代的增值业务平台,对电信、银行、金融等行业提供更好的增值业务.其结构图如图1所示.

  2.2基本功能

  SIP的基本功能有5种:用户定位、用户能力、用户可用性、呼叫建立和呼叫处理.

  2.3SIP组件

  2.3.1体系结构

  SIP是基于客户机/服务器结构的.基本分为用户代理和网络服务器,网络结构如图2所示.

  (1)用户代理:用户代理客户端、用户代理服务器.

  (2)网络服务器:代理服务器、重定向服务器、注册服务器、位置服务器.

  2.4SIP消息

  SIP消息分为两大类:请求和响应.响应又分为最终响应和临时响应.

  2.4.1请求消息

  请求消息分为6种:INVITE、ACK、BYE、CANCEL、REGISTER和OPTIONS.

  2.4.2响应消息

  响应消息分为6类:1xxInformational(通知)、2xxSuccessful(成功)、3xxRedirection(重定向)、4xx Request Failure(请求失败)、5xx Server Failure(服务失败)、6xx Global Failures(全局错误).

  2.5SIP操作

  SIP操作包括:SIP服务器定位、SIP事务、SIP邀请、用户定位和注册服务.

  2.5.1SIP服务器定位

  客户在发起呼叫时,需要将请求发送到本地配置的独立于Request-URI的SIP服务器或者由Request-URI标识的IP地址和端口.

  2.5.2SIP事务

  一个SIP事务存在于一个客户与一个服务之间,由所有的(从最初的请求到最后的应答)消息组成.

  一个事务只对应于一个呼叫,由Call-ID标识.所有对于一个请求的应答都包含相同的Call-ID、CSeq、To、From域(或其他包含的值).客户机与服务器之间的每一个Call-ID只能有一个未结束的事务.

  2.5.3SIP邀请

  SIP会话由INVITE方法发起,通常情况下,INVITE包括会话描述(一般使用SDP格式),为被叫提供足够的会话信息;如果被叫同意加入会话,主叫就发送ACK方法确认呼叫成功;如果被叫拒绝加入会话或产生其他错误,主叫则发送BYE方法指示呼叫失败.

  2.5.4SIP用户定位

  考虑到用户可以在不同终端移动,SIP提供了定位功能.用户可以在SIP服务器或位置服务器注册其位置信息,一个用户可以注册到不同的位置.位置服务器可以采用其他协议.位置服务器可以解析出零个或多个可能位置,这些位置可以按照成功访问的概率来存储.

  2.5.5SIP注册服务

  用户在发起会话前,首先应到注册服务器注册.注册使用REGISTER方法.注册服务器通常将用户注册的地址信息保存在位置服务器,这样使代理服务器或者重定向服务器就知道那些地址是可以到达的.注册信息是随时刷新的(默认周期是1h),所以用户每隔一段时间都应主动注册.注册服务一般伴随其他功能,如提供用户鉴权功能,或者通过注册服务安装呼叫处理程序或第三方应用.

  2.5.6改变现有会话

  当需要改变现有会话参数的时候,可以通过重发INVITE来实现.重发INVITE时应该使用相同的Call-ID,但使用新的或不同的消息头或消息体来传送新的信息.这条再次发送INVITE必须比以前的请求拥有高的CSeq.

  2.6SIP的注册服务与鉴权

  SIP注册服务的目的是使SIP客户机能够使用SIP服务器提供的服务,或使之失效.在注册请求中,客户机将提供包含在Contact域中的一个或几个地址给注册服务器.这样代理服务器就可以使用注册信息进行IP电话的路由.同时,注册也可以提供鉴权服务.如果不提供鉴权服务,冒名顶替者就可以截听任何人的电话.

  H.323与SIP的比较

  首先进行类比的是,SIP的UA等价于一个H.323的终端(或者包交换网络侧的网关),SIP服务器则等价于H.323的网守.另外,SIP类似H.323中的RAS和Q.931协议,而SDP则相当于H.245.在IETF的SIP体系结构中,媒体流的承载采用了RTP协议,这是和H.323一样的.所以,H.323与IETF的SIP主要的不同在于呼叫信令和控制是如何实现的.

  3.1基本呼叫的建立和拆除

  H.323第二版的呼叫建立是基于可靠的传输协议,所以呼叫建立需要两个连接阶段:TCP连接和呼叫连接.而在H.323第三版,支持TCP和UDP,它简化了呼叫建立过程.SIP的呼叫建立类似H.323第三版的处理过程,用INVITE信息包(可建立在UDP上).呼叫拆除的过程与呼叫建立相反,主叫和被叫都能通过RELEASE[COMPLETE](H.323中用)或BYE(SIP中用).

  3.2呼叫控制业务

  SIP和H.323都支持呼叫保持、呼叫转移、呼叫前转、呼叫等待、电话会议和其他补充业务.以呼叫保持为例:H.323定义了近点呼叫保持和远点呼叫保持两种保持业务的场景,两者都可带网守或不带.网守仅仅透明地传送SS-HOLD.而SIP实现同样的功能,只要向需要呼叫保持的一方发送一个更改了SDP描述的INVITE命令即可.更改的SDP描述段仅将媒体发送的目的地址变为空<0.0.0.0>,而其他的内容不变.收到该用户的UA,让呼叫保持,直到有新的INVITE到来为止.

  3.3SIP的第三方控制

  第三方控制是指不参与会话的第三者具有建立呼叫的能力,这个业务特征目前只有SIP具有,由于SIP的这一特性,ITU-T和IETF在实现PINT(IN和因特网互通)业务时都采用了SIP协议.能力交换的就是彼此交流各自对媒体流的处理能力,确定双方共有的能力,从而确保多媒体信号被双方接受.H.323采用H.245协议进行能力交换.SIP使用SDP来进行能力交换,主叫方使用一个OPTION需求去找出被叫,当前,SIP还不如H.245有完整灵活的协商能力,因为受制于SDP的表达方式.

  3.4服务质量

  服务质量包含很多不同方面的指标,一个和多媒体流相关的QoS参数包括带宽、最大时延、时延抖动和包丢失率等.本文仅从考察呼叫建立时延和环路检测进行比较.

  1.呼叫建立时延

  H.323第一版在呼叫建立时时延很大.第二版大大改进,而第三版则更好.SIP在呼叫建立时非常类似于H.323第三版,然而,如果UDP呼叫建立失败,则H.323第三版要好于SIP,H.323第三版几乎同时建立一个UDP的连接和一个TCP连接,它提供一个有效的机制,如果UDP连接成功则关闭TCP连接;否则,立刻启用TCP.SIP是顺序地操作UDP和TCP,如果UDP失败,则会增加呼叫建立时延.对于H.323如果网络质量比较好的情况下,TCP连接就浪费了.

  2.环路检测

  为防止环路,H.323定义PathValue域来指出信令信息在丢弃前可达到的最大数目.问题是定义一个适用的值很关键.其次,网络变化后,这个值也要改.SIP采用了via头字段,检查其内容,如果新端点已出现在via列表中,则表示有环路了.SIP的方法好于H.323.但是via要占用很多空间.

  3.5实现的难易性

  H.323信令信息是符合ASN.1的二进制编码.需要特殊的编解码器.SIP信息是基于文本的,采用ISO10646以UTF-8编码.基于文本的编码很容易用Java、TCL和Perl等语言来实现,调试方便.

  总结

  综上所述,大家都应该知道sip协议是什么了。SIP协议由于其简单、易于扩展、便于实现等诸多优点越来越得到通信业界的青睐,正在成为NGN(下一代网络)的核心协议之一,而且SIP协议已经被3GPP工作组定义为第三代移动通信系统的信令协议以提供IP多媒体服务.虽然SIP协议目前还不完善,但SIP协议必将促进未来网络通信的迅猛发展.

转自:http://www.educity.cn/net/1405063.html

阐述:SIP协议是什么的更多相关文章

  1. 深入浅出SIP协议

    传统电话是电磁波的通信,当电话技术发展到IP技术时代,SIP协议成为了电话通信标准协议,不仅可以通电话.还可以收发信息.视频.开会.放PPT.事实上,今天的通信业已全面采用SIP协议作为通信标准,无论 ...

  2. 流媒体学习二-------SIP协议学习(基本场景分析 )

    作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.SIP业务基本知识 1.1 业务介绍 会话初始协议(Session Initiation Protocol) ...

  3. 基于GBT28181:SIP协议组件开发-----------第三篇SIP注册流程分析实现

    原创文章,引用请保证原文完整性,尊重作者劳动,原文地址http://www.cnblogs.com/qq1269122125/p/3941172.html,qq:1269122125. 上两章节简要的 ...

  4. 基于GBT28181:SIP协议组件开发-----------第四篇SIP注册流程eXosip2实现(一)

    原创文章,引用请保证原文完整性,尊重作者劳动,原文地址http://www.cnblogs.com/qq1269122125/p/3945294.html. 上章节讲解了利用自主开发的组件SIP组件l ...

  5. 基于GBT28181:SIP协议组件开发-----------第二篇SIP组件开发原理

    原创文章,引用请保证原文完整性,尊重作者劳动,原文地址http://www.cnblogs.com/qq1269122125/p/3937590.html,qq:1269122125. 上一节中讲的S ...

  6. 基于GBT28181:SIP协议组件开发-----------第一篇环境搭建

    原创文章,引用请保证原文完整性,尊重作者劳动,原文地址http://www.cnblogs.com/qq1269122125/p/3930018.html,qq:1269122125. SIP协议在安 ...

  7. SIP协议搭建电信级VOIP/IM运营平台--架构篇(sip集群)

    移动互联网的发展为整个VOIP通信行业开拓了新的战场,一时间各类即时通信软件如雨后春筝般冒了出来,再一次创造了移动互联网的发展神话.SIP协议做为音视频通信的首选标准,应用也越来越广泛. ------ ...

  8. SIP协议简单介绍

    sip协议是由IETF提出的IP电话信令协议,主要目的是为了解决ip网络中的信令控制,以及同软交换通信. sip协议类似http协议: 报文结构: start-line message-header ...

  9. sipp模拟电信运营商VoIP终端测试(SIP协议调试)

    三大运营商都有SIP服务器,用来支持语音对讲,多媒体调度等功能,他们的平台可能不是标准的SIP协议会话. 为了应对没完没了的对接各个厂商的平台,这里再整理了一套协议脚本,毕竟全都是没有意义的无用功,标 ...

随机推荐

  1. windows库的创建和使用:静态库+动态库

    windows库的创建和使用:静态库+动态库   一.静态库的创建和使用 1. 静态库创建 (1)首先创建projecttest,測试代码例如以下: 1) test.h void test_print ...

  2. 译: 3. Axis2快速入门指南

    本指南的目的是让您尽快使用Axis2开始创建服务和客户端.我们将采用一个简单的StockQuote服务,向您展示可以创建和部署它的一些不同方式,以及快速查看Axis2附带的一个或两个实用程序.然后,我 ...

  3. Filberder教程

    http://www.cnblogs.com/TankXiao/archive/2012/02/06/2337728.html

  4. 【Unity】4.3 地形编辑器

    分类:Unity.C#.VS2015 创建日期:2016-04-10 一.简介 Unity拥有功能完善的地形编辑器,支持以笔刷绘制的方式实时雕刻出山脉.峡谷.平原.高地等地形.Unity地形编辑器同时 ...

  5. 深入理解Linux内核-进程

    1.进程的静态特性 进程:程序执行时的一个实例 进程描述符(task_struct): 进程的基本信息(thread_info).指向内存区描述符的指针(mm_struct).进程相关的tty(tty ...

  6. tengine 的优化

    查服务器CPU的核数 : [root@c01 conf]# grep processor /proc/cpuinfo |wc -l 4 [root@c01 conf]# grep -c process ...

  7. (原创)sqlite封装库SmartDB1.3发布

    最近终于稍微有点空对SmartDB进行升级了,SmartDB1.3比之前的版本做了简化,增强了易用性和灵活性. SmartDB对sqlite做了一层封装,屏蔽了诸多细节,使得我们使用起来很方便.在注重 ...

  8. 在vue-cli生成的项目中使用karma+chrome进行单元测试

    用vue-cli生成项目时,如果选择了单元测试,那么会采用karma+mocha作为单元测试框架,默认使用的浏览器是PhantomJs. Karma 是一个基于Node.js的JavaScript测试 ...

  9. 每日英语:Three Shows That Changed The Way Networks Think About Viewership

    As we continue examining this season’s DVR success stories in The Blacklist and Sleepy Hollow it mak ...

  10. kali下添加PATH环境变量

    添加PATH环境变量,第1种方法: [root@lx_web_s1 ~]# export PATH=/usr/local/webserver/mysql/bin:$PATH 再次查看: [root@l ...