一种多路复用协议及传输方法与流程

文档序号:26195856发布日期:2021-08-10 08:40阅读:97来源:国知局
一种多路复用协议及传输方法与流程
本发明实施例涉及数据传输
技术领域
,尤其涉及一种多路复用协议及传输方法。
背景技术
:多路复用技术是把多个低速信道组合成一个高速信道的技术,它可以有效的提高数据链路的利用率,从而使得一条高速的主干链路同时为多条低速的接入链路提供服务,也就是使得网络干线可以同时运载大量的语音和数据传输。多路复用技术是为了充分利用传输媒体,人们研究了在一条线路上建立多个通信信道的技术。多路复用技术的实质是,将一个区域的多个用户数据通过发送多路复用器进行汇集,然后将汇集后的数据通过一个线路进行传送,接收多路复用器再对数据进行分离,分发到多个用户。然而,现有的传输控制协议(TransmissionControlProtocol,TCP)和用户数据报协议(UserDatagramProtocol,UDP)多路复用协议的头部字段比较复杂,相较于不复用的情况性能损耗较大,且现有的TCP/UDP多路复用协议仅能支持TCP和UDP协议中的一种。技术实现要素:本发明提供一种多路复用协议及传输方法,以提供一种能够同时支持TCP和UDP协议的简化的多路复用协议。本发明的技术方案为:第一方面,本发明实施例提供了多路复用协议,所述协议采用UDP协议作为底层的通讯协议,所述协议的外层协议包括负载协议、可靠传输头和内层协议数据,所述负载协议为TCP或UDP中的一种,若所述负载协议为TCP,则所述可靠传输头生效,若所述负载协议为UDP,则所述可靠传输头不生效;所述可靠传输头包括数据包类型、序号、时间戳以及窗口大小;所述内层协议数据包括命令、连接ID、数据长度以及数据。可选的,所述命令包括新建连接控制命令、传输数据控制命令以及关闭连接控制命令。可选的,所述连接ID用于将一条链路上的数据做分流,以区分出不同的连接。第二方面,本发明实施例还提供了一种多路复用传输方法,所述方法基于本发明上述实施中任一所述的协议,其特征在于,所述方法由客户端执行,包括:步骤1、在服务器建立UDP监听,并维护一张源IP和源端口到连接ID的映射表;步骤2、当接收到新的数据连接请求时,将所述数据连接请求中的源IP和源端口与映射表中存储的源IP与源端口进行匹配,若匹配成功继续执行步骤3,否则执行步骤5;步骤3、使得连接ID自增,并在所述映射表中新建一个所述数据连接请求中的源IP和源端与自增后的连接ID之间的映射;步骤4、向服务器发送新建连接的控制命令;步骤5、基于所述数据连接请求中的源IP和源端口确定对应的连接ID并构造数据命令,所述数据命令包括连接ID、数据长度以及数据本身;步骤6、若所述数据连接请求中的数据包类型为UDP,则直接向服务器发送该数据包,若所述数据连接请求中的数据包类型为TCP,则通过可靠传输头向服务器发送该数据包,以确保该数据包的送达。可选的,所述方法还包括当连接关闭时,向服务器发送关闭连接控制命令,并删除所述映射表中的所述数据连接请求中的源IP和源端口到连接ID的映射。可选的,在步骤6之前,还包括:采用加密算法对数据连接请求中的数据包进行加密。第三方面,本发明实施例还提供了一种多路复用传输方法,所述方法基于本发明上述实施中任一所述的协议,所述方法由服务器执行,包括:步骤1、对UDP端口进行监听,并维护一张连接ID到连接的映射表;步骤2、接收客户端发送过来的数据包,并对所述数据包进行解密;步骤3、解析数据包类型,若所述数据包类型为TCP,则使用可靠传输协头发送确认字符后继续解析控制命令字段,若所述数据包类型为UDP,则直接解析控制命令字段;步骤4、执行解析控制命令字段得到的命令。本实施例提供的一种多路复用协议,对现有技术的多路复用协议内容进行了简化,并且通过数据包类型来区分TCP协议和UDP协议,使得本实施例提供的协议能够同时支持TCP和UDP连接的多路复用。附图说明图1为本发明实施例提供的一种多路复用协议的总架构图。具体实施方式下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。实施例本实施例中讨论的是面向连接的多路复用和多路分解,也就是网络层所提供的主机到主机的交付服务扩展到为主机上运行的应用程序所提供的进程到进程交付服务。为了解决现有技术中多路复用协议中存在的问题,本实施例提供的一种同时支持TCP和UDP的多路复用协议,为了保持UDP的低时延特性,上述多路复用协议采用UDP协议作为底层的通信协议,同时在此多路复用协议上增加可靠性连接的保证措施,以适应TCP连接的需求。具体的,该多路复用协议的外层协议如下表所示:PROTOCOLREL_HEADERDATA负载协议(1字节)可靠传输头(9字节)内层协议数据(可变长度)上述外层协议是基于UDP的可靠传输协议部分,包括负载协议(PROTOCOL)、可靠传输头(REL_HEADER)和内层协议数据(DATA)。其中,负载协议是TCP或UDP中的一种,若所述负载协议为TCP,则所述可靠传输头生效,若所述负载协议为UDP,则所述可靠传输头不生效。可靠传输头部分与TCP协议中的头部相类似,包括SYN,PSH,ACK等包类型来做数据可靠性保证。所述可靠传输头包括数据包类型(MSG_TYPE)、序号(SEQUENCE)、时间戳(TIMESTAMP)以及窗口大小(WND_SIZE),如下表所示:MSG_TYPESEQUENCETIMESTAMPWND_SIZE包类型(1字节)序号(2字节)时间戳(4字节)窗口大小(2字节)内层协议数据对于TCP和UDP通用,包括命令(CMD)、连接ID(CONN_ID)、数据长度(LEN)以及数据(DATA),如下表所示:CMDCONN_IDLENDATA命令(1字节)连接ID(2字节)负载长度(2字节)负载CMD是连接的控制命令,包括三种命令:1.新建连接控制命令OPEN:新建一个连接;2.传输数据控制命令DATA:传输一个数据包;3.关闭连接控制命令CLOSE:关闭本连接。CONN_ID是一个随连接创建自增的2字节数。CONN_ID在同一个连接中保持一致,该多路复用协议通过CONN_ID将一条链路上的数据做分流,区分出不同的连接。LEN是本数据包的实际所带数据的长度,DATA是数据本身。进一步的,基于上述多路复用协议进行数据传输时,通过可配置的加密算法来对传输的数据进行加密,以保数据传输的安全性。示例性的,数据可以使用AES-256-GCM算法加密传输,加密中使用客户端和服务器约定的KEY作为加密秘钥,并使用随机16字节数据作为初始矩阵,放在数据的起始位置。继续参见图1,图1为本发明实施例提供的一种多路复用协议的总架构图,多路的TCP和UDP连接经过多路复用以及加密后,基于流进行统一传输,解密后经多路分离后又得到不同的连接。与现有协议相比,本协议基于流的多路利用,建立底层复用通道,提升了传统服务器分配过程中容易出现的分配不均、部分服务器压力过载等问题,起到了均衡服务器资源、均衡链路速度的作用。本实施例提供的一种多路复用协议,对现有技术的多路复用协议内容进行了简化,并且通过数据包类型来区分TCP协议和UDP协议,使得本实施例提供的协议能够同时支持TCP和UDP连接的多路复用。此外,还通过可配置的加密来实现连接的安全性。进一步的,基于上述多路复用协议,本发明提供了如下三种可选的实施方式:作为一种可选的实施方式,该实施方式中包含了一种支持多路复用的远端代理服务器,能够减少新建连接的初始化和握手,减少服务器消耗。作为另一种可选的实施方式,该实施方式包含了一个可以用来内网服务暴露在公网的快速的反向代理,从而实现内网穿透,支持tcp、udp流量转发,通过对传输过程中的数据进行加密,实现了数据的传输的安全性,能够保证数据不被窃听和篡改。作为又一种可选的实施方式,该实施方式包含了一个webapi服务器,实现了轻量级高性能HTTP请求路由,经过多路复用后,A站接口访问B接口来请求数据,做成TCP长链接,所有请求走一个通道,这样无论多少个客户端请求都不会导致连接过多问题。在上述多路复用协议的基础上,继续介绍客户端和服务器的传输过程。首先介绍客户端:步骤1、客户端Client与服务器Server通信,需要在服务器建立UDP监听,并维护一张源IP和源端口到连接ID的映射表,即维护一张<源IP:源端口>到CONN_ID的映射表Z;步骤2、当接收到新的数据连接请求时,将所述数据连接请求中的源IP和源端口与映射表Z中存储的源IP与源端口进行匹配,即在映射表Z中寻找所述数据连接请求中的<源IP:源端口>是否存在,若匹配成功继续执行步骤3,否则执行步骤5;步骤3、使得连接ID(CONN_ID)自增,可以每次自增固定的常数,如自增1,并在所述映射表中新建一个所述数据连接请求中的源IP和源端与自增后的连接ID之间的映射;步骤4、向服务器发送新建连接的控制命令OPEN,该OPEN命令中包括了CONN_ID,LEN和DATA置空;步骤5、对于每一个到来的客户端数据,基于数据连接请求中的源IP和源端口确定对应的连接ID(即CONN_ID)并构造数据(DATA)命令,所述数据命令包括连接ID(CONN_ID)、数据长度(LEN)以及数据本身(DATA);步骤6、若所述数据连接请求中的数据包类型(MSG_TYPE)为UDP,则直接向服务器发送该数据包,若所述数据连接请求中的MSG_TYPE为TCP,则通过可靠传输头向服务器发送该数据包,以确保该数据包的送达。进一步的,所述方法还包括:当客户端连接关闭时,向服务器发送关闭连接控制命令CLOSE,该CLOSE命令包括CONN_ID,LEN和DATA置空;并删除所述映射表中的所述数据连接请求中的源IP和源端口到连接ID的映射记录。在步骤6之前,还包括:采用加密算法对数据连接请求中的数据包进行加密。示例性的,上述加密算法可以为AES-256-GCM算法。当服务器作为执行端时,对应的传输过程如下:步骤1、对UDP端口进行监听,并维护一张连接ID(CONN_ID)到连接(CONN)的映射表Y,开始接收数据;步骤2、接收客户端发送过来的数据包,并对所述数据包进行解密;步骤3、解析数据包类型MSG_TYPE,若所述数据包类型为TCP,则使用可靠传输协头发送确认字符ACK后继续解析命令字段,若所述数据包类型为UDP,则直接解析命令字段CMD;步骤4、执行解析命令字段得到的命令。具体的,若解析得到的命令为OPEN,则在本地新建CONN,将CONN绑定服务端的业务处理逻辑;若解析得到的命令为DATA,在Y中查找CONN_ID,若有记录,则向对应的CONN发送该数据包;若无记录,则忽略此包;若解析得到的命令为CLOSE,通过CONN_ID找到CONN,关闭CONN,删除CONN_ID:CONN的映射关系。进一步的,本实施例中会话为流定义一个多路复用连接,在客户端和服务端的同一条链路上,承载多路TCP/UDP连接。此外,本实施例可以实现数据的双向传输,允许在任一方向建立连接。一旦一个连接建立后,双方可以平等进行通信。一方可以同时作为主动发起方创建连接开始通信。也可以作为被动接收方接收连接开始通信。本发明技术方案能够有效的减轻服务器的负载,减少服务器上连接创建和销毁的次数,节约了服务器资源。在实际应用中,通过建立流(流也可称为虚拟通道),能够达到绕过防火墙的目的,将代理服务器置于防火墙合法端口的位置,维护与受保护服务器的TCP/UDP通道,通过代理服务器对客户端的合法性进行鉴定,建立服务器与众多客户端之间流,实现多路复用。由于将流多路复用到单个物理通道中,因此在某些情况下可能出现行首阻塞,通过将整体解复用缓冲区增加到更大的值可以减轻此问题,显然这将花费更多的内存。限制每流内存使用,通过限制接收方的流缓冲区,将向发送方施加反压并限制读取,并最终防止源发送太多数据以占用链路上缓冲区的每个位。在并发性和资源之间保持平衡,如果要服务的客户端很多,并且同时获得一台功能强大的服务器,则可以增加此值来提高并发性,并且也可以降低该值以仅服务1个或2个客户端。注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1