基于UDP协议的数据传输方法和系统技术方案

技术编号:8389085 阅读:143 留言:0更新日期:2013-03-07 21:03
一种基于UDP协议的数据传输方法,包括以下步骤:服务器接收发送端发送的数据包;所述服务器记录所述数据包并设置所述数据包对应的标志位,将处理后的数据包发送至接收端;所述服务器接收所述接收端发送的确认包,设置所述数据包对应的标志位为已回复状态;所述服务器根据所述标志位向所述发送端返回确认包。采用上述方法,能够减少数据重发次数,节省流量。此外,还提供了一种基于UDP协议的数据传输系统。

【技术实现步骤摘要】

本专利技术涉及网络技术,尤其涉及一种基于UDP协议的数据传输方法和系统
技术介绍
UDP协议(User Datagram Protocol,用户数据包协议)在网络中是用于处理数据包的协议,其在OSI(Open System Interconnect,开放式系统互联)模型中位于传输层。UDP协议具有不提供数据包分组、组装和不能对数据包进行排序的特性,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。由于UDP协议的这些特性,UDP协议具有资源消耗小、处理数据快的优点,因此通常用于音频、视频和普通数据的传输中,因为这些数据传输中即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。例如,即时聊天工具中的消息传输通常采用的是UDP协议。为了保证数据能够正确被接收到,传统的基于UDP协议的数据传输方法在发送端和接收端会采取数据重发和回包确认机制,具体实现如下:在发送端维持一个发送队列,将已经发送的数据包保存在队列中,并按照一定的时间周期不断检查。如果在检查过程中,收到回复确认包,则根据确认包的索引,在队列中找到对应的包将其删除;如果在检查过程中,发现有数据包在该时间内没有收到回复确认包,则将该数据包进行重发,并更新其发送时间;如果在几个周期内,某些数据包仍没有收到回复确认包,则将该数据包转移到其他服务器中处理,并从此队列中删除该数据包。在接收端会维持一个接收队列,其中保存在一定时间内收到的数据包的索引。如果在此时间内又收到数据包,则会根据索引在接收队列中查询该数据包是否出现过,如果已经出现过,则表明该数据包是发送端重复发送的,只需对发送端回复一个确认包即可;如果在接收队列中没有出现过,则表明这是一个新的数据包,需对该数据包进行下一步的数据处理,并对发送端回复一个确认包,然后将该数据包的索引放在接收队列中。此外,接收队列会按照一定时间周期清除过老的数据索引。在即时通信系统中,服务器之间以及服务器与客户端之间通常采用UDP协议进行通信。也有服务器与客户端之间采用TCP(Transmission Control Protocol,传输控制协议)协议进行通信的,例如Web服务器与浏览器之间可采用TCP协议进行通信。TCP协议是一种面向连接(连接导向)的、可靠的、基于字节流的运输层通信协议,服务器与客户端之间可通过建立的链接传输数据。由于基于TCP协议的数据传输只要建立了链接就可传输数据,而基于UDP协议的数据传输方法又广泛采用了数据重发和回包确认的机制。因此,当不同终端之间采用不同协议时,例如,服务器与接收端之间采用TCP协议,服务器与发送端之间采用UDP协议,这样在接收端、服务器、发送端之间则会存在数据包和确认包大量重复发送的问题,从而增加了程序逻辑处理,造成流量浪费。
技术实现思路
基于此,有必要提供一种能减少数据重复发送、节省流量的基于UDP协议的数据传输方法。一种基于UDP协议的数据传输方法,包括以下步骤:服务器接收发送端发送的数据包;所述服务器记录所述数据包并设置所述数据包对应的标志位,将处理后的数据包发送至接收端;所述服务器接收所述接收端发送的确认包,设置所述数据包对应的标志位为已回复状态;所述服务器根据所述标志位向所述发送端返回确认包。优选的,所述服务器根据所述标志位向所述发送端返回确认包的步骤包括:接收发送端发送的数据包;判断所述数据包是否记录在哈希表中且数据包到达时间与上一次数据包到达时间的间隔是否超过设定的阈值,若是,则进一步判断所述数据包对应的标志位是否为已回复状态,若是,则向所述发送端返回确认包。优选的,所述服务器根据标志位向所述发送端返回确认包的步骤还包括:当所述数据包未记录在哈希表中时,则处理所述数据包,并将所述数据包的记录插入到哈希表中。优选的,所述服务器根据标志位向所述发送端返回确认包的步骤还包括:当数据包到达时间与上一次数据包到达时间的间隔没有超过设定的阈值时,则将所述数据包直接抛弃。优选的,所述服务器根据标志位向所述发送端返回确认包的步骤还包括:当所述数据包对应的标志位不为已回复状态时,则处理所述数据包并更新哈希表中的数据包到达时间。此外,还有必要提供一种能减少数据重复发送、节省流量的基于UDP协议的数据传输系统。一种基于UDP协议的数据传输系统,包括服务器及与所述服务器进行交互的发送端和接收端,所述服务器包括:收发模块,用于接收发送端发送的数据包;处理模块,用于记录所述数据包并设置所述数据包对应的标志位,将处理后的数据包;所述收发模块还用于将处理后的数据包发送至所述接收端,并接收所述接收端发送的确认包;设置模块,用于在所述收发模块接收到接收端发送的确认包后,设置所述数据包对应的标志位为已回复状态;所述收发模块还用于根据所述标志位向所述发送端返回确认包。优选的,所述服务器还包括:判断模块,用于在所述收发模块接收到发送端发送的数据包时,判断所述数据包是否记录在哈希表中且数据包到达时间与上一次数据包到达时间的间隔是否超过设定的阈值,若是,则进一步判断所述数据包对应的标志位是否为已回复状态,若是,则通知所述收发模块;所述收发模块还用于当所述数据包对应的标志位为已回复状态时向所述发送端返回确认包。优选的,所述处理模块还用于当所述数据包未记录在哈希表中时,处理所述数据包;所述设置模块还用于当所述数据包未记录在哈希表中时,则将所述数据包的记录插入到哈希表中。优选的,所述设置模块还用于当数据包到达时间与上一次数据包到达时间的间隔没有超过设定的阈值时,则将所述数据包直接抛弃。优选的,所述处理模块还用于当所述数据包对应的标志位不为已回复状态时处理所述数据包;所述设置模块还用于当所述数据包对应的标志位不为已回复状态时更新哈希表中的数据包到达时间。上述基于UDP协议的数据传输方法和系统,通过服务器接收到接收端发送的确认包时,设置数据包对应的标志位为已回复状态,根据设置的标志位向发送端返回确认包。由于服务器与发送端之间的数据传输基于UDP协议,服务器可能重复接收到发送端发送的数据包,在服务器重复收到数据包时,根据数据包对应的标志位来确定是否返回确认包,能够减少数据重复发送,节省了流量。【附图说明】图1为一个实施例中基于UDP协议的数据传输方法的流程示意图;图2为另一个实施例中基于UDP协议的数据传输方法的本文档来自技高网
...
基于UDP协议的数据传输方法和系统

