System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及数据传输,特别涉及一种基于udp协议的通信系统和方法。
技术介绍
1、理想的数据传输条件有以下两个特点:传输信道不产生差错;不管发送方以多快的速度发送数据,接收方都可成功接收数据。在这样的理想传输条件下,不需要采取任何措施就能够实现可靠传输。但现有技术中的网络往往都不具备以上两个理想条件。因此,在数据传输时往往使用一些可靠传输协议,当出现差错时让发送方重传出现错误的数据,同时在接收方来不及处理收到的数据时,及时告知发送方适当降低发送数据的速率,从而实现可靠传输。
2、tcp/ip传输层有两个主要协议,用户数据包协议udp(user datagram protocol)和传输控制协议tcp(transmission control protocol)。其中,udp协议在传输数据之间不需要建立连接,不提供可靠交付,但其传输速度快、效率高。tcp协议则提供面向连接的服务,在传输数据之前必须先建立连接,数据传输结束后要释放连接。现有技术中存在的问题是,在某些对传输时延要求较高的场景下,使用tcp协议传输速率延时太大,udp协议传输数据又不可靠。
技术实现思路
1、有鉴于此,本专利技术实施例提供了一种基于udp协议的通信系统和方法,以解决现有技术中数据传输的可靠性、稳定性差的问题。本专利技术第一方面提供的一种基于udp协议的通信方法,所述方法包括:
2、确定会话编号,所述会话编号用于数据发送端与所述数据接收端进行数据通信,所述数据接收端和所述数据发送端均
3、所述数据发送端将用户数据进行分片,并在分片后的所述用户数据基础上增加报文头后进行数据组包,获得待发送的数据包;
4、将待发送的所述数据包通过udp协议发送至所述数据接收端;
5、所述数据接收端通过udp协议接收到所述数据包后,对所述数据包进行解包操作,根据所述数据包的报文头部信息,所述数据接收端发送确认应答至所述数据发送端;
6、如果所述数据发送端收到所述确认应答,则完成所述数据包的发送;如果所述数据发送端未收到所述确认应答,则触发所述数据发送端的重传机制进行所述对应所述数据包的重传,直到所述数据发送端收到所述数据包的所有确认应答,所述重传机制包括超时重传和快速重传。
7、进一步的,所述在分片后的所述用户数据增加报文头后进行数据组包,所述报文头的信息包括:
8、会话编号、报文类型、分片号、可用接收窗口大小、发送时间戳、报文序列号、待接收的序列号。
9、进一步的,所述方法还包括:
10、所述超时重传中,获取所述数据发送端未收到所述确认应答的第一等待时间,当所述等待时间超出第一超时时间,则所述数据发送端进行所述对应所述数据包的重传,所述第一超时时间为预设值;
11、获取重传之后所述数据发送端未收到所述确认应答的第二等待时间,当所述第二等待时间超出第二超时时间,则所述数据发送端进行下一次所述对应所述数据包的重传,所述第二超时时间是所述第一超时时间的1.5倍。
12、进一步的,所述方法还包括:
13、预设所述快速重传的等待次数;
14、如果所述数据发送端未收到第一数据包的确认应答,获取所述数据发送端在未收到所述第一数据包之后成功收到的确认应答数;
15、如果所述确认应答数超过所述等待次数,则触发所述第一数据包的重发。
16、进一步的,所述方法还包括:
17、所述数据发送端基于所述会话编号创建数据发送控制块,所述数据接收端基于所述会话编号创建数据接收控制块,
18、将所述待发送的数据包插入至所述数据发送控制块的发送队列;
19、所述数据发送端循环调用所述数据发送控制块的会话刷新模块,通过所述会话刷新模块将待发送的所述数据包基于udp协议发送至所述数据接收端;
20、所述数据接收端通过udp协议接收到所述数据包后,所述数据接收控制块解析所述数据包的报文头,根据所述数据包的报文头部信息进行所述数据包的重组和排序操作,获得所述数据包对应的用户数据,所述数据接收端发送确认应答至所述数据发送端;
21、如果所述数据发送端未收到所述确认应答,则通过调用所述数据接收控制块的会话刷新模块,触发所述数据发送端的重传机制进行所述对应所述数据包的重传,所述数据发送控制块存储已发送但未收到所述确认应答的数据包。
22、本专利技术第二方面还提供了一种基于udp协议的通信系统,所述系统包括客户端和服务端,基于所述系统进行数据通信的方法包括:
23、启动所述服务端,通过监听指定端口等待所述客户端的会话请求;
24、所述客户端通过指定会话信息创建控制块并向所述服务端发起所述会话请求,所述会话信息包括服务端ip、服务端端口号以及会话编号;
25、所述服务端接收到所述会话请求后,判断所述会话请求中的所述会话编号是否存在,如果所述会话编号存在,结束当前会话;
26、如果所述会话编号不存在,则所述服务端基于所述会话请求创建会话实体,并将所述会话实体存储于全局列表中进行管理;
27、所述客户端调用数据写入函数,将所述会话实体的报文头部信息与用户数据进行拼接,并通过udp将拼接后的所述用户数据发送至所述服务端;
28、所述服务端实时监听udp读写请求,在接收到拼接后的所述用户数据后,解析拼接后所述用户数据的报文头部并根据对应会话编号将拼接后的所述用户数据注入到所述会话实体中。
29、与现有技术相比,本说明书实施例采用的上述至少一个技术方案能够达到的有益效果至少包括:本专利技术提供了一种基于udp协议的通信方法,通过借鉴tcp协议的优点,在应用层以算法的形式实现涵盖确认应答、超时重传、快速重传等的可靠传输机制,以耗费一定带宽的代价换取提高传输速率并稳定可靠通信的传输效果。
本文档来自技高网...【技术保护点】
1.一种基于UDP协议的通信方法,其特征在于,所述方法包括:
2.根据权利要求1所述的一种基于UDP协议的通信方法,其特征在于,所述在分片后的所述用户数据的基础上增加报文头后进行数据组包,所述报文头的信息包括:
3.根据权利要求1所述的一种基于UDP协议的通信方法,其特征在于,所述方法包括:
4.根据权利要求1所述的一种基于UDP协议的通信方法,其特征在于,所述方法包括:
5.根据权利要求1所述基于UDP协议的通信方法,其特征在于,所述方法还包括:
6.一种基于UDP协议的通信系统,其特征在于,所述系统包括客户端和服务端,基于所述系统进行数据通信的方法包括:
【技术特征摘要】
1.一种基于udp协议的通信方法,其特征在于,所述方法包括:
2.根据权利要求1所述的一种基于udp协议的通信方法,其特征在于,所述在分片后的所述用户数据的基础上增加报文头后进行数据组包,所述报文头的信息包括:
3.根据权利要求1所述的一种基于udp协议的通信方法,其特征在于,所述方法包...
【专利技术属性】
技术研发人员:张洋,吴娜,张晓,娄文龙,于博成,王超,
申请(专利权)人:中国航空工业集团公司西安航空计算技术研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。