掌桥专利:专业的专利平台
掌桥专利
首页

一种基于增强型TCP的流媒体数据交互方法

文献发布时间:2024-01-17 01:27:33


一种基于增强型TCP的流媒体数据交互方法

技术领域

本发明涉及流媒体交互技术领域,特别指一种基于增强型TCP的流媒体数据交互方法。

背景技术

实时性的流媒体应用占据了互联网流量中相当大的一部分比重,并且还在逐步上升中。TCP/UDP传输层并不直接支持这些流媒体应用的流量在延迟、消息间依赖上的要求,开发者必须在应用层重新实现这些功能,这些重新实现的功能在不同流媒体应用间可能会带来不良的交互性,并对整个网络的稳定性带来影响。

流媒体应用通常会同时使用到TCP与UDP,单纯使用其中之一难以满足所有流媒体应用应用要求的功能,而类似SCTP与DCCP之类的全新协议虽然能满足需求,但在部署上会遇到阻碍,即防火墙与网络中的中间设备可能只会接受TCP/UDP,并拦截其他任何其他类型的流量。

因此,如何提供一种基于增强型TCP的流媒体数据交互方法,实现提升流媒体数据交互的实时性以及兼容性,成为一个亟待解决的技术问题。

发明内容

本发明要解决的技术问题,在于提供一种基于增强型TCP的流媒体数据交互方法,实现提升流媒体数据交互的实时性以及兼容性。

本发明是这样实现的:一种基于增强型TCP的流媒体数据交互方法,包括如下步骤:

步骤S10、发送端的第一流媒体应用向第一中间层传输消息数据以及时标信息;

步骤S20、第一中间层在所述消息数据后追加流标识符之后,将所述消息数据以及时标信息编码并封装成TCP报文,将所述TCP报文发送给第一传输层,并在第一内核空间中关闭消息缓冲机制;

步骤S30、发送端通过第一传输层,将所述TCP报文无序转发给接收端;

步骤S40、接收端通过第二传输层接收所述TCP报文,通过第二内核空间对接收的所述TCP报文进行无序交付;

步骤S50、接收端通过第二中间层对无序交付的所述TCP报文进行重组和完整性校验,生成校验结果发送给发送端;

步骤S60、发送端基于接收的所述校验结果向接收端重传对应的TCP报文;

步骤S70、第二中间层将重组后得到的流媒体数据发送给接收端的第二流媒体应用。

进一步地,所述步骤S10具体为:

发送端的第一流媒体应用通过API接口向第一应用空间提供的第一中间层传输消息数据以及时标信息;所述时标信息用于校验消息数据的有效性。

进一步地,所述步骤S20具体为:

第一中间层在所述消息数据后追加流标识符之后,通过COBS编码算法将所述消息数据以及时标信息编码并封装成TCP报文,将所述TCP报文发送给第一传输层,并在第一内核空间中关闭Nagle算法进而关闭消息缓冲机制。

进一步地,所述步骤S30具体为:

发送端通过第一传输层,基于TCP协议实时将所述TCP报文无序转发给接收端。

进一步地,所述步骤S40中,所述无序交付具体为:

各所述TCP报文到达时自动生成一附带流标识符以及报文长度的元数据项,第二内核空间将所述TCP报文以及元数据项存储至内核队列中;

基于所述流标识符判断当前的TCP报文失序,或者重组缓冲区存在其他的所述TCP报文时,第二内核空间暂存当前的所述TCP报文的负载;

第二中间层基于所述流标识符向socket读取负载。

进一步地,所述负载包括消息数据以及时标信息。

进一步地,所述步骤S50具体为:

接收端的第二中间层通过预设的帧标记对各所述TCP报文进行拆分,得到消息数据,通过COBS解码算法将各所述消息数据重组还原成流媒体数据,对所述流媒体数据进行完整性校验生成校验结果,若校验结果为完整,则进入步骤S70;若校验结果为不完整,则将所述校验结果发送给发送端。

进一步地,所述步骤S50中,所述校验结果携带流标识符以及校验时间。

进一步地,所述步骤S60具体为:

发送端接收并解析所述校验结果,当所述校验结果为不完整时,基于所述校验结果携带的流标识符匹配对应的TCP报文,基于所述TCP报文携带的时标信息进行有效性校验,若有效,则将所述TCP报文重传给接收端;若无效,则进行下一条需要重传的所述TCP报文的有效性校验。

