文章目录

  • 1 介绍
    • 1.1 VoIP技术
    • 1.2 SIP(Session Initiation Protocol)
    • 1.3 SIP承载
    • 1.4 SIP的几个主要标准协议
  • 2 SIP协议栈
    • 2.1 PJSIP协议栈
    • 2.2 ReSIProcate协议栈
    • 2.3 OPAL协议栈
    • 2.4 VOCAL协议栈
    • 2.5 sipX协议栈
    • 2.6 oSIP协议栈

SIP(Session Initiation Protocol)是一个轻量级信令协议,也是在VoIP技术中使用的最常见的协议之一,它可以作为音频、视频、及时信息的信令。它与其他协议一起配合,完成诸如多媒体会议,语音会议等Internet上的多媒体通信会话。

1 介绍

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

它是一种应用层协议,与其他应用层协议协同工作,通过Internet控制多媒体通信会话。它在在RFC 3261中定义。

1.1 VoIP技术

首先了解有关VoIP的概念。VOIP是一种允许您通过互联网提供语音和多媒体(视频,图片)内容的技术。 它是任何时间,任何地方与互联网的可用性最便宜的沟通方式之一。

VOIP的一些优势包括 :

  • 低成本
  • 可移植性
  • 无额外电缆
  • 灵活性
  • 视频会议

下图就是一个简单的VoIP呼叫示意图:

1.2 SIP(Session Initiation Protocol)

首先,要理解SIP协议,要先知道SIP协议的用途,以下 源引百度百科:

SIP(Session Initiation Protocol)是一个应用层的信令控制协议。用于创建、修改和释放一个或多个参与者的会话。这些会话可以是Internet多媒体会议、IP电话或多媒体分发。会话的参与者可以通过组播(multicast)、网状单播(unicast)或两者的混合体进行通信。

SIP与负责语音质量的资源预留协议(RSVP)互操作。它还与若干个其他协议进行协作,包括负责定位的轻型目录访问协议(LDAP)、负责身份验证的远程身份验证拨入用户服务 (RADIUS) 以及负责实时传输的 RTP 等多个协议。

随着计算机科学技术的进步,基于分组交换技术的IP数据网络以其便捷性和廉价性,取代了基于电路交换的传统电话网在通信领域的核心地位。SIP协议作为应用层信令控制协议,为多种即时通信业务提供完整的会话创建和会话更改服务,由此,SIP协议的安全性对于即时通信的安全起着至关重要的作用。

简单理解来:
如果要完成一个视频通话或视频会议,首先SIP用于初始化一个Session,并负责传输SDP包;而SDP包中描述了一个Session中包含哪些媒体数据,邀请的人等等;当需要被邀请的人都通过各自的终端设备被通知到后,就可以使用RTSP来控制特定Media的通信,比如RTSP控制信息要求开始Video的播放,那么就开始使用RTP(或者TCP)实时传输数据,在传输过程中,RTCP要负责QoS等。

总的来说,SIP能够支持下列五种多媒体通信的信令功能:

  • User location(用户定位):确定参加通信的终端用户的位置
  • User capabilities(用户能力):确定通信的媒体类型和参数
  • User availability(用户的可用性):决定被叫方是否愿意参加通信
  • Call setup(呼叫建立):振铃,在主叫和被叫直接建立呼叫的参数
  • Call handling(呼叫处理):包括呼叫转移和终止

1.3 SIP承载

http使用tcp承载的,而sip则支持tcpudp承载。我们常见的sip都是用udp承载的,由于udp是面向无连接的,在大并发量的情况下与tcp相比较可也减少开销。但超出了ip层窗口的大小,在经过路由器的时候可能会被拆包,造成消息可能丢失,乱序,这时候就是用tcp.

1.4 SIP的几个主要标准协议

SIP协议被设计为非常简单,具有有限的命令集。它也是基于文本的,因此任何人都可以读取在SIP会话中的端点之间传递的SIP消息。

