国标28181:什么是SIP协议

1059 篇文章 275 订阅

前言

对讲设备作为一种专业无线通信工具,能进行一对一,多对多的群组即时通信,在应急调度和突发事故处理中是其他通信工具所不能替代的,在城市治理、公安、运输等行业有广泛的应用。

对讲机按照通信方式分模拟对讲、数字对讲和IP 对讲,严格的说IP对讲属于数字对讲的一部分,数字对讲能解决模拟对讲传输距离有限、易受干扰、保密性差的问题,数字对讲也可以通过运营商的网络进行远距离传输。

通信端到端的最简模型可以抽象出4个部分,如下图:

  • 音视频采集模块:摄像头、麦克风
  • 音视频播放模块:显示屏、扬声器或耳机
  • 编解码模块:为了节约通信信道资源,数据会被压缩后传输,一般编解码使用GPU或者专用芯片,便携设备一般GPU嵌入到CPU中,如基带芯片常用的ARM系列芯片
  • 数据收发模块:天线、收发模块,数据处理部分一般内嵌到基带芯片中
    在这里插入图片描述

点对点通信

假定有两方通信终端,终端A和终端B,A、B都在线,A呼叫B,B接通,A和B进行数据交换,进行通话保持阶段,通话结束后,A或B挂断,通话结束。在此过程如果有终端C,C既无法呼通A,也无法呼通B,相当于占线。

这个通信过程中,需要满足几个条件

  • A和B的地址是确定的
  • 数字协议需要语音编码,双方的编码协议需要一致
  • 连接管理,A需要知道B是否在线,在线才能被接通,C需要知道A和B是否被占用
  • A或者B挂断了,对方能收到消息

以上只是一种简单的情况,实际上通信终端有多个,A、B、C、D…N,若干个两两通信,那么它们之间需要

  • 身份验证、鉴权,某个终端是否权限呼叫另外一个终端
  • 连接管理,已连接的终端不能再接受新连接等等,每个终端都需要心跳监测和管理
  • 加密通信,双方的加解密协议和秘钥一致
  • 地址定位管理,终端太多了,终端的设备是可移动的,终端的网络和地址是可变化的,必须有一个组件对终端的要求,监控终端的状态,实现SIP会话管理。

群组通信

  • 若干个终端组成一个通讯小组,音视频数据共享
  • 在通信中,任意呼叫终端可以退出呼叫,任意终端可以邀请其他终端加入群组
  • 抢占式通话,某一个时刻只有唯一的讲话人
  • 组呼切换,切换到另外一个小组

为什么要引入SIP

Internet的许多应用都需要建立和管理一个会话,会话在这里的含义是在参与者之间的数据的交换。由于考虑到参与者的实际情况,这些应用的实现往往是很复杂的:参与者可以在代理间移动,它他们可能可以有多个名字,他们中间的通讯可能是基于不同的媒介(比如文本,多媒体,视频,音频等)-有时候是多种媒介一起交互。人们创造了无数种通讯协议应用于实时的多媒体会话数据比如声音,影像,或者文本。SPI就是用来管理这些会话的。

SIP协议和其他协议一样,允许使用Internet端点(用户代理)来寻找参与者并允许建立一个可共享的会话描述。

  • 会话的参与者可以通过组播(multicast)、网状单播(unicast)或两者的混合体进行通信。
  • 为了能够定位精确的会话参与者,并且也为了其他的目的,SIP允许创建基础的network hosts(叫做代理服务器),并且运行终端用户注册上去,发出会话邀请,或者发出其他请求。
  • SIP是一个轻形的,多用途的工具,可以用来创建、修改和终止会话,它独立运行在通信协议之下,并且不依赖建立的会话类型

SIP也可以邀请参与者参加已经存在的会话,比如多方会议。媒体可以在一个已经存在的会话中方便的增加(或者删除)。SIP显示的支持名字映射和重定向服务,这个用于支持个人移动业务-用户可以使用一个唯一的外部标志而不用关系他们的实际网络地点。

SIP

