亚博2022手机登录网址|最新版官网—完整SIP/SDP媒体协商概论-SIP/WebRTC提要
日期:2023-02-09 03:22:02 | 人气:
Session Description Protocol(简称是SDP)全称是会话形貌协议,此协议用来建立一种协商机制,这种协商机制是由呼叫控制协议建立的介于两个呼叫用户之间的会话举行,协商机制支持的四大协商方式主要包罗:功效协商性能协商语音和视频的宁静设置协商在多媒体集会中的数据协商为了说明SDP的详细内容讨论,我们首先需要明确呼叫控制协议的观点。现在,绝大部门的呼叫控制协议中,我们主要使用SIP和WebRTC来实现呼叫控制。
因为篇幅所限和实用性的思量,我们仅先容SIP协议和WebRTC协议。SIP协议已经存在了许多年,已经普遍使用在VoIP的绝大部门场景中,WebRTC是最近几年比力热门的实时通信协议,也逐渐进入了应用场景中。本章节,我们将先从呼叫控制协议先容开始,先容SIP协议基本内容和WebRTC协议的基础知识。图片来自于互联网资源注意:如果一些读者已经具备了基本的SIP协议和WebRTC协议的基础,可以跳过本章节的基础先容。
如果读者想相识更多完整的SIP协议和WebRTC先容文档,可以查阅本民众号历史文档来进一步学习。这里,仅为了为SDP协议的先容做一个简朴的SIP和WebRTC的回首先容。1呼叫控制协议我们知道,一个简朴的电话呼叫涉及了许多其他辅助功效,其目的是保证此呼叫功效正常,而且保证运营层面的业务监控也正常事情。
呼叫控制协议是电话网络情况中一个必不行少的环节,其主要功效大致包罗呼叫数据流量路由控制,增值服务计费支撑,终端之间的毗连性,可靠性传输机制,信令控制和媒体通信等功效。在传统的或者现在的基础网络中,许多控制协议仍然是焦点的协议,例如,Q.931和H323等详细协议。此观点将会涉及太多的底层细节的协议和历史先容,例如,PRI和R2,SS7等相关协议。
因为篇幅和文章主题的关系,我们不再讨论。有兴趣的读者可以查阅一些常用的文章来增补这方面的知识。通过以上简朴先容,我们知道,如果实现一个简朴的,哪怕最简朴的呼叫都需要呼叫控制协议到场,否则没有措施提倡呼叫,也没有措施对呼叫拆线执行挂机。
在现在大家很是熟悉的VoIP情况中,SIP是一种很是常见的呼叫控制协议,基本上是现在主流的呼叫控制协议。另外,WebRTC也是我们正在逐步使用的呼叫控制协议。
我们在本文章后续部门就重点回首这两种协议,为未来进一步深入讨论SDP做一个准备事情。2SIP协议提要SIP全称是Session Initiation Protocol。
它是我们重点先容的一种呼叫信令控制协议,用来建立,修改和拆线基于网络通信的会话,会话由语音视频和多方视频数据等组成,通过RFC3261的划定的请求实现。SDP作为消息体的在SIP交互中卖力双方媒体协商,支持能力的协商。另外,SIP使用RTP/RTCP的传输参数支持语,视频和数据的参数。因此,SDP和RTP/RTCP是建立SIP媒体会话的最基本的要求。
图片来自于互联网资源任何协议都有其规范的语法结构,SIP协议也是一样的。它的基本语法结构和HTTP的HTML语法类似。其信令消息包罗两个部门:消息头和消息体。
通过种种语法参数设置来支持SIP协议中的支持能力,协商和应用层级的通信。SIP头消息主要目的是对从呼叫方到被呼叫方的SIP消息举行路由治理,信令消息中包罗一个Request-line,它由请求类型,目的地的SIP URL,或下一跳(next hop),另有SIP版本组成等。取决于消息体类型,消息体是一个可选项。SIP消息中的消息头和消息体通过空缺行来加以区分。
消息体构建有太多话题可以讨论,如果读者有兴趣的话,可以参考RFC 3261-13.2.1章节。如果SIP请求中建立的会话中包罗了会话形貌的详细消息内容,会话形貌中包罗了双方的媒体类型和编码等,那么,消息体中将会作为SDP包罗这些会话形貌的消息内容。因为SDP消息包罗了许多参数设置,涉及了太多SIP消息的头和消息体设置,因此,关于SIP消息的内容,我们这里需要再花费一点时间做进一步的先容,以便资助读者相识后续章节中的SDP内容讨论。
RFC3261划定了SIP协议的消息花样,凭据官方的形貌说明,虽然其语法和HTTP/1.1类似(客户-服务器端协议架构),可是SIP协议是一种请求-响应机制的处置惩罚方式,通过双方请求消息和对方响应消息来实现信令的协商。因此,其消息组成包罗起始行,一个或者多个头消息,空行(表现头消息竣事),最后,另有一个可选消息体组成。generic-message = start-line*message-headerCRLF[ message-body ]start-line = Request-Line / Status-Line详细关于SIP消息的语法结构,读者可以参考RFC3261-7章节。提醒读者,凭据RFC3261的划定,无论是否有可选消息体存在,空行是必须保留的。
在SIP消息底部的start-line部门,读者可以看到,它可以支持Request-Line或者Status-Line。如果是从客户端对服务器端发送请求的话,start-line就是Request-Line,它包罗请求method名称,请求URL,协议版本和CRLF,它们通过一个单倍行距离隔(SP字符)。没有其他分外的空格或者其他字符。
SIP消息中Request-Line详细用法花样为:Request-Line = Method SP Request-URI SP SIP-Version CRLF在以上语法中,SIP支持了以下Methods:REGISTER:用户注册MethodINVITE,ACK,和CANCEL:用来呼叫和建立会话BYE:竣事会话OPTIONS:查询服务器端支持能力MESSAGE:即时谈天REFER:呼叫转移SUBSCRIBE和NOTIFY :SIP会话相关的事件治理PUBLISH:公布SIP指定事件状态UPDATE :更新会话参数INFO:支持mid-session 信息转发PRACK:类似请求确认除了我们提到的请求和以上的Request-Line中的method以外,服务器端回复响应消息来表现对请求的处置惩罚状态。响应中的Status code是一个重要的标识。详细的状态码如下:在日常的排查运动中,系统技术人员需要以上状态码来判断系统所处状态。
固然,在六大状态分类中,另有其子分类,子分类中包罗了越发详细的说明。用户可参考RFC 3261-13.2.2(处置惩罚INVITE响应)和21章节来学习,这里不再讨论。
固然,除了请求methods和响应状态码以外,因为消息体可能需要通过SIP署理/转发服务器和注册服务器的处置惩罚节点,因此消息体具有很强的灵活性,它可以被读取,被修改,被移除或者重新处置惩罚,为了满足多种场景的响应,消息体也可能增加一些须要的拓展,包罗SIP可选tags标签,修改SIP标签,同时可能增加支持Content type的头域,以下这些头域都可能添加到消息体中:Allow, Allow-Events, Content-Disposition, Content-Encoding, Content-Language, Content-Length和Content-Type。以上这些头域值得先容在RFC3261-20,此章节先容了详细的界说。另外,在SIP消息中,读者需要相识基本的消息花样,其中请求消息花样和响应消息告诉都有差别的语法结构。两者的消息内容有显着的区别:请求消息花样包罗三个主要部门:Request-Line,Header和Message-Body。
响应消息花样包罗三个主要部门:Status-Line,Header和 Message-Body。请求消息花样和响应消息花样对好比下:请求消息花样规范响应消息花样规范关于消息体更多的划定,读者可以参考RFC3261-7章节。接下来,我们讨论一下关于SIP在网络拓扑中和其他相关协议的关联性。
SIP是一种应用层的协议规范,和其他的前面所提到的协议同属应用层的协议。它的目的是用来实现网络媒体的建立服务,电话呼叫,电话集会,视频集会,媒体共享等应用。在这些应用服务中,终端需要支持差别的数据形式,语音编码,数据文件,视频编码等。
在这些数据交流的历程中,用户之间的通信可能通过UDP传输/TCP传输方式来传输RTP,也需要RTCP来对媒体流传输控制举行处置惩罚。因此,SIP协议协议配合其他的协议完成整个通信服务的处置惩罚,其相关协议如下示例图所示:SIP和其他相关协议的关系通过以上图例读者可以看到,事实上,在一个普通的应用情况中,一个情况可能涉及了许多终端和服务器端以及种种应用法式的协商支持,通过确保双方功效协商和性能能力的协商,确保双方具有一系列配合确认的参数才气举行通信(例如,传输方式是否相同,端口是否一致,编码是否支持)。
因此,双方都认可的,尺度的,配合支持的协商机制是必不行少的。SDP就是SIP协议中举行协商的尺度机制。通过以上对SIP以及基本语法的先容,我们或许相识了SIP的消息和一些须要的请求响应消息体组成。接下来,笔者从宏观的角度先容一下SIP网络技术情况中一些焦点的实体构件,包罗支持SIP场景的客户端和服务器端的功效,以及SIP/SDP整体协商流程。
如果我们从最基本的SIP网络组成中讨论的话,基本的SIP网络组成包罗以下几个焦点的模块:种种UA,注册服务器,转发服务器,定位服务器和署理服务器,另有应用服务器等。如果实现完整的SIP媒体通信的话,SIP需要支持至少五种功效:定位服务:决议通信使用的最终终端系统。
用户有效性:决议被呼叫方是否有意愿加入到通信情况中。用户媒体支持能力:决议双方通信所需要的媒体和媒体参数会话建立:建立会话,启动ring振铃等。会话治理:转接,修改会话参数,提倡其他服务,竣事会话等。
通过以上五种功效的支持,SIP网络中的焦点构件才气乐成事情。这些焦点模块卖力以上五种能力的支持。固然,随着当前SIP网络的应用场景不停变化和用户业务需求的变化,SIP网络中有可能种种服务器的部署不是牢固的,因此此图例纷歧定完全表现所有的应用场景。
关于SIP服务器端的讨论,用户可以参考笔者历史文章做进一步的学习。种种SIP UA和服务器端组成在以上图例中,我们看到一些焦点的模块包罗了SIP UA(User Agent),UA又可分为UAS和UAC,另外,UA是以客户端-服务器端模式的模式事情的用户,这表现一个UA实体,为了满足SIP的逻辑实体的要求,它既可能是UAC,又可能是UAS,也是我们通常所的背靠背署理方式。
如下示例说明晰一个应用场景中两个SIP终端通过两个署理的呼叫流程:两个UA通过差别署理举行呼叫整体协商流程两个UA首先注册到各自的服务器端,然后通过服务器呼叫另外一个终端。读者需要注意,这里假设,Alice在F5 INVITE(标识部门)已经携带了本端SDP的媒体支持能力,而且,Bob收到服务器端通过F8 INVITE发送到请求,也回复了可接受的媒体支持能力。双方都协商一致,然后开始语音媒体流发送(F19)。
UA又凭据详细呼叫控制角色差别,可能划分为差别的UA使用角色,电话集会就是一个例子。RFC4579中界说了电话集会中的在SIP 构件中UA界说:Conference-unaware UA:最简朴的UA,到场电话集会,忽略了所有SIP相关消息。此UA可通过拨号加入集会或者被邀请加入集会。
它仅支持RFC 3261规范。Conference-aware UA-此UA可以支持呼叫控制,另外可以支持SIP转发处置惩罚,也可以订阅消息等。Focus-控制提倡集会,卖力集会呼叫控制,包罗一个Conference-aware UA。
我们前面已经讨论,SIP服务器类型支持了多种处置惩罚方式,而且都具有差别的处置惩罚流程。有时,这些服务器的功效定位可能相互交织,因此一些读者可能比力疑惑。如果读者单纯从界说上了明白的话,可能有引起许多误解,读者可以查阅笔者的历史文档来明白这些观点:IPPBX的事情模式SBC/B2BUA的处置惩罚方式深入明白SIP服务器的注册和定位服务流程3关于WebRTC基本先容前面,我们简朴概述了SIP协议作为呼叫控制协议的基本内容,使用消息体中的SDP参数举行呼叫媒体协商。WebRTC以上一种呼叫控制协议,只是WebRTC使用的是浏览器的方式。
这里,笔者不计划花费时间再先容一次WebRTC,笔者以前公布过一篇关于WebRTC的提要,读者通过此文章基本上可以明白WebRTC的基本要点:完整WebRTC技术及应用提要4总结一个最基本的呼叫场景都至少需要两个部门来完成。首先是呼叫控制协议的建立,然后才气实现SDP 媒体协商的流程。因此,在本章节中,我们先容了呼叫控制协议的基本观点,接下来,笔者先容了呼叫控制协议中的SIP协议和WebRTC协议。
在SIP协议的提要先容中,我们先容了SIP消息的基本结构和焦点模块。通过这些基本的先容,为我们后续关于SDP的深入讨论打下一个基础。在后续章节中,我们将逐步先容SDP和其相关规范。
再次说明,在本章节中,笔者针对SIP和WebRTC的先容仅是为了在后续章节中为SDP讨论做一个铺垫作用,可能有一些内容不是读者所希望相识的,望见谅。参考资料:https://www.ccexpert.us/network-design/call-control-and-transport-protocols.htmlhttps://ribboncommunications.com/company/get-help/glossary/call-controlhttps://tools.ietf.org/html/rfc5589https://en.wikipedia.org/wiki/Skinny_Call_Control_Protocolhttps://www.itu.int/rec/T-REC-Q.1912.5-200403-S/enhttps://tools.ietf.org/html/rfc3261关注微信民众号:asterisk-cn,获得有价值的Asterisk行业分享Asterisk freepbx FreeSBC技术文档: www.freepbx.org.cn融合通信/IPPBX商业解决方案:www.hiastar.com如何使用FreeSBC,qq技术分享群:334023047。
本文关键词:完整,SIP,SDP,媒体,协商,概论,亚博2022手机登录网址,-SIP,WebRTC,提要,
本文来源:亚博2022手机登录网址-www.kelon-bj.com