SIP协议-01 简介与入门
文章目录
- 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则支持tcp和udp承载。我们常见的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 简介与入门相关推荐
- SIP 协议格式简介
消息体结构,由三部分组成: Request-Line / Status-Line (请求行 / 状态行) Header (消息头) Body (正文) 示例: Request-Line / Statu ...
- 【ENVI入门系列】01.ENVI产品简介与入门
[ENVI入门系列]01.ENVI产品简介与入门 (2014-09-22 10:18:21) 转载▼ 标签: 杂谈 分类: ENVI 版权声明:本教程涉及到的数据仅供练习使用,禁止用于商业用途. 目录 ...
- 会话初始协议SIP与SDP简介
SIP(Session Initiation Protocol,会话初始协议)是一个控制发起.修改和终结交互式多媒体(音视频.聊天.游戏等)会话的信令协议(RFC 3261).SIP是一个基于文本的协 ...
- 透视HTTP协议-01|HTTP协议简介
目录 透视HTTP协议-01|HTTP协议简介 透视HTTP协议-02|HTTP协议基础 透视HTTP协议-03|HTTP协议进阶(一) 透视HTTP协议-04|HTTP协议进阶(二) 透视HTTP协 ...
- SIP协议简介(一)之SIP基本的概述
本篇文章主要是对RFC3261翻译进行的,也包含着自己的一些理解.希望能给需要的人带来一些帮助 补充说明:RFC即Request For Comments(RFC),是一系列以编号排定的文件.文件收集 ...
- SIP协议简介(三)之注册(REGISTER)过程
注册服务是另一个常用的SIP操作.登记服务是biloxi.com代理服务器知道Bob当前地址的一个方法.在初始化的时候,或者每隔一段时间,Bob的SIP 电话发送REGISTER消息给biloxi.c ...
- Bootstrap学习笔记01【快速入门、栅格布局】
Java后端 学习路线 笔记汇总表[黑马程序员] Bootstrap学习笔记01[快速入门.栅格布局][day01] Bootstrap学习笔记02[全局CSS样式.组件和插件.案例_黑马旅游网][d ...
- sip协议的功能及其应用
H.323协议簇 1.1基本概念 H.323是ITU-T第16工作组的建议,H.323由一组协议构成,其中有负责音频与视频信号的编码.解码和包装,有负责呼叫信令收发和控制的信令,还有负责能力交换的信令 ...
- 【个人作品】推荐一个SIP客户端-软电话,基于SIP协议,语言C++,界面QT4 开源,asterisk,tribox测试成功
推荐一个SIP客户端-软电话,基于SIP协议,语言C++,界面QT4 开源,asterisk,tribox测试成功 属于个人独创作品,欢迎使用测试,欢迎与作者联系,共同研究.如果大家喜欢将拿出源码. ...
- 基于VOIP的SIP协议分析
转载地址:http://blog.renren.com/blog/250046791/466595416 1. 实验目的 1.1 学习VOIP软件X-Lite的使用: 1.2 学习SIP协议的工作 ...
最新文章
- datatables增删改查php,jQuery+datatables插件实现Ajax加载数据与增删改查功能示例_白峰_前端开发者...
- 在本地安装git的HTML帮助文档
- java jsonobject 转对象_解析JSON中JSONObject的高级使用
- 最简单的控制台登录小案例,适合初学者
- 安装配置gitlab
- 很多家长学历不高,无法辅导孩子的家庭作业怎么办?
- iOS 友盟分享总结
- java 毕业论文_Java程序设计毕业论文.doc
- CreatePipe()函数
- OutMan——Foundation框架中的集合类(三)
- gstreamer gst-launch 记录 原理
- 淘宝违规考试软件1.0
- WeiRuan DaBing
- ApplePay对接java后台详细代码
- 使用synchronized实现Lock接口的lock和unlock方法
- random()随机数的产生方式与原理
- 中专计算机和商务英语哪个好,中职商务英语专业主要学什么?
- Spirit - 腾讯移动 Web 整体解决方案
- 病毒传播建模SEIR与网络传播
- java des 加密工具的使用,Java中DES加密解密工具类的实现实例