SIP协议全称“会话发起协议”,属于应用层控制协议,应用在因特网环境下,是由IETF制定,是音视频中使用最广泛的一种协议。它规定一个或多个参与方的终端进行交互通信的标准,能够建立、修改和中断连接实现视频、语音、即时通讯等,在OSI模型中位于会话层,如下图
在这里插入图片描述
http使用tcp承载的,而sip则支持tcp和udp承载。我们常见的sip都是用udp承载的,由于udp是面向无连接的,在大并发量的情况下与tcp相比较可也减少开销。但超出了ip层窗口的大小,在经过路由器的时候可能会被拆包,造成消息可能丢失,乱序,这时候就是用tcp.

是什么

  • SIP是一个基于文本的应用层控制协议,严格来讲属于会话层,用于创建、修改和释放一个或多个参与者的会话。这些会话可以是Internet多媒体会议、IP电话或多媒体分发。会话的参与者可以通过组播(multicast)、网状单播(unicast)或两者的混合体进行通信。
  • SIP是一种信令协议,用于初始、管理、终止网络中的语音和视频会议,具体地说就是用来生成、修改和终结一个或多个参与者之间的会话。
  • SIP是点对点协议
  • SIP协议的终端可以是PC机、对讲仪终端、安装特定软件的手机、平板、网页或者语音机器人等定制化设备。主要用于即时通信
  • SIP是一种源于互联网的IP语音会话控制协议,具有灵活、易于实现、便于扩展等特点
  • 它是一种应用层协议,与其他应用层协议协同工作,通过Internet控制多媒体通信会话
  • SIP与负责语音质量的预留协议(RSVP)互操作。它还与若干个其他协议进行协作,包括负责定位的轻型目录访问协议(LDAP)、负责身份验证的远程身份验证拨入用户服务 (RADIUS) 以及负责实时传输的 RTP 等多个协议。

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

功能

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

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

  • 用户定位:SIP协议中被叫方可在不同位置移动,呼叫方用户请求与被叫方建立会话时,向SIP服务器发送请求查找找用户位置;
  • 用户能力:确定通信的媒体类型和参数。请求方在SDP中描述自身支持哪些媒体数据或会话参数;
  • 用户有效性:会话参与者可以有多名,在收到呼叫请求之后,可自愿选择是否参与会话
  • 建立会话:在用户发送会话请求时,必要的一些媒体参数已描述清楚后,被叫方用户接受请求,并根据请求信息中的SDP描述来配置后,需要发送“Ringing"振铃消息建立起会话
  • 会话管理:添加、修改媒体流参数或其他参数;保持会话等待、激活会话和终止现有会话。包括呼叫转移和终止

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的几个主要标准协议

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

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

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

SIP协议栈

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

PJSIP协议栈

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

ReSIProcate协议栈

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

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

VOCAL协议栈

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

sipX协议栈

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

oSIP协议栈

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

实现原理

SIP实现机制

SIP是一个分层结构的协议,它的行为根据一组平等独立的处理阶段来描述,每个阶段之间是松耦合的关系。

在这里插入图片描述

  • SIP的最低层是其语法和编码。其编码使用扩充的背景 - 诺尔表单语法(BNF)指定。
  • 第二层是传输层。它定义了客户端如何发送请求和接收响应,以及服务器如何通过网络接收请求和发送响应。所有SIP元素都包含传输层。
  • 接下来是交易层。事务是由客户机事务(使用传输层)发送到服务器事务的请求,以及从服务器事务发送回客户机的对该请求的所有响应。用户代理客户端(UAC)完成的任何任务都使用一系列事务进行。无状态代理不包含事务层。
  • 交易层上方的图层称为交易使用者。除了无状态代理,每个SIP实体都是事务用户。

SIP网络元素

使用SIP建立通信网络,需要有一些实体的支持。在SIP中,每个网络元件由类似地址的 SIP URI (统一资源标识符)标识。