SIP的标准协议都是IETF制定的,所以SIP的标准协议都是通过RFCXXXX的方式来公布的,每个协议均制定了一些SIP的特性:

  • RFC3261:SIP的基本协议,定义了SIP的基本功能,特性等。要搞SIP的话,这个协议是不能不看的。网上有人已经将它翻译成中文,再结合英文原版协议看,应该比较好理解。
  • RFC3262:SIP中,如何定位服务器。这个没过多研究,一般的SIP协议栈都可以很好的支持,让它们去做就可以了。
  • RFC3265:事件通知机制,可通过此协议进行一些事件监控。
  • RFC3515:呼叫的转接。
  • RFC3666:与PSTN连接时的一些特性的说明。
  • RFC3911:通过Join的方式进行会议。

2 SIP协议栈

RFC3261中定义的SIP协议,只是个规范说明。各个厂商和组织用不同的语言构建了多种具体的协议实现,以下就重点说明

2.1 PJSIP协议栈

PJSIP是一个开源的SIP协议栈,PJSIP协议栈同时支持音频、视频并支持即时通讯。PJSIP协议栈具有非常完善的文档,对开发者非常友好,是开发即时通讯系统的首选。同时PJSIP协议栈具有非常好的移植性,几乎支持现今所有的操作系统系统:从桌面系统、嵌入式系统到智能手机。

(后续章节详细介绍)

2.2 ReSIProcate协议栈

ReSIProcate是SIPFoundry的开源项目,ReSIProcate协议栈是在VOCAL的基础上建立的,由于VOCAL开始只支持rfc3254,为了支持最新的rfc3261,ReSIProcate协议栈就这样诞生了。但现在,ReSIProcate已经成为一个独立SIP协议栈了,它性能较为稳定,并且很多商业的应用都使用它。

ReSIProcate官网

2.3 OPAL协议栈

OPAL(Open Phone Abstraction Library)的前身是Openh323开源项目,它包括几乎全部的Openh323全部代码,并加入了SIP协议栈,使到H.323和SIP协议能并存,开发者既可以使用功能全面的H.323协议,可以使用简单易用的SIP协议。Openh323是视频会议厂商最青睐的开源的H.323的开源项目,很多免费视频会议系统的H.323协议栈都是采用Openh323,OPAL的出现使系统能支持SIP协议,因此强烈推荐OPAL作为SIP协议栈的首选。

2.4 VOCAL协议栈

VOCAL项目vovida.org开发的开源SIP系统,VOCAL的SIP协议栈应该是目前功能最完善的SIP协议栈之一,其具有众多的使用者,但由于不支持window平台,所以限制了它的普及和推广。但在其他的linux操作系统上是最具有影响力的SIP协议栈。

2.5 sipX协议栈

sipX是一个开源的SIP协议栈,它和ReSIProcate都是由SIPFoundry开发。sipX是从reSIProcate分离出来的,sipX除了包括SIP 协议外,还包括了sipXphone,sipXproxy,sipXregistry等.,由它们构成了完整的SIP系统,而且sipx还支持嵌入式系统,各个模块可以按需取舍。

2.6 oSIP协议栈

oSIP协议栈是使用ANSI C编写的开源SIP协议栈,是体积最小的SIP协议栈,由于oSIP体积较小,很容易在小的操作系统上运行,因此在实时操作系统 VxWorks当中,oSIP是使用最多的SIP协议栈。

