首页 > 代码库 > 基于SIP和RTP协议的开源VOIP之QuteCom简介

基于SIP和RTP协议的开源VOIP之QuteCom简介

***************************************************************************************************************************
作者:EasyWave                                                                              时间:2014.10.30

类别:Linux应用-基于oSIP协议的开源VOIP之QuteCom简介        声明:转载,请保留链接

注意:如有错误,欢迎指正。这些是我学习的日志文章......

***************************************************************************************************************************

一:QuteCom简介

       近年来,随着网络带宽的增加和各种多媒体终端设备成本的下降,Voice over IP 和Video over IP 获得广泛的应用,其关键技术——信令技术目前有两种,ITU-T 提出的H.323是在分组交换网上多媒体通信的技术规范,已获得业界认可,但构成复杂,实现困难;IETF提出的会话初始化协议SIP(Session Initiation Protocol)也是一种支持多媒体会话的信令控制协议,用于创建、修改以及终止一个或多个参与者参加的会话进程,与H.323 相比,SIP更简单灵活、易于实现,已逐渐成为关注的焦点。
       目前,已经有很多组织实现了SIP 协议栈并将其开源,供开发者方便快捷的使用,如OSIP 和Resiprocate 等开源项目,这些开源代码按照RFC3261 等SIP 相关的标准实现了SIP协议栈,在其基础上开发Voice/Video over IP 客户端软件还需要结合RTP、音视频编码等相关的技术,才能实现一个完整的Client。QuteCom(前身是WengoPhone)开源网络电话是将SIP、RTP 和音视频编解码等技术结合,用c/c++语言开发了一个简单灵活的平台,开发者可以很容易的利用它来实现具有音视频和即时消息传输功能的客户端软件。QuteCom是基于QT开发的,这样就可以很方便的移植到嵌入式Linux系统中去,尤其是对于VOIP对讲系统来说,QuteCom软件界面如下所示:



二:QuteCom官方网站

       QuteCom的开源官方网站:http://www.qutecom.org/   

       如下所示:


三:SIP和RTP协议简介


       3.1 SIP 概要

       SIP 是由IETF 提出来的一个应用控制(信令)协议[1]。正如名字所隐含的--用于发起会话。它可用来创建、修改以及终结多个参与者参加的多媒体会话进程。参与会话的成员可以通过组播方式、单播连网或者两者结合的形式进行通信。
SIP 中有客户机和服务器之分。客户机是指为了向服务器发送请求而与服务器建立连接的应用程序。用户代理(User Agent)和代理(Proxy)中含有客户机。服务器是用于向客户机发出的请求提供服务并回送应答的应用程序。共有四类基本服务器:

  • 用户代理服务器:当接到SIP 请求时它联系用户,并代表用户返回响应。
  • 代理服务器:代表其它客户机发起请求,既充当服务器又充当客户机的媒介程序。在转发请求之前,它可以改写原请求消息中的内容。
  • 重定向服务器:它接收SIP 请求,并把请求中的原地址映射成零个或多个新地址,返回给客户机。
  • 注册服务器:它接收客户机的注册请求,完成用户地址的注册。
使用 SIP 有一下优势:
      ① 容易理解。SIP 协议是基于文本形式的
      ② 比较简单。SIP 协议(包括SDP)文本仅100 多页,信息类型也比较少。
      ③ 功能扩充性比较好。SIP 协议定义了Require 头部字段,可以比较灵活地扩充各种增值业务。
      ④ 扩展性好。SIP 能支持多域搜索,可以支持比较大的网络
      ⑤ 效率较高。完成一个呼叫,SIP 协议的消息流数量比较少,因此执行效率比较高。


      3.2 RTP 技术

      实时传输协议 RTP(Real-time Transport Protocol)是在Internet 上处理多媒体数据流的一种网络协议,利用它能够在一对一(unicast,单播)或者一对多(multicast,多播)的网络环境中实现传流媒体数据的实时传输。RTP 通常使用UDP 来进行多媒体数据的传输,但如果需要的话可以使用TCP 或者ATM 等其它协议,整个RTP 协议由两个密切相关的部分组成:RTP 数据协议和RTP 控制协议。实时流协议(Real Time Streaming Protocol,RTSP)最早由Real Networks 和Netscape 公司共同提出,它位于RTP 和RTCP 之上,其目的是希望
通过IP 网络有效地传输多媒体数据。RTP 定义在RFC 1889 中, 使用RTP 协议的应用程序运行在RTP 之上,而执行RTP 的程序运行在UDP 的上层,目的是为了使用UDP 的端口号和检查和。如表1 所示,RTP 可以看成是传输层的子层。由多媒体应用程序生成的声音和电视数据块被封装在RTP 信息包中,每个RTP 信息包被封装在UDP 消息段中,然后再封装在IP 数据包中。
       从应用开发人员的角度来看,可以把 RTP 执行程序看成是应用程序的一部分,因为开发人员必需把RTP 集成到应用程序中。在发送端,开发人员必需把执行RTP 协议的程序写入到创建RTP 信息包的应用程序中,然后应用程序把RTP 信息包发送到UDP 的套接口(socket
interface),如下图所示;同样,在接收端,RTP 信息包通过UDP 套接口输入到应用程序,因此开发人员必需把执行RTP 协议的程序写入到从RTP 信息包中抽出媒体数据的应用程序。



        3.3 QuteCom的优势

       QuteCom是能够在PC之间进行具有语音视频功能的呼叫和具有IM 即时通信功能的软件,通信部分基于SIP 协议,利用开源SIP协议栈oSIP实现,对于音视频流的传输基于RTP 协议,利用开源RTP协议栈ORTP实现。由于QuteCom基于开源项目而本身又是开源的,所以对VOIP和IM开发者来说,就可以很容易的拿来借鉴来开发自己的客户端软件。
QuteCom具有以下优点:

  • 基于 SIP 协议,灵活方便易于扩展。
  • 基于开源,致力于开源,为 VOIP、IM 开发者提供了很好的平台。
  • 跨平台,支持 Windows 和Unix 操作系统,免去了移植的麻烦。
  • 对通信部分,提供了一个方便的平台,开发者可以利用其很方便的开发自己的VOIP、IM 客户端软件。
  • 考虑到了 NAT 穿越的问题,并通过STUN、Httptunnel 等技术实现。

四:QuteCom移植展望

      后续会考虑将QuteCom移植到嵌入式Linux系统验证一下作为实际产品是否是可行的,由于前期已经将开源的LinPhone移植到嵌入式Linux下,并且也是完全可以在嵌入式下Linux下运行的,可以作为一个款不错的VOIP对讲系统的产品。

基于SIP和RTP协议的开源VOIP之QuteCom简介