SIP是一个点对点协议,其中有两个要素——SIP用户代理和SIP网络服务器。

  • 用户代理UA是呼叫的终端系统元素,而SIP服务器是处理与多个呼叫相关联信令的网络设备。
  • 用户代理兼具客户机(用户代理客户机UAC)和服务器(用户代理服务器UAS)功能
  • 客户机初始呼叫而服务器应答呼叫。这允许点到点的呼叫通过客户机-服务器协议来完成。

用户代理

用户代理(UA,User Agent)也称SIP终端,是指支持SIP协议的多媒体会话终端。

一般使用支持SIP协议的路由器作为SIP UA。UA 包括用户代理客户端(UAC,User Agent Client)和用户代理服务器(UAS,User Agent Server)。一般说的 UA 均是指二者的总称,因为在一次呼叫中,一个 SIP 终端既要处理 SIP 请求,又要发起SIP请求。

  • **用户代理客户端(UAC) **是指在 SIP 会话建立过程中主动发送会话请求的设备。例如,主叫SIP终端。当代理服务器向被叫终端发送会话请求时,它就成为用户代理客户端。
  • 用户代理服务器(UAS) 是指在 SIP 会话建立过程中接收会话请求的设备。例如,被叫 SIP 终端。当代理服务器接收主叫终端发送会话请求时,也作为用户代理服务器。

例如:SIP基于客户端 - 服务器架构,其中呼叫者的电话充当发起呼叫的客户端,并且被叫者的电话充当响应呼叫的服务器。

代理服务器

代理服务器(Proxy Server)的作用就是传递主叫 UA 发送的会话请求到被叫 UA,然后将被叫 UA的响应传递回主叫 UA,它相当于主叫 UA 和被叫 UA 之间传递会话消息的路由。

  • 基本上代理服务器的作用就像一个路由器。
  • 它具有一些智能来理解SIP请求并且在URI的帮助下向前发送它。
  • 代理服务器位于两个用户代理之间。
  • 源和目标之间最多可以有70个代理服务器。
  • 代理服务器接收到主叫UA的会话请求后,先在位置服务器查找UA的位置及主叫和被叫UA之间的呼叫策略信息,找到相应的UA并允许呼叫的UA,代理服务器才会向被叫UA发送会话请求。

有两种类型的代理服务器:

  • 无状态代理服务器(stateless) - 它仅转发接收的消息。这种类型的服务器不存储呼叫或事务的任何信息。
  • 状态代理服务器(stateful) - 此类型的代理服务器会跟踪收到的每个请求和响应,如果需要,将来可以使用它。如果没有来自另一方的响应,它可以重传请求。

重定向服务器

重定向服务器(Redirect Server)用来指示客户端连接的新地址,客户端直接再次向这些新的地方发起请求。不接收或者拒绝呼叫,主要完成路由功能。

比如,主叫UA呼叫被叫UA,当重定向服务器收到主叫UA发送的会话请求消息后,查找被叫UA的位置信息,然后将其返回给主叫UA,使主叫UA重新向该位置发起会话请求。此位置可以是被叫UA的位置,也可以是一个代理服务器的位置。接下来主叫UA如同直接呼叫被叫UA或者向代理服务器呼叫的流程一样。

位置服务器

位置服务器(Location Server)是为代理服务器和重定向服务器等提供UA信息的设备,只有代理服务器或重定向服务器可以联系位置服务器。

位置服务器记录了注册服务器接收到的UA的信息。二者可以独立存在,也可以作为逻辑组件存在于同一台服务器上。

注册服务器

注册服务器(Registrar Server)接受来自用户代理的注册请求。它帮助用户在网络中验证自己。它将URI和用户的位置存储在数据库中,以帮助同一域中的其他SIP服务器。

注册的内容(如本地号码等信息)一般是存储在位置服务器上,供后续查询使用,二者都是逻辑组件,一般存在于同一台服务器上,或者同域的一个数据库内。

小结

