[发明专利]基于UDP的可靠传输方法有效
申请号: | 201410471513.0 | 申请日: | 2014-09-17 |
公开(公告)号: | CN104202414A | 公开(公告)日: | 2014-12-10 |
发明(设计)人: | 石杰;张士波;杨敬宇;姚键;潘柏宇;卢述奇 | 申请(专利权)人: | 合一网络技术(北京)有限公司 |
主分类号: | H04L29/08 | 分类号: | H04L29/08 |
代理公司: | 无 | 代理人: | 无 |
地址: | 100080 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 udp 可靠 传输 方法 | ||
技术领域
本申请涉及一种网络传输方法,具体地,涉及一种基于UDP,且结合了TCP传输特点的可靠传输方法。
背景技术
目前,在设计网络数据传输方案时,常用到的有TCP(传输控制协议)传输方式和UDP(用户数据报文协议)传输方式。
TCP传输
TCP是一种基于连接的协议,在数据通信之前需要通信双方建立连接,事先为所发送的数据开辟好通道,然后,再进行数据发送。
TCP协议上规定类流控制,确保通信数据可靠、顺序到达目的地,因此有一个三次握手的要求。按照协议规范的要求,实现的路由设备提供相应的支持,并且尽量不丢弃TCP数据,实现协议的系统驱动层进行重发和滑动窗口控制,并且通过增加重发时间减少可能带来的网络堵塞问题。系统提供的API应用上,针对不同的链接分配独立缓冲区,进一步减少可能的丢包问题(由于缓冲区满造成数据无法接受引起数据包丢失问题)。
TCP所支持的协议包括Telnet(远程登录)、FTP(文件传输协议)、SMTP(简单邮件传输协议)等。
UDP传输
UDP是面向非连接的(正式通信前不必与对方建立连接,不管对方状态就直接发送),不能提供可靠性、流控、差错恢复功能。UDP用于一次只传送少量数据,可靠性要求低、传输经济等应用。
UDP没有三次握手的需求,网络设备在通信时,UDP数据拥有比TCP数据更高的优先通信权利,这点使得UDP数据在通信上更加的快速,但是当网络拥堵时,通信设备同样会优先丢弃UDP数据,这种设计方式会导致UDP数据出现丢失的问题,同时协议没有规定相应的流控制方式,自然也不会保证数据的顺序到达。在没有流控制的情况下,UDP数据可能出现丢失、乱序到达的问题,同样由于没有流控制,如果开发控制不当,可能导致数据风暴问题。在系统驱动实现上,由于所有的UDP数据接收时,使用共享的数据缓冲区,设置不当大小的缓冲区,可能会增加数据包的丢失问题,这个就是为什么UDP协议无法实现高并发的服务器原因所在。
UDP支持的应用协议:NFS(网络文件系统)、SNMP(简单网络管理系统)、DNS(主域名称系统)、TFTP(通用文件传输协议)等。
但现有技术中,上述两种传输方法具有一定的缺陷,具体为:对于TCP传输,其速度慢、建立连接需要开销较多(时间,系统资源)、实时性较差。对于UDP传输,传输不可靠、在网络拥堵的情况下容易丢包、数据包无序、重传率高。
特别是在P2P网络中,由于TCP需要对方的IP和端口固定,且能直接访问,而在P2P网络中大部分情况都是,主机挂在交换机或路由器后面,映射出来的外网端口不是固定的,也不能被直接访问,所以,P2P网络大部分采用的都是UDP,而不是TCP。因此,如何能够结合两种网络传输协议的优点,形成一种新的网络传输协议,特别的,能够将这种网络传输协议应用在P2P等无法使用TCP网络传输协议的网络中,成为现有技术亟需解决的技术问题。
发明内容
本发明的目的在于提出一种新的基于UDP的可靠传输方法,使得该方法能够适用于P2P等UDP使用的网络, 既保证传输的效率,又降低了数据的重传率。
为达此目的,本发明采用以下技术方案:
一种基于UDP的可靠传输方法,其特征在于:在UDP传输中,模拟TCP的3次握手,建立连接,具体为:
1)发送端向接收端发送SYN,告诉对方要和它建立连接,同时将自己的状态置为SYN_SEND;
2)当接收方收到SYN消息后,给对方回应ACK,同时在发一个SYN,并将自己的状态置为SYN_RECEIVED;
3)当发送端收到对方的回应ACK和SYN后,再给对方发送一个ACK,同时将自己的状态置为ESTABLISHED;
4)当接收端收到对方的回应ACK后,更新自己的状态为ESTABLISHED,至此双方建立连接。
优选地,在UDP数据传输时,采用如下步骤进行数据传输:
1)对于发送方和接收方,分别分配发送缓冲区和接收缓冲区,用来保存发送和接收的数据;
2)应用层将要传输的数据放到发送缓冲区中,当缓冲区满了,则停止放入,直到有空闲的缓冲区再继续放入;
3)网络层将缓冲区中的数据组上包头,按数据包序号逐个发出去,同时等待接收方回应ack;
4)接收方收到数据包,按照包的序号放到对应的缓冲区位置,并需要根据当前的缓冲区状态,计算出回应的ack_no,即ack序号,给对方回复一个ack消息;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于合一网络技术(北京)有限公司;,未经合一网络技术(北京)有限公司;许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410471513.0/2.html,转载请声明来源钻瓜专利网。