进一步地,所述发送端设有第一应用空间以及第一内核空间,所述第一应用空间用于提供API接口与消息结构的第一中间层,所述第一内核空间用于TCP报文的重传;

所述接收端设有第二应用空间以及第二内核空间,所述第二应用空间用于提供第二中间层来处理TCP报文,所述第二内核空间用于TCP报文的无序交付。

本发明的优点在于:

通过发送端的第一流媒体应用向第一中间层传输消息数据以及时标信息,第一中间层在消息数据后追加流标识符,并将消息数据以及时标信息编码封装成TCP报文发送给第一传输层,并在第一内核空间中关闭消息缓冲机制,发送端通过第一传输层将TCP报文无序转发给接收端;接收端通过第二内核空间对TCP报文进行无序交付,通过第二中间层对无序交付的TCP报文进行重组和完整性校验,发送端基于校验结果向接收端重传对应的TCP报文,接收端的第二中间层将重组后得到的流媒体数据发送给接收端的第二流媒体应用;由于消息缓冲机制会带来延迟,通过关闭消息缓冲机制,结合不对已经失效的TCP报文进行重传,进而极大的提升了流媒体数据交互的实时性;而基于TCP协议来传输流媒体数据,相对于基于UDP实现的实时协议,能降低流量被阻挡得概率,带来部署可用性上得优势,极大的提升了流媒体数据交互的兼容性。

附图说明

下面参照附图结合实施例对本发明作进一步的说明。

图1是本发明一种基于增强型TCP的流媒体数据交互方法的流程图。

具体实施方式

本申请实施例中的技术方案,总体思路如下:通过关闭消息缓冲机制,结合不对已经失效的TCP报文进行重传,以提升流媒体数据交互的实时性;而基于TCP协议来传输流媒体数据能降低被阻挡得概率,以提升流媒体数据交互的兼容性。

请参照图1所示,本发明一种基于增强型TCP的流媒体数据交互方法的较佳实施例,包括如下步骤:

步骤S10、发送端的第一流媒体应用向第一中间层传输消息数据以及时标信息;

步骤S20、第一中间层在所述消息数据后追加流标识符之后,将所述消息数据以及时标信息编码并封装成TCP报文,将所述TCP报文发送给第一传输层,并在第一内核空间中关闭消息缓冲机制;

步骤S30、发送端通过第一传输层,将所述TCP报文无序转发给接收端;

步骤S40、接收端通过第二传输层接收所述TCP报文,通过第二内核空间对接收的所述TCP报文进行无序交付;

步骤S50、接收端通过第二中间层对无序交付的所述TCP报文进行重组和完整性校验,生成校验结果发送给发送端;

步骤S60、发送端基于接收的所述校验结果向接收端重传对应的TCP报文;

步骤S70、第二中间层将重组后得到的流媒体数据发送给接收端的第二流媒体应用。

本发明为一种TCP兼容的传输层协议,提供了无顺序、部分可靠的功能以满足实时的流媒体应用的需求,本发明通过减少延迟与增加效用,拓展了TCP协议在流媒体应用中的可行性;鉴于在UDP上实现类似TCP的拥塞控制与流量控制具有的复杂性,以及许多防火墙对UDP流量会进行阻挡,因此本发明选择TCP作为协议的基层,同时因TCP兼容的特性,即便网络中只有部分机器在系统的传输层部署了本协议,上层应用依然可以正常运行。

所述步骤S10具体为:

发送端的第一流媒体应用通过API接口向第一应用空间提供的第一中间层传输消息数据以及时标信息;所述时标信息用于校验消息数据的有效性。

所述步骤S20具体为:

第一中间层在所述消息数据后追加流标识符(sub-stream)之后,通过COBS编码算法将所述消息数据以及时标信息编码并封装成TCP报文,将所述TCP报文发送给第一传输层,并在第一内核空间中关闭Nagle算法进而关闭消息缓冲机制。

COBS编码算法用于去除消息数据中所有的0字节,而编码后的消息数据前后加上0字节标识符作为帧间分隔符(帧标记),而这一步骤至多增加0.4%的负载大小,并且对上层应用而言是透明的,不会影响最终交付给第二流媒体应用的流媒体数据。

所述步骤S30具体为:

发送端通过第一传输层,基于TCP协议实时将所述TCP报文无序转发给接收端。