其主要组件:

  • 终端用户设备UA:用于创建和管理 SIP协议会话的设备
  • 位置服务器:记录并管理UA的位置信息
  • 注册服务器 :为了判定用户的处于何地,UA终端注册到一个注册服务器,注册服务器会分配特定地址给到终端UA ,该地址是有生命周期的,UA需要定时刷新注册状态以保活。
  • 代理服务器:接受UA 的会话请求并查询注册服务器,获取收件方 UA 的地址信息。然后,它将会话邀请信息直接转发给收件方 UA(同一域中)或代理服务器(UA 位于另一域中)。根据对请求的处理方式分为有状态代理服务器和无状态代理服务器,无状态代理服务器仅对消息进行简单传递,有状态代理服务器会保留接收的请求和应答的相关信息,用于处理与该消息有关的后续消息。通过创建事务状态机对消息的全生命周期进行管理,每条都是会给事务状态机处理,直到事务完成。
  • 重定向服务器:接收请求后查询请求消息者的位置信息,然后在应答消息中创建位置列表请返回该信息,允许 SIP代理服务器将 SIP协议会话邀请信息定向到外部域。

下图是SIP业务的网络结构和各个参与者的关系。

在这里插入图片描述

SIP中的几个重要概念

Messages(消息)

消息是在服务器和客户端之间交换的独立文本,有两种类型的消息,分别是请求(Requests)和响应(Responses)。

SIP协议的消息是基于文本的协议,标准的消息由开始行、消息头和消息体组成,分为请求消息和响应消息,区别在于消息的起始行是否包含状态信息。SIP请求消息定义了6种方法:

  • REGISTER注册:UAC启动时告诉注册服务器自身的位置
  • INVITE邀请:UA发起会话邀请
  • ACK: 被呼叫方在收到邀请后,回应200或180表示确认,ACK表示主叫方收到确认信息,会话建立成功
  • CANCEL:被呼叫方取消主叫方的会话邀请
  • BYE:会话参与者有一方想退出已建成功的会话,发起BYE消息
  • OPTIONS:查询代理服务器的能力和负载情况

响应消息有6种,包含临时应答、请求成功、位置异常通知、请求失败通知、服务器故障或全局错误

SIP协议支持消息扩展,消息类型、消息头和消息体都可以扩充,如以下几种情况

  • 将电话信令集成到sip消息中,以解决公共交换电话网和sip网络和互联
  • 解决跨网域的防火墙和NAT通信问题
  • refer事件扩展,支持呼叫转移

Dialog(对话)

对话是两个UAS(user agent) 之间持续一段时间的端到端(peer-to-peer)的SIP 关系.。一个对话由一个Call-ID、一个local tag 和 一个remote tag来标识,对话过去也叫做 “call leg”。dialog的建立是收到UAS的响应(To tag)时开始建立的。收到180响应时建立dialog叫做早期对话(early dialog),收到2XX的应答开始才是真正的dialog建立。

当UA发送初始INVITE请求后,只有接收到失败响应才有可能建立DIALOG。通过Callid、From域中的tag参数和To域中的tag参数来唯一标识DIALOG。 From域中的参数由主叫添加,To域中的参数由被叫添加。

Transaction(事务)

事务发生于客户端和服务器端之间,包含从客户端发出请求给服务器,到服务器响应给客户端的最终消息(non-1xx message)之间的所有消息.。如果请求是一个"Invite"消息,并且最终的响应是一个non-2xx消息,那么该事务包含一个"Ack"响应消息。如果服务器的响应是一个2xx消息,那么,随后的ACK是一个单独的事务。

以下是Transaction和Dialog关系图:

在这里插入图片描述

Session(会话)

Session是媒体交换之后才建立的,具体而言就是通过offer/answer方式交换sdp的媒体。session的建立可以使INVITE-200 也可以是200-ACK。这要看媒体的交换发生的时间。 具体来说,INVITE 中的消息体用sdp语言来描述自己可处理的媒体类型,200OK中 带回UAS端可处理的媒体类型,这个时候媒体交换就算是完成了,也就是session建立起来了。

SIP会话过程

SIP协议同HTTP协议相似并采用了一些相同的设计原则如客户端UAC/服务端UAS模型

  • 主动发起请求端为UAC端
  • 接受请求端为UAS端