SIP协议-01 简介与入门相关推荐

  1. SIP 协议格式简介

    消息体结构,由三部分组成: Request-Line / Status-Line (请求行 / 状态行) Header (消息头) Body (正文) 示例: Request-Line / Statu ...

  2. 【ENVI入门系列】01.ENVI产品简介与入门

    [ENVI入门系列]01.ENVI产品简介与入门 (2014-09-22 10:18:21) 转载▼ 标签: 杂谈 分类: ENVI 版权声明:本教程涉及到的数据仅供练习使用,禁止用于商业用途. 目录 ...

  3. 会话初始协议SIP与SDP简介

    SIP(Session Initiation Protocol,会话初始协议)是一个控制发起.修改和终结交互式多媒体(音视频.聊天.游戏等)会话的信令协议(RFC 3261).SIP是一个基于文本的协 ...

  4. 透视HTTP协议-01|HTTP协议简介

    目录 透视HTTP协议-01|HTTP协议简介 透视HTTP协议-02|HTTP协议基础 透视HTTP协议-03|HTTP协议进阶(一) 透视HTTP协议-04|HTTP协议进阶(二) 透视HTTP协 ...

  5. SIP协议简介(一)之SIP基本的概述

    本篇文章主要是对RFC3261翻译进行的,也包含着自己的一些理解.希望能给需要的人带来一些帮助 补充说明:RFC即Request For Comments(RFC),是一系列以编号排定的文件.文件收集 ...

  6. SIP协议简介(三)之注册(REGISTER)过程

    注册服务是另一个常用的SIP操作.登记服务是biloxi.com代理服务器知道Bob当前地址的一个方法.在初始化的时候,或者每隔一段时间,Bob的SIP 电话发送REGISTER消息给biloxi.c ...

  7. Bootstrap学习笔记01【快速入门、栅格布局】

    Java后端 学习路线 笔记汇总表[黑马程序员] Bootstrap学习笔记01[快速入门.栅格布局][day01] Bootstrap学习笔记02[全局CSS样式.组件和插件.案例_黑马旅游网][d ...

  8. sip协议的功能及其应用

    H.323协议簇 1.1基本概念 H.323是ITU-T第16工作组的建议,H.323由一组协议构成,其中有负责音频与视频信号的编码.解码和包装,有负责呼叫信令收发和控制的信令,还有负责能力交换的信令 ...

  9. 【个人作品】推荐一个SIP客户端-软电话,基于SIP协议,语言C++,界面QT4 开源,asterisk,tribox测试成功

    推荐一个SIP客户端-软电话,基于SIP协议,语言C++,界面QT4 开源,asterisk,tribox测试成功 属于个人独创作品,欢迎使用测试,欢迎与作者联系,共同研究.如果大家喜欢将拿出源码. ...

  10. 基于VOIP的SIP协议分析

    转载地址:http://blog.renren.com/blog/250046791/466595416 1. 实验目的 1.1  学习VOIP软件X-Lite的使用: 1.2  学习SIP协议的工作 ...

最新文章

  1. datatables增删改查php,jQuery+datatables插件实现Ajax加载数据与增删改查功能示例_白峰_前端开发者...
  2. 在本地安装git的HTML帮助文档
  3. java jsonobject 转对象_解析JSON中JSONObject的高级使用
  4. 最简单的控制台登录小案例,适合初学者
  5. 安装配置gitlab
  6. 很多家长学历不高,无法辅导孩子的家庭作业怎么办?
  7. iOS 友盟分享总结
  8. java 毕业论文_Java程序设计毕业论文.doc
  9. CreatePipe()函数
  10. OutMan——Foundation框架中的集合类(三)
  11. gstreamer gst-launch 记录 原理
  12. 淘宝违规考试软件1.0
  13. WeiRuan DaBing
  14. ApplePay对接java后台详细代码
  15. 使用synchronized实现Lock接口的lock和unlock方法
  16. random()随机数的产生方式与原理
  17. 中专计算机和商务英语哪个好,中职商务英语专业主要学什么?
  18. Spirit - 腾讯移动 Web 整体解决方案
  19. 病毒传播建模SEIR与网络传播
  20. java des 加密工具的使用,Java中DES加密解密工具类的实现实例

热门文章

  1. 五色电阻在线计算机,五色环电阻阻值在线计算一键生成计算器
  2. 兔子吃萝卜java游戏下载_巴迪兔子吃萝卜
  3. 源码:Qt开发的离线软件注册机 适用于工业设备。
  4. APP上架市场隐私政策被拒(关于未经用户同意收集用户信息)
  5. 健康管理平台设计与实现
  6. PFC2D学习笔记——geometry的使用
  7. RFID全面梳理(超高频)
  8. 【转】GB2312 编码
  9. MySQL InnoDB中的锁-间隙锁(Gap Lock)
  10. QT界面无法显示中文