SIP协议基本概述

        因为最近项目需要涉及到SIP协议,通过自己查阅网上的资料,感觉还是比较杂乱的,现在项目结束了,打算梳理记录一下,仅供个人学习使用,不涉及任何商业用途,也希望能帮助到刚接触SIP项目的新人。

什么是SIP,这里讲的SIP是一种VoIP网络通信协议,首先我们要知道要了解网络电话协议有哪些,请参考:https://www.dsliu.com/hangye/6057.html。
在这里提供给大家一个下载相关RFC文档的链接:https://www.rfc-editor.org/, 在这里你可以找到相关的原始文档。


1、SIP协议介绍
        Internet的许多应用都需要建立和管理一个会话,会话在这里的含义是在参与者之间的数据的交换。由于考虑到参与者的实际情况,这些应用的实现往往是很复杂的:参与者可能是在代理间移动,他们可能可以有多个名字,他们中间的通讯可能是基于不同的媒介(比如文本,多媒体,视频,音频等)有时候是多种媒介一起交互。人们创造了无数种通讯协议应用于实时的多媒体会话数据比如声音,影像,或者文本。本SIP(SessionInitiationProtocol,会话发起协议,RFC3261)和这些协议一样,同样允许使用Internet端点(用户代理)来寻找参与者并且允许建立一个可共享的会话描述。SIP是由IETF推出的一种用于建立、修改和终止多媒体会话的应用层控制协议。这些多媒体会话包括Internet多媒体会议、远程教育、Internet电话等。SIP侧重于将SIP网络电话作为互联网上的一个应用,所以SIP继承了互联网协议简单、开放、灵活的特点,既保证了对用户和会话的可管理性,又使网络核心负担大大减轻,实现可伸缩性。同时,与其他互联网应用(如FTP、E-mail等)相比较,SIP还增加了信令和QoS控制的要求。
        SIP是一种基于文本的协议,它的语法和消息非常类似于HTTP协议,不同之处在于SIP不仅可以用TCP,也可以用UDP封装。SIP采用统一资源定位(URL,UniformResourceLocators)来指示会话的发起方(From:当前请求的目的地(RequestURL))和最终的接收方(To)。SIP的消息分为两大类:一类为客户发往服务器的请求消息;另一类为服务器返回的响应消息。SIP在消息体中采用SDP(SessionDescriptionProtocol,会话描述协议)来描述多媒体会话的媒体信息。SIP最大的特点是仅需利用已有的消息头字段,对其进行简单必要的扩充,就能很方便地支持各项新业务和智能业务,具有很强的灵活性和可扩充性。SIP协议天然具有对移动性的支持。SIP的动态注册机制,使用户端的移动变得十分方便。SIP协议为实现固定和移动业务的无缝融合创造了条件。3GPPR5版本已经选定SIP作为3G移动通信多媒体域的信令协议来实现基于IP的移动语音和多媒体通信。SIP的这些优越特征使其在NGN(nextgeneration network即为下一代网络,它是一种全新的电信网络体系架构)中占据很重要的主导地位。

SIP协议基本概述_第1张图片

2、SIP协议功能概况

    SIP被描述为用来生成、修改和终结一个或多个参与者之间的会话。这些会话包括Internet多媒体会议,Internet(或任何IP网络)电话呼叫和多媒体发布。SIP也可以邀请参与者参加已经存在的会话,比如多方会议。会话中的成员能够通过多播或单播联系的网络来通信。SIP支持会话描述,它允许参与者在一组兼容媒体类型上达成一致。它同时通过代理和重定向请求到用户当前位置来支持用户移动性。SIP不与任何特定的会议控制协议捆绑。本质上,SIP提供以下功能:

1)名字翻译和用户定位:无论被呼叫方在哪里都确保呼叫达到被叫方、执行任何描述信息到定位信息的映射,确保呼叫(会话)的本质细节被支持。

2)特征协商:它允许与呼叫有关的组(这可以是多方呼叫)在支持的特征上达成一致(注意:不是所有各方都能够支持相同级别的特征)。例如,视频可以或不可以被支持。总之,存在很多需要协商的范围。

3)呼叫参与者管理:呼叫中参与者能够引入其他用户,加入呼叫或取消到其他用户的连接。此外,用户可以被转移或置为呼叫保持。