一个请求的完整称为一个事务,以一个或者多个响应结束,中间可以支持多个临时响应,在这个过程中UAC和UAS的角色是可以互换的,如一次呼叫事务中A发起呼叫,A是UAC,另一端是UAS;呼叫结束时谁先挂机谁是UAC,另一端是UAS。

SIP协议以INVITE请求,以SIP URL的方法表示发起,以BYE请求来结束。根据不同的网络结构分为三种方式:两个UA之间直接进行呼叫、通过代理服务器呼叫和通过重定向的方式呼叫。SIP一般需要使用以下协议完整一次完成的通信:

  • SDP:SDP协议描述了会话所使用流媒体细节,如:会话名称、会话时间、会话参与者所支持的多媒体种类、传输协议类型、使用哪个IP端口、采用哪种编解码器等信息
  • RTP: 实时传输协议
  • RTCP: 实时传输控制协议,和 RTP一起工作的控制协议
  • TLS:提供安全性和完整性保障
一对一呼叫

无代理服务器的会话创建过程,直接实现SIP的消息发起和响应过程
在这里插入图片描述

通过代理服务器呼叫

在这里插入图片描述

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

通过重定向呼叫

UAC通过重定向服务器获得真是UAS地址后,之后的通信过程和一对一的呼叫过程一样
在这里插入图片描述
在200 OK传输过程如果对端在超时后没有收到,则说明该丢失要重新发送,直到UAS收到ACK请求,确保可靠性传输的完全完成。

业务过程和协议流程

注册流程

在这里插入图片描述
(1)用户首次试呼时,终端代理A 向代理服务器发送REGISTER 注册请求;

(2)代理服务器通过后端认证/计费中心获知用户信息不在数据库中,便向终端代理回送401Unauthorized 质询信息,其中包含安全认证所需的令牌;

(3)终端代理提示用户输入其标识和密码后,根据安全认证令牌将其加密后,再次用REGISTER 消息报告给代理服务器;

(4)代理服务器将REGISTER 消息中的用户信息解密,通过认证/计费中心验证其合法后,将该用户信息登记到数据库中,并向终端代理A 返回成功响应消息200 OK。

b、注销流程

在这里插入图片描述
(1)终端向代理服务器发送register消息注销,其头中expire字段设置为0。

(2)代理服务器在收到后送回200OK响应,并将数据库中的用户有关消息注销。

c、 基本呼叫建立过程:

在这里插入图片描述
(1)用户摘机发起一路呼叫,终端代理A向该区域的代理服务器发起Invite请求;

(2)代理服务器通过认证/计费中心确认用户认证已通过后,检查请求消息中的Via头域中是否已包含其地址。若已包含,说明发生环回,返回指示错误的应答;若没有问题,代理服务器在请求消息的Via头域插入自身地址,并向Invite消息的To域所指示的被叫终端代理B传送Invite请求。

(3)代理服务器向终端代理A发送呼叫处理中的应答信息:100Trying。

(4)终端代理B向代理服务器送呼叫处理中的应答信息:100Trying。

(5)终端代理B指示被叫用户振铃,用户振铃后向代理服务器发送180Ringing振铃信息。

(6)代理服务器向终端代理A转发被叫用户振铃信息。

(7)被叫用户摘机,终端代理B向代理服务器返回表示连接成功的应答(200OK)

(8)代理服务器向终端代理A转发该成功指示(200OK)

(9)终端代理A收到信息后,向代理服务器发ACK信息进行确认

(10)代理服务器将ACK确认消息转发给终端代理B。

(11)主被叫用户之间建立通信连接,开始通话。

d、正常呼叫释放过程:

在这里插入图片描述
(1) 正常呼叫

(2) 用户通话结束后,被叫用户挂机,终端代理B向代理服务器发送Bye消息。

(3) 代理服务器转发Bye消息至终端代理A,同时向认证、计费中心发送用户通话的详细信息,请求计费。

