[发明专利]基于UDP的可靠传输方法有效
申请号: | 201410471513.0 | 申请日: | 2014-09-17 |
公开(公告)号: | CN104202414A | 公开(公告)日: | 2014-12-10 |
发明(设计)人: | 石杰;张士波;杨敬宇;姚键;潘柏宇;卢述奇 | 申请(专利权)人: | 合一网络技术(北京)有限公司 |
主分类号: | H04L29/08 | 分类号: | H04L29/08 |
代理公司: | 无 | 代理人: | 无 |
地址: | 100080 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 udp 可靠 传输 方法 | ||
1.一种基于UDP的可靠传输方法,其特征在于:在UDP传输中,模拟TCP的3次握手,建立连接,具体为:
1)发送端向接收端发送SYN,告诉对方要和它建立连接,同时将自己的状态置为SYN_SEND;
2)当接收方收到SYN消息后,给对方回应ACK,同时在发一个SYN,并将自己的状态置为SYN_RECEIVED;
3)当发送端收到对方的回应ACK和SYN后,再给对方发送一个ACK,同时将自己的状态置为ESTABLISHED;
4)当接收端收到对方的回应ACK后,更新自己的状态为ESTABLISHED,至此双方建立连接。
2.根据权利要求1所述的基于UDP的可靠传输方法,其特征在于:
在UDP数据传输时,采用如下步骤进行数据传输:
1)对于发送方和接收方,分别分配发送缓冲区和接收缓冲区,用来保存发送和接收的数据;
2)应用层将要传输的数据放到发送缓冲区中,当缓冲区满了,则停止放入,直到有空闲的缓冲区再继续放入;
3)网络层将缓冲区中的数据组上包头,按数据包序号逐个发出去,同时等待接收方回应ack;
4)接收方收到数据包,按照包的序号放到对应的缓冲区位置,并需要根据当前的缓冲区状态,计算出回应的ack_no,即ack序号,给对方回复一个ack消息;
5)发送端收到ack后,根据回应的ack_no判断,发送缓冲区的滑动床后是否后移,当满足窗口后移条件后,可以把缓冲区前面的位置腾出来,并通知上传继续放数据。
3.根据权利要求2所述的基于UDP的可靠传输方法,其特征在于:
在采用UDP方式在传输数据时,当产生丢包现象,通过数据重传,将丢弃的数据包重新发送给接收端。
4.根据权利要求3所述的基于UDP的可靠传输方法,其特征在于:
接收端在接收的时候,要把接收到的数据包按次序放到缓冲队列中,同时根据当前缓冲区的情况计算出对应的ACK序号,回复对方,发送端收到回复之后,根据对应的ACK序号,判断是继续发送下一个数据包,还是重传之前发过的数据包。
5.根据权利要求4所述的基于UDP的可靠传输方法,其特征在于:
接收端在接收的时候,要把接收到的数据包按次序放到缓冲队列中,同时根据当前缓冲区的情况计算出对应的ACK序号和SACK序号。
6.根据权利要求2所述的基于UDP的可靠传输方法,其特征在于:
当发送端发送的UDP数据块过大,超过单个缓冲区的大小的时候,就需要把这块数据拆成几个小的数据包发送,拆包的时候,以缓冲区容量为限,将数据包从前往后依次放入到缓冲队列中,若提示缓冲区满,则需要将缓冲区锁定,防止其他进程写入,造成数据破坏,等有空闲缓冲区的时候,再将剩余的数据块写入。
7. 根据权利要求6所述的基于UDP的可靠传输方法,其特征在于:
当接收端收到数据后,分配一块大的缓冲区,将收到的包,按顺序依次写入缓冲区,保证收到的顺序和发送的顺序是一致的,这样组合出来的数据块和发送的原数据块就能保证是一致的。
8.根据权利要求1-7中任意一项所述的基于UDP的可靠传输方法,其特征在于:
在UDP连接时,通过定时的向对方发送心跳包,告诉对方自己处于活跃状态,收到对方的心跳后更新一下状态。
9. 根据权利要求8所述的基于UDP的可靠传输方法,其特征在于:
在UDP断开连接时,传输的一方能够主动断开连接或者是长时间等不到对方的心跳,将连接断开。
10. 根据权利要求8所述的基于UDP的可靠传输方法,其特征在于:
对UDP数据传输进行数据校验。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于合一网络技术(北京)有限公司;,未经合一网络技术(北京)有限公司;许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410471513.0/1.html,转载请声明来源钻瓜专利网。