4)呼叫特征改变:用户应该能够改变呼叫过程中的呼叫特征。例如,一个呼叫可以被设置为“voice-only”,但是在呼叫过程中,用户可以开启视频功能。也就是说一个加入呼叫的第三方为了加入该呼叫可以开启不同的特征。

        SIP不是一个垂直集成的通讯系统。SIP可能叫做是一个部件更合适,它可以用作其他IETF协议的一个部分,用来构造完整的多媒体架构。比如,这些架构将会包含实时数据传输协议(RTP)(RFC 1889)用来传输实时的数据并且提供QoS反馈,实时流协议(RSTP)(RFC 2326)用于控制流媒体的的传输,媒体网关控制协议(MEGACO)(RFC 3015)用来控制到公共电话交换网(PSTN)的网关,还有会话描述协议(SDP)(RFC 2327)用于描述多媒体会话。因此,SIP应该和其他的协议一起工作,才能提供完整的对终端用户的服务。虽然基本的SIP协议的功能组件并不依赖于这些协议。
  SIP本身并不提供服务。但是,SIP提供了一个基础,可以用来实现不同的服务。比如,SIP可以定位用户和传输一个封装好的对象到对方的当前位置。并且如果我们利用这点来通过SDP传输会话的描述,立刻,对方的用户代理可以得到这个会话的参数。如果我们用这个像传输会话描述(SESSION DESCRIPTION SD)一样呼叫方的照片,一个”呼叫ID”服务很容易就建立了。这个简单的例子说明了,SIP作为一个基础,可以在其上提供很多不同的服务。
  SIP并不提供会议控制服务(比如议席控制或者投票系统),并且并没有建议会议应该则那样管理。可以通过在SIP上建立其他的会议控制协议来发起一个会议。由于SIP可以管理参与会议的各方的会话,所以会议可以跨异构的网络,SIP 并不能,也不打算提供任何形式的网络资源预留管理。
  安全对于提供的服务来说特别重要。要达到理想的安全程度,SIP提供了一套安全服务,包括防止拒绝服务,认证服务(用户到用户,代理到用户),完整性保证,加密和隐私服务。
  SIP可以基于IPV4也可以基于IPV6。


3、基于SIP协议会话建立的基本过程(图解)

在这里插入图片描述
SIP的会话发起的基本过程,用SIP建立通讯通常需要六个步骤:
1)注册,发起和定位用户
2)进行媒体协商–通常采用SDP协议来携带媒体参数
3)由被叫方来决定是否接纳该呼叫
4)呼叫媒体流建立并交互
5)呼叫更改或处理如呼叫转移等
6)呼叫终止 

SIP协议基本概述_第2张图片

建立呼叫的SIP信令过程

1、呼叫方对某个用户SIP:[email protected]发起INVITE请求,该请求中提供了足够的信息,以便被叫方能参加该会话,包括媒体流的类型和格式以及地址和端口等信息,以SDP格式来表示,INVITE请求被送到本地的SIP代理服务器A;

2、本地的SIP代理服务器A通过DNS查询,得到company.com域中处理SIP请求的重定向服务器的IP地址,并将接收到的请求转发到该SIP重定向服务器;

3、SIP重定向服务通过查询,了解到用户[email protected]当前并不在本地,而是以[email protected]登记(company.com的服务器可以通过静态配置数据库入口来获得这些消息,或者用户通过使用SIPREGISTER消息动态通知重定向服务器),然后该服务器将请求重定向到university.edu;

4、本地的SIP代理服务器A通过DNS查询,得到university.edu域中处理SIP请求的代理服务器B的IP地址,并将接收到的INVITE请求转发到该SIP代理服务器B;

5、university.edu域中的SIP代理服务器B查询本地的位置服务数据库;

6、本地数据库返回有关[email protected]的消息,指示该用户在本地是以[email protected]注册的;

7、university.edu域的SIP代理服务器B将该INVITE请求转发到cs.university.edu域中的SIP代理服务器C;

8、cs.university.edu域中的SIP代理服务器C知道用户[email protected]当前所登记的机器的IP地址,并将该INVITE请求转发到该地址;

9、被叫方[email protected]接受该呼叫,并发回一个响应。该响应沿着10、11、12到达呼叫方,然后呼叫方返回一个确认(图中未标出),至此呼叫已经建立,可以开始在它们之间直接传输媒体流了。

4、SIP系统基本组成

        SIP协议虽然主要为IP网络设计的,但它并不关心承载网络,也可以在ATM、帧中继等承载网中工作,它是应用层协议,可以运行于TCP,UDP,SCTP等各种传输层协议之上。SIP用户是通过类似于e-mail地址的URL标识,例如:sip:[email protected],通过这种方式可以用一个统一名字标识不同的终端和通信方式,为网络服务和用户使用提供充分的灵活性。按逻辑功能区分,SIP系统由4种元素组成:用户代理、代理服务器、重定向服务器以及注册服务器。

