一种数据高带宽高可靠性传输方法与流程

文档序号:11548369阅读:738来源:国知局
一种数据高带宽高可靠性传输方法与流程

本发明涉及计算机技术领域,具体的说是一种数据高带宽高可靠性传输方法。



背景技术:

传统的数据传输中主要由采用以下两种协议:

udp(userdatagramprotocol,用户数据报协议):是一个简单的面向数据报的运输层协议。udp不提供可靠性,它只是把应用程序传给ip层的数据报发送出去,但是并不能保证它们能到达目的地。由于udp在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快,但是存在以下不足:不可靠,数据发送端不保证接收端能完整接收数据,适用于对数据可靠性要求不高,但是带宽要求高的场景,比如远程视频会议等。

tcp(transmissioncontrolprotocol,传输控制协议):提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个tcp连接,之后才能传输数据。tcp提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。虽然可靠,但是数据发送前需要收发两端建立连接,每个tcp包都需要接收端确认,存在效率低的不足。适用于对数据可靠性要求高,带宽要求相对低的场景,比如我们常用的聊天软件,电子邮件等。



技术实现要素:

针对上述现有技术不足,本发明提供一种数据高带宽高可靠性传输方法。

本发明提供的一种数据高带宽高可靠性传输方法是通过以下技术方案实现的:

一种数据高带宽高可靠性传输方法,包括osi(开放式系统互联)网络传输模型分层,所述osi网络传输模型分层由上到下依次为应用层、表示层、会话层、传输层、网络层、数据链路层、物理层,其特征在于,在传输层设udp包和tcp包,在网络层设ip(网络之间互连的协)报文,在数据链路层设mac(硬件地址)帧,所述udp包使用标准协议,在udp之上再封装一层用户协议层,在这一层上做数据重传机制,确保接收端数据可靠,重传机制不使用类tcp的确认流程,使用按需发送的机制,即发现错了再重传,其中:

每一个mac帧都带着mac头,mac头之后是ip数据报头,第一个ip分片的ip头之后是udp头,udp头之后是udp的净荷,定义一层用户层,将用户层分成多个udp包,每个用户层数据块带一个用户层头文件,用户数据块被分片后,每个分片都携带着一个用户层头文件,接收端根据这些用户层头文件完成对整个用户数据块数据的重组;

当接收端发现不能对用户数据块进行正确重组,就必须通知发送端重新发送整个数据块的数据;由此定义数据接收端在重组异常时发送cmp(控制报文协议)包,所述cmp包的封装格式和用户数据块一致,通过控制字段和普通用户数据块区分,并通过携带不同的错误编码信息,数据接收端告知数据发送端本端发生的错误类型,当数据发送端发现错误类型是重组异常时,则把相应的用户数据块重新发送。

所述用户层头文件含有多种控制信息,包括但不限于:块序列号、长度、分片偏移量、总和检验码校验。

所述接收端通过偏移量、校验信息感知是否正确重组。

所述cmp报文中的type(类型)为6、code(编码)为0,block_id(块编号)为接收端要求重发的数据block_id。

本发明的有益效果是:数据可靠性高,传输效率高,适用于对带宽要求高,同时对数据可靠性也有较高要求的场景。

附图说明

图1是本发明osi网络传输模型分层示意图;

图2是本发明数据封装格式示意图;

图3是本发明cmp包的封装格式示意图。

具体实施方式

下面将通过实施例对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例1:如图1所示的一种数据高带宽高可靠性传输方法,包括osi(开放式系统互联)网络传输模型分层,所述osi网络传输模型分层由上到下依次为应用层、表示层、会话层传输层、网络层、数据链路层、物理层,在传输层设udp包和tcp包,在网络层设ip(网络之间互连的协)报文,在数据链路层设mac(硬件地址)帧,所述udp包使用标准协议,在udp之上再封装一层用户协议层,在这一层上做数据重传机制,确保接收端数据可靠,重传机制不使用类tcp的确认流程,使用按需发送的机制,即发现错了再重传,其中:

如图2所示,每一个mac帧都带着mac头,mac头之后是ip数据报头,第一个ip分片的ip头之后是udp头,udp头之后是udp的净荷,定义一层用户层,将用户层分成多个udp包,每个用户层数据块带一个用户层头文件,用户数据块被分片后,每个分片都携带着一个用户层头文件,接收端根据这些用户层头文件完成对整个用户数据块数据的重组;

如图3所示,当接收端发现不能对用户数据块进行正确重组,就必须通知发送端重新发送整个数据块的数据;由此定义数据接收端在重组异常时发送cmp(控制报文协议)包,所述cmp包的封装格式和用户数据块一致,通过ctl(控制)字段和普通用户数据块区分(此处定义cmp包的ctl字段为4’b1100),并通过携带不同的错误编码信息,数据接收端告知数据发送端本端发生的错误类型,当数据发送端发现错误类型是重组异常时,则把相应的用户数据块重新发送。所述cmp报文中的type(类型)为6、code(代码)为0,block_id(块编号)为接收端要求重发的数据block_id,type指定cmp包的类型,code指定cmp包特定类型下的代码,checksum(校验总和)对整个cmp包进行检验和计算,方法同udp。

进一步的,所述用户层头文件含有多种控制信息,包括但不限于:块序列号、长度、分片偏移量、总和检验码校验。

进一步的,所述接收端通过偏移量、校验信息感知是否正确重组。

进一步的,所述cmp报文中的type(类型)为6、code(编码)为0,block_id(块编号)为接收端要求重发的数据block_id。

实施例2

数据在链路上传输的封装过程是这样的:

(1)假设我们有16mb的数据,这16mb我们称之为用户层数据块的净荷,这个数据块还会带一个user_header,所以这个用户数据块的长度是:16mb+16b。

(2)udp包的最大长度是65535b,所以这个16mb+16b的用户数据块会被拆分成很多个udp包(分片成dup适应的大小)。

(3)ip数据报最大长度也是65535b(所以如果ip数据包里面带的是udp,那么udp包最大长度不能到65535b,而必须比65535b略小),ip也必须切片,切片大小根据mac层的包长来决定,所以65535b的ip又会被拆分成很多个ip分片(分片成mac帧适应的大小)。

(4)通常mac层的最大包长是1518b,携带一个ip分片。

以上所述实施例仅表示本发明的实施方式,其描述较为具体和详细,但并不能理解为对本发明范围的限制。应当指出的是,对于本领域的技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1