【技术保护点】
一种基于UDP协议的数据传输方法,包括以下步骤:服务器接收发送端发送的数据包;所述服务器记录所述数据包并设置所述数据包对应的标志位,将处理后的数据包发送至接收端;所述服务器接收所述接收端发送的确认包,设置所述数据包对应的标志位为已回复状态;所述服务器根据所述标志位向所述发送端返回确认包。

【技术特征摘要】
1.一种基于UDP协议的数据传输方法,包括以下步骤:
服务器接收发送端发送的数据包;
所述服务器记录所述数据包并设置所述数据包对应的标志位,将处理后的
数据包发送至接收端;
所述服务器接收所述接收端发送的确认包,设置所述数据包对应的标志位
为已回复状态;
所述服务器根据所述标志位向所述发送端返回确认包。
2.根据权利要求1所述的基于UDP协议的数据传输方法,其特征在于,
所述服务器根据所述标志位向所述发送端返回确认包的步骤包括:
接收发送端发送的数据包;
判断所述数据包是否记录在哈希表中且数据包到达时间与上一次数据包到
达时间的间隔是否超过设定的阈值,若是,则
进一步判断所述数据包对应的标志位是否为已回复状态,若是,则
向所述发送端返回确认包。
3.根据权利要求2所述的基于UDP协议的数据传输方法,其特征在于,
所述服务器根据所述标志位向所述发送端返回确认包的步骤还包括:
当所述数据包未记录在哈希表中时,则处理所述数据包,并将所述数据包
的记录插入到哈希表中。
4.根据权利要求2所述的基于UDP协议的数据传输方法,其特征在于,
所述服务器根据所述标志位向所述发送端返回确认包的步骤还包括:
当数据包到达时间与上一次数据包到达时间的间隔没有超过设定的阈值
时,则将所述数据包直接抛弃。
5.根据权利要求2所述的数据包传输方法,其特征在于,所述服务器根据
所述标志位向所述发送端返回确认包的步骤还包括:
当所述数据包对应的标志位不为已回复状态时,则处理所述数据包并更新
哈希表中的数据包到达时间。
6.一种基于UDP协议的数据传输系统,其特征在于,包括服务器及与所

\t述服务器进行交互的发送端和接收端,所述...

【专利技术属性】
技术研发人员:杨谦
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1