1.用户代理

      用户代理(UserAgent)分为两个部分:

  • 客户端(UserAgentClient),负责发起呼叫;
  • 用户代理服务器(UserAgentServer),负责接受呼叫并做出响应。

二者组成用户代理存在于用户终端中。用户代理按照是否保存状态可分为有状态代理、有部分状态用户代理和无状态用户代理。

2.代理服务器

      代理服务器(ProxyServer),负责接收用户代理发来的请求,根据网络策略将请求发给相应的服务器,并根据收到的应答对用户做出响应。它可以根据需要对收到的消息改写后再发出。

3.重定向服务器

      重定向服务器(RedirectServer),用于在需要时将用户新的位置返回给呼叫方。呼叫方可根据得到的新位置重新呼叫。

4.注册服务器

      注册服务器(Registrar),用于接收和处理用户端的注册请求,完成用户地址的注册。

SIP协议基本概述_第3张图片

      以上几种服务器可共存于一个设备,也可以分布在不同的物理实体中。SIP服务器完全是纯软件实现,可以根据需要运行于各种工作站或专用设备中。UAC,UAS,ProxyServer,RedirectServer是在一个具体呼叫事件中扮演的不同角色,而这样的角色不是固定不变的。一个用户终端在会话建立时扮演UAS,而在主动发起拆除连接时,则扮演UAC。一个服务器在正常呼叫时作为ProxyServer,而如果其所管理的用户移动到了别处,或者网络对被呼叫地址有特别策略,则它将扮演RedirectServer,告知呼叫发起者该用户新的位置。

      除了以上部件,网络还需要提供位置目录服务,以便在呼叫接续过程中定位被叫方(服务器或用户端)的具体位置。这部分协议不是SIP协议的范畴,可选用LDAP(轻量目录访问协议)等。

      理论上,SIP呼叫可以只有双方的用户代理参与,而不需要网络服务器。设置服务器,主要是服务提供者运营的需要。运营商通过服务器可以实现用户认证、管理和计费等功能,并根据策略对用户呼叫进行有效的控制。同时可以引入一系列应用服务器,提供丰富的智能业务。

5、SIP优缺点

        SIP的组网很灵活,可根据情况定制。在网络服务器的分工方面:位于网络核心的服务器,处理大量请求,负责重定向等工作,是无状态的,它个别地处理每个消息,而不必跟踪纪录一个会话的全过程;网络边缘的服务器,处理局部有限数量的用户呼叫,是有状态的,负责对每个会话进行管理和计费,需要跟踪一个会话的全过程。这样的协调工作,既保证了对用户和会话的可管理性,又使网络核心负担大大减轻,实现可伸缩性,基本可以接入无限量用户。SIP网络具有很强的重路由选择能力,具有很好的弹性和健壮性。

    对话启动协议提供了一种既可在终端设备或代理服务器之间,也可向网关设备传输呼叫控制信息的方法,像许多现有的Internet协议一样,SIP中也包含了常用的HTTP协议。

    SIP被认为是一种轻量级协议,因为该协议使用的是能被终端设备轻易生成并分析的简单文本命令。SIP只使用6个指令管理呼叫控制信息,SIP协议的简单易行是极低成本应用系统选择该协议的重要原因。

    SIP并未对媒体传输机制加以定义,因此该协议能用在媒体传输作为专用设备的应用系统,这可以提高效率并降低成本。SIP也允许通过任意数据报协议传输呼叫控制信息,使其在非TCP/IP环境(如Novell或其他专有协议)中也能有效使用。

    SIP的部分优点包括:该协议具有可扩展特性,可以轻松定义并迅速实现新功能。可以简单易行地嵌入廉价终端用户设备。该协议可确保互操作能力,并使不同的设备进行通信。便于那些非电话领域的开发人员理解该协议。

    SIP的缺点包括:SIP问世不久,因此大多数应用尚处于原型阶段。该协议单独应用的范围较窄。但与其他协议协同使用时,具有较强的灵活性。SIP只是完整解决方案的一小部分,还需要许多其他的软件来构建完整的SIP网络电话产品。

    低成本终端产品无疑是SIP最自然的应用了,像无线电话、以太网电话及其他带有有限计算和内存资源的设备都能使用该协议。由于SIP是一种优越的呼叫控制协议,因此是当前取代MGCP呼叫控制协议的首选。

好了,SIP的协议基础基本上就这么多了,开发项目时主要是要对SIP会话过程以及流程进行了解,其他内容有个认知就可以,接下来我们就正式进入协议部分。

整理参考:https://blog.csdn.net/yunmao2882/article/details/86646608

https://www.dsliu.com/wenti/sip.html

你可能感兴趣的:(SIP协议以及国标相关,网络)