(4) 主叫用户挂机后,终端代理A向代理服务器发送确认挂断响应信息200OK。

(5) 代理服务器转发响应信息200OK。

e、 会话更改流程:

在这里插入图片描述
(1)用户代理服务端和代理客户端正常通话。

(2)用户代理服务端向用户代理客户端发送Invite信息,带有新的SDP协商信息。

(3)用户处理客户端回复200OK,并将协商后的SDP信息带回。

(4)用户代理服务端发送ACK给用户代理客户端进行确认。

f、 被叫忙呼叫释放:

在这里插入图片描述
(1)用户摘机发起一路呼叫,终端代理A向该区域代理服务器发起Invite请求;

(2)代理服务器向被叫终端代理B传送Invite请求。

(3)代理服务器向终端代理A发送呼叫处理中的应答信息:100Trying。

(4)终端代理B向代理服务器送呼叫处理中的应答信息:100Trying。

(5)呼叫请求送到被叫终端代理B后,被叫忙,终端代理B向代理服务器送486被叫忙响应。

(6)代理服务器向终端代理A转发该响应消息。

(7)终端代理A向代理服务器回送ACK确认消息。

(8)代理服务器向终端代理B送ACK确认信息。

g、被叫无应答流程一:

在这里插入图片描述

(1)用户摘机发起一路呼叫,终端代理A向该区域代理服务器发起Invite请求;

(2)代理服务器向被叫终端代理B传送Invite请求。

(3)代理服务器向终端代理A发送呼叫处理中的应答信息:100Trying。

(4)终端代理B向代理服务器送呼叫处理中的应答信息:100Trying。

(5)被叫用户振铃,终端代理B向代理服务器送180Ring响应。

(6)代理服务器向终端代理A转发该响应信息。

(7)被叫久振铃无应答,终端代理A判断超时后向代理服务器送Cancel消息放弃该呼叫。

(8)代理服务器收到Cancel消息后,向终端代理A回送200OK响应。

(9)代理服务器将Cancel消息转发给终端代理B。

(10)终端代理B向代理服务器回送200OK响应。

(11)终端代理B向代理服务器送487请求已撤销的响应信息。

(12)代理服务器收到后回送ACK确认。

(13)代理服务器向终端代理A送487请求已撤销消息。

(14)终端代理A向代理服务器回送ACK确认。

注:以上步骤中的(10)到(12)无严格顺序关系。

h、被叫无应答流程二:

在这里插入图片描述
(1)用户摘机发起一路呼叫,终端代理A向该区域代理服务器发起Invite请求;

(2)代理服务器向被叫终端代理B传送Invite请求。

(3)代理服务器向终端代理A发送呼叫处理中的应答信息:100Trying。

(4)终端代理B向代理服务器送呼叫处理中的应答信息:100Trying。

(5)被叫用户振铃,终端代理B向代理服务器送180Ring响应。

(6)代理服务器向终端代理A转发该响应信息。

(7)被叫久振铃无应答,终端代理B判断超时后向代理服务器送408Requesttimeout消息放弃该呼叫。

(8)代理服务器收到408Requesttimeout消息后,转发该消息给终端代理A。

(9)代理服务器回送ACK确认给终端代理B。

(10)终端代理A向代理服务器回送ACK确认。

注:以上步骤中的(9)到(10)无严格顺序关系。

i、遇忙呼叫前转:

在这里插入图片描述
(1)用户摘机发起一路呼叫,终端代理A向该区域代理服务器发起Invite请求;

(2)代理服务器向被叫终端代理B传送Invite请求。

(3)代理服务器向终端代理A发送呼叫处理中的应答信息:100Trying。

(4)终端代理B向代理服务器送呼叫处理中的应答信息:100Trying。

(5)终端代理B忙线中,B向代理服务器发送486Busy Here响应。

(6)代理服务器向终端代理B发送ACK确认消息。

(7)代理服务器对此呼叫进行前转,向代理服务器C发送Invite请求消息。

(8)代理终端C收到后指示用户振铃,同时向代理服务器发送180Ringing响应。

