[发明专利]基于UDP协议的数据传输方法和系统有效
申请号: | 201110251255.1 | 申请日: | 2011-08-29 |
公开(公告)号: | CN102957730A | 公开(公告)日: | 2013-03-06 |
发明(设计)人: | 杨谦 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | H04L29/08 | 分类号: | H04L29/08;H04L1/16 |
代理公司: | 广州华进联合专利商标代理有限公司 44224 | 代理人: | 何平;曾旻辉 |
地址: | 518044 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 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协议的数据传输系统。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110251255.1/2.html,转载请声明来源钻瓜专利网。