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呼叫示意图:
SIP协议-01 简介与入门_第1张图片

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协议栈。

你可能感兴趣的:(网络协议,网络)