所述步骤S40中,所述无序交付具体为:

各所述TCP报文到达时自动生成一附带流标识符以及报文长度的元数据项,第二内核空间将所述TCP报文以及元数据项存储至内核队列中;

基于所述流标识符判断当前的TCP报文失序,或者重组缓冲区存在其他的所述TCP报文时,第二内核空间暂存当前的所述TCP报文的负载;

第二中间层基于所述流标识符向socket读取负载。

所述负载包括消息数据以及时标信息。

所述步骤S50具体为:

接收端的第二中间层通过预设的帧标记对各所述TCP报文进行拆分,得到消息数据,通过COBS解码算法将各所述消息数据重组还原成流媒体数据,对所述流媒体数据进行完整性校验生成校验结果,若校验结果为完整,则进入步骤S70;若校验结果为不完整,则将所述校验结果发送给发送端。

所述步骤S50中,所述校验结果携带流标识符以及校验时间。

所述步骤S60具体为:

发送端接收并解析所述校验结果,当所述校验结果为不完整时,基于所述校验结果携带的流标识符匹配对应的TCP报文,基于所述TCP报文携带的时标信息进行有效性校验,若有效,则将所述TCP报文重传给接收端;若无效,则进行下一条需要重传的所述TCP报文的有效性校验。

TCP原本的可靠传输所依赖的重传机制中的等待会带来延迟,并可能最终因数据太迟到达而对实时的流媒体应用完全无用,本发明在重传前先检查对应的时标信息,只有确定该TCP报文对接收端依然有价值时才进行重传,否则使用队列中下一个时标有效的TCP报文来替代进行重传,并且TCP报文被替代后依然保有与之前完全相同的TCP头部。为了保证TCP报文的完整性,只有完整的TCP报文会被作为替代进行不一致重传(当被重传的TCP报文只包含消息数据部分时,不会对重传的TCP报文的负载进行替换)。

即便发送端不修改系统内核,失去不一致重传功能也只会影响性能,对发生在应用空间中的消息编解码与封装处理不影响,因此在部署上具有极大的便利性。

由于互联网链路中的中间设备非常复杂,一些中间设备检测到TCP报文中的一些标志位不符合预期规则后,会认为发送端异常而自行关闭连接,因此针对TCP应尽量选取不易被链路设备发觉的改动方法。本发明与TCP唯一可在链路上被察觉的区别就是不一致重传,即重传TCP报文的负载段与原报文不一致。通常只有TCP重传缓存器与防火墙会对报文负载进行检测,TCP重传缓存器为了减少网络中重传报文的数量,会代替发送端进行重传,这种情况下虽然会影响本发明的性能但不会断开连接,而防火墙因为对算力要求高,通常只有在企业网入口中少部分部署,权衡之下影响较小暂不予考虑。

所述发送端设有第一应用空间以及第一内核空间,所述第一应用空间用于提供API接口与消息结构的第一中间层,所述第一内核空间用于TCP报文的重传;

所述接收端设有第二应用空间以及第二内核空间,所述第二应用空间用于提供第二中间层来处理TCP报文,所述第二内核空间用于TCP报文的无序交付。

综上所述,本发明的优点在于:

通过发送端的第一流媒体应用向第一中间层传输消息数据以及时标信息,第一中间层在消息数据后追加流标识符,并将消息数据以及时标信息编码封装成TCP报文发送给第一传输层,并在第一内核空间中关闭消息缓冲机制,发送端通过第一传输层将TCP报文无序转发给接收端;接收端通过第二内核空间对TCP报文进行无序交付,通过第二中间层对无序交付的TCP报文进行重组和完整性校验,发送端基于校验结果向接收端重传对应的TCP报文,接收端的第二中间层将重组后得到的流媒体数据发送给接收端的第二流媒体应用;由于消息缓冲机制会带来延迟,通过关闭消息缓冲机制,结合不对已经失效的TCP报文进行重传,进而极大的提升了流媒体数据交互的实时性;而基于TCP协议来传输流媒体数据,相对于基于UDP实现的实时协议,能降低流量被阻挡得概率,带来部署可用性上得优势,极大的提升了流媒体数据交互的兼容性。

虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。

相关技术
  • 一种基于目录文件的数据交互方法
  • 一种基于TCP高可用物联网网关数据交互系统及方法
  • 一种基于TCP/IP的二进制数据交互协议设计方法
技术分类

06120116226298