(9)代理服务器向A转发收到的180Ringing响应。

(10)被叫用户C摘机接听电话,终端代理C向代理服务器返回表示连接成功的应答(200OK)

(11)代理服务器向终端代理A转发该成功指示(200OK)

(12)终端代理A收到信息后,向代理服务器发ACK信息进行确认

(13)代理服务器将ACK确认消息转发给终端代理B。

建立通信连接,开始通话。

(14)主叫用户挂机,终端代理A向代理服务器发送Bye消息,请求挂机。

(15)代理服务器转发Bye消息至终端代理C,指示C挂机。

(16)终端代理C向代理服务器发送确认挂断响应信息200OK。

(17)代理服务器转发响应信息200OK至A。

j、无应答呼叫前转流程:

在这里插入图片描述
(1)用户A摘机发起一路呼叫,终端代理A向该区域代理服务器发起Invite请求;

(2)代理服务器向被叫终端代理B传送Invite请求。

(3)代理服务器向终端代理A发送呼叫处理中的应答信息:100Trying。

(4)终端代理B向代理服务器送呼叫处理中的应答信息:100Trying。

(5)被叫用户振铃,终端代理B向代理服务器送180Ring响应。

(6)代理服务器向终端代理A转发该响应信息。

(7)被叫久振铃无应答,代理服务器判断超时后向代理终端B送Cancel消息放弃该呼叫。

(8)代理终端B收到Cancel消息后,向代理服务器回送200OK响应。

(9)终端代理B向代理服务器送487请求已撤销的响应信息。

(10)代理服务器向终端代理B回送200OK响应。

(11)代理服务器对此呼叫进行前转,向代理服务器C发送Invite请求消息。

(12)代理终端C收到后指示用户振铃,同时向代理服务器发送180Ringing响应。

(13)代理服务器向A转发收到的180Ringing响应。

(14)被叫用户C摘机接听电话,终端代理C向代理服务器返回表示连接成功的应答(200OK)

(15)代理服务器向终端代理A转发该成功指示(200OK)

(16)终端代理A收到信息后,向代理服务器发ACK信息进行确认

(17)代理服务器将ACK确认消息转发给终端代理C。

建立通信连接,开始通话。

(18)主叫用户挂机,终端代理A向代理服务器发送Bye消息,请求挂机。

(19)代理服务器转发Bye消息至终端代理C,指示C挂机。

(20)终端代理C向代理服务器发送确认挂断响应信息200OK。

(21)代理服务器转发响应信息200OK至A。

k、 呼叫保持:

在这里插入图片描述
(1)用户摘机发起一路呼叫,终端代理A向该区域的代理服务器发起Invite请求;

(2)代理服务器通过认证/计费中心确认用户认证已通过后,检查请求消息中的Via头域中是否已包含其地址。若已包含,说明发生环回,返回指示错误的应答;若没有问题,代理服务器在请求消息的Via头域插入自身地址,并向Invite消息的To域所指示的被叫终端代理B传送Invite请求。

(3)代理服务器向终端代理A发送呼叫处理中的应答信息:100Trying。

(4)终端代理B向代理服务器送呼叫处理中的应答信息:100Trying。

(5)终端代理B指示被叫用户振铃,用户振铃后向代理服务器发送180Ringing振铃信息。

(6)代理服务器向终端代理A转发被叫用户振铃信息。

(7)被叫用户摘机,终端代理B向代理服务器返回表示连接成功的应答(200OK)

(8)代理服务器向终端代理A转发该成功指示(200OK)

(9)终端代理A收到信息后,向代理服务器发ACK信息进行确认

(10)代理服务器将ACK确认消息转发给终端代理B。

(11)主被叫用户之间建立通信连接,开始通话。

(12)代理终端B向代理服务器发送Reinvite消息,SDP的c域等于0,0,0,0。

(13)代理服务器转发此信息给代理终端A。

(14)代理终端A收到Reinvite后回应200OK响应。表示接受会话更改,同事根据协商结果修改会话方式。

(15)代理服务器转发200OK给代理终端B。

(16)代理终端B收到消息后向代理服务器发送ACK消息进行确认。

(17)代理服务器将ACK确认消息转发到代理终端A。

l、呼叫等待:

在这里插入图片描述

(1)AB正常通话。

(2)在AB通话的阶段,用户C向A发起呼叫,终端代理C发送Invite消息给代理服务器。

(3)代理服务器向终端C回送100Trying响应,表示呼叫已在处理中。

(4)代理服务器把Invite消息转发给A。

(5)用户A振铃,并且终端A向代理服务器发送180Ring响应。

(6)代理服务器向终端C转发该响应信息。

(7)用户A按下呼叫保持键,代理终端A向代理服务器发送Invite消息,请求与代理终端C呼叫保持。

(8)代理服务器转发此消息给终端代理B。

(9)代理服务器向终端A回送100Trying响应,表示呼叫已在处理中。

(10)终端B收到呼叫保持请求后,发送200OK给代理服务器,表示接受呼叫保持。

(11)代理服务器转发200OK响应给终端代理A。

(12)代理终端A收到消息后向代理服务器发送ACK消息进行确认。

(13)代理服务器将ACK确认消息转发到代理终端B。

(14)终端代理A发送200OK给代理服务器,表示接受C的呼叫。

(15)代理服务器转发200OK给终端代理C。

(16)终端代理C向代理服务器回送ACK确认。

(17)代理服务器向代理终端A转发收到的ACK确认。

A、C之间开始通话。

(18)用户A挂机,终端代理A向代理服务器发送Bye请求消息。

(19)代理服务器转发Bye消息给终端代理B。

(20)终端代理C发送200OK给代理服务器,表示接受请求。

(21)代理服务器转发200OK响应给终端代理A。

(22)终端代理C重新发送Invite请求给代理服务器,请求和终端代理B恢复通话。

(23)代理服务器向代理终端B转发收到的Invite请求。

SIP协议与P2P协议结合

SIP协议高度依赖Internet环境和服务器,如断网或者服务器崩溃的情况,即使同一个局域网的SIP终端也无法通信,除此之外大规模的UA设备都使用服务端通信将极大的消耗服务带宽资源。一般的处理方案是引入P2P等技术形成优势互补。解决以下3个问题:

  • SIP对服务器、网络依赖高的问题
  • P2P的NAT穿透问题
  • 客户端移动性的问题

真实的通信场景下还要考虑网络抖动、延迟条件下的可靠通信

参考

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GB28181是中国国家标准,用于视频监控系统中的视频流传输和设备管理。而SIP(Session Initiation Protocol)是一种用于建立、修改和终止多媒体会话的通信协议。 将GB28181转换为SIP是指将视频监控系统中的视频流传输和设备管理功能,通过SIP协议进行传输和控制。这样做的好处是可以实现视频监控系统的集成和互操作性。 在将GB28181转换为SIP时,需要进行以下步骤: 1.建立适配器:首先需要建立一个适配器,用于将GB28181的数据转换为SIP协议的数据。这个适配器可以将GB28181的视频流转换为SIP标准的RTP流,并将设备管理信息转换为SIP协议的控制消息。 2.配置参数:配置适配器的参数,包括SIP服务器的地址和端口,以及要使用的编解码器等。 3.设备注册:将监控设备注册到SIP服务器上,以便实现设备的管理和控制。设备可以向SIP服务器发送注册请求,将自己的信息注册到服务器,并接收服务器返回的注册成功消息。 4.媒体传输:通过SIP协议传输视频流和其他多媒体数据。监控设备将视频流封装为RTP包,并通过SIP协议发送给接收方,接收方可以解析RTP包获取视频流。 通过将GB28181转换为SIP,可以实现不同品牌、不同厂商的视频监控设备之间的互联互通。不仅可以提高视频监控系统的整体性能和效果,还可以实现多设备的统一管理和控制。这对于提高视频监控系统的可扩展性和灵活性非常有益。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值