一种udp组播方法及装置的制作方法

文档序号:7751891阅读:176来源:国知局
专利名称:一种udp组播方法及装置的制作方法
技术领域
本发明涉及UDP组播技术领域,特别是指一种UDP组播方法及装置。
背景技术
UDP (User Datagram Protocol)—禾中^1 internet intarnet 43 据报的形式在一定范围内进行数据传送的组播技术,是一种比较成熟的技术。参见图1所示,现有技术中UDP组播的具体过程如下步骤101 接收端订阅组播组数据。即接收端向路由器发送某个组播组信息的订阅请求,其中含有本地端口信息以及需要预定的组播组地址。该路由器收到该订阅请求后, 保存该接收端的端口信息以及需要预定的组播组地址。步骤102 数据报文发送端通过路由器向组播组发送数据。步骤103 路由器收到发送端向组播组发送的数据报后,根据自身保存的信息,确定订阅该组播组的接收端,并向确定的接收端发送该数据包。从上述过程中可以发现,数据报文发送端只是负责将数据报文发送出去,至于接收端是否能收到数据报,并无监控,这种特性可以保证该技术具有很高的发送速度。但是利用UDP组播是在网络上以数据报的形式进行数据的组播,要求路由器支持internet网关管理协议(IGMP),UDP组播是采用无连接、数据报的连接方式,发送端发送报文后就不再关注报文是否能被正确接收,也就是说,数据能不能到达接收端和数据到达的顺序都是不能保证的,因此数据传输并不可靠。

发明内容
本发明提供一种UDP组播方法及装置,提高数据传输的可靠性。本发明提供的一种UDP组播方法,包括发送端根据保存的数据报文标识算法,生成本次发送数据报文的报文标识,并发送含有该报文标识的数据报文;路由器收到发送端向组播组的数据报文后,根据自身保存的信息,确定订阅该组播组的接收端,并向该接收端发送该数据报文。本申请提供的一种获取UDP组播数据报文的方法,包括接收端侦听到发送端发送的数据报文后,根据保存的与所述发送端对应的数据报文标识算法,确定本次已接收的数据报文与上次接收到的数据报文之间是否存在漏包,如果存在,则从发送端获取漏收的数据报文并保存,如果不存在,则保存该数据报文。本申请提供的一种发送UDP组播数据报文的装置,该装置包括数据报文标识生成单元,用于根据保存的数据报文标识算法,生成本次发送数据报文的报文标识;发送单元,用于发送含有该报文标识的数据报文。本申请提供的一种获取UDP组播数据报文的装置,包括
侦听单元,用于侦听发送端发送的数据报文;判断单元,用于根据保存的该发送端对应的数据报文标识算法,确定本次已接收的数据报文与上次接收到的数据报文之间是否存在漏包;漏包恢复单元,用于当存在漏包错误时,从发送端获取漏收的数据报文并保存;存储单元,用于当不存在漏包错误时,保存该数据报文;当存在漏包错误时保存从发送端获取漏收的数据报文。在本申请实施例中,数据报文发送端根据保存的数据报文标识算法,获取本次发送数据报文的报文标识,并发送含有该报文标识的数据报文;路由器收到发送端向组播组的数据报文后,根据自身保存的信息,确定订阅该组播组的接收端,并向该接收端发送该数据报文。接收端侦听到数据报文发送端发送的数据报文后,根据保存的该发送端对应的数据报文标识算法,确定该数据报文与上次接收到的数据报文之间是否存在漏包,如果存在, 则从发送端获取漏收的数据报文并保存,如果不存在,则保存该数据报文,从而确保接收端可以收到每个数据报文,提高了数据传输的可靠性。


图1为现有技术中UDP组播方法的流程示意图;图2为本申请实施例中UDP组播方法的流程示意图;图3为本申请实施例中接收端获取UDP组播数据报文的方法的流程示意图;图4为本申请实施例中发送UDP组播数据报文的装置的结构示意图;图5为本申请实施例的获取UDP组播数据报文的装置的结构示意图;图6为本申请实施例中UDP组播方法的系统结构图。
具体实施例方式为了提高数据传输的可靠性,在本申请实施例中,数据报文发送端根据保存的数据报文标识算法,获取本次发送数据报文的报文标识,并发送含有该报文标识的数据报文; 路由器收到发送端向组播组发送的数据报文后,根据自身保存的信息,如之前预订过该组播组的客户端地址列表,确定订阅该组播组的接收端,并向该接收端发送该数据报文。接收端侦听到发送端发送的数据报文后,根据接收端的数据报文标识算法,确定该数据报文与上次接收到的数据报文之间是否存在漏包,如果存在,则从发送端获取漏收的数据报文并保存,如果不存在,则保存该数据报文。该发送端的数据报文标识算法与接收端的数据报文标识算法可以相同,或类似。本申请实施例中UDP组播方法的系统结构图如图6所示,其中, 图6中的路由器是支持组播功能的路由器,可以完成组播地址的登记、注册、转发管理等功能。接收端用于向路由器发送组播组信息的订阅请求,发送端用于通过路由器向组播组发送数据报文,路由器用于接收接收端的订阅请求,并保存接收端的端口信息和需要预定的组播组地址,并在收到发送端向组播组发送的数据报文后,根据自身保存的信息确定订阅该组播组的接收端,并向该接收端发送该数据报文。参见图2所示,本申请实施例中的UDP组播方法具体包括以下步骤步骤201 发送端生成本次发送数据报文的报文标识。根据保存的数据报文标识算法,生成本次发送数据报文的报文标识。
这里,数据报文标识算法可以是利用已知的数据报文标识获得本次数据报文标识的算法,已知的数据报文标识可以是上一次的数据报文标识,也可以是其他接收到的数据报文标识,只要该算法与接收端保存的算法一致即可。比如数据报文标识算法本次发送数据报文的报文标识为将保存的上次发送数据报文的报文标识加1。步骤202 发送端向组播组发送含有该报文标识的数据报文。步骤203 路由器收到发送端向组播组发送的数据报文后,根据自身保存的信息, 该信息包括之前预订过该组播组的客户端地址列表,确定订阅该组播组的接收端。步骤204 路由器向该接收端发送该数据报文。该方法可以进一步包括发送端将本次发送的数据报文保存在本地日志中。而且,如果当发送端收到接收端的报文请求时,可以根据报文请求中的报文标识从保存的本地日志中获取对应的数据报文并发送。接收端要获取组播组数据,需要在路由器中订阅组播组数据。即接收端向路由器发送某个组播组信息的订阅请求,其中含有本地端口信息以及需要预订的组播组地址。该路由器收到该订阅请求后,保存该接收端的端口信息以及需要预订的组播组地址。例如接收端建立一个支持数据报的套接字(socket);将socket与本地一个端口绑定;通过setsockopt IP_ADD_MEMBERSHIP加入一个组播组,即通知路由器需要订阅来自地址为239. 255. 255. 255的组播组数据。发送端向地址为239. 255. 255. 255组播组发送数据报;路由器收到发送到组播地址(地址为239. 255. 255. 255)的数据报后,查询订阅此组播组的接收端,并将该数据报文转发给所有“订阅”的接收端,如果没有“订阅”的接收端,则将该数据报文抛弃。在订阅组播组数据后,参见图3所示,本申请实施例中接收端获取UDP组播数据报文的方法包括以下步骤步骤301 接收端侦听到发送端本次发送的数据报文。步骤302 接收端根据保存的与该发送端对应的数据报文标识算法,确定本次接收到的数据报文与上次接收到的数据报文之间是否存在漏包,如果存在,则执行步骤303, 如果不存在,则执行步骤304。所述数据报文标识算法与发送端的算法相同,比如本次发送数据报文的报文标识为将保存的上次发送数据报文的报文标识加1。确定本次接收到的数据报文与上次接收到的数据报文之间是否存在漏包可以这样实现根据保存的该发送端对应的数据报文标识算法,利用保存的上次接收到的数据报文的报文标识获得本次应该接收到的数据报文的报文标识,并与本次已接收到的数据报文中的报文标识进行比较,如果获得的本次应接收的数据报文的报文标识与本次已收到的数据报文中的报文标识不匹配,则确定存在漏包,否则,不存在漏包。举例来说,若接收端上次接收到的数据报文的报文标识为“11352”,根据数据报文标识算法“本次发送数据报文的报文标识为将保存的上次发送数据报文的报文标识加1”,可知本次应收到的数据报文的报文标识为11352+1,即11353。对比本次实际收到的数据报文标识,若本次实际收到的数据报文标识是11353,则说明不存在漏包问题,若本次收到的数据报文标识为11354,则说明存在漏包问题。步骤303 接收端从发送端获取漏收的数据报文并保存,具体实现方式包括接收端把最后的报文标识发送到发送端,发送端和自己的发送记录进行比对找出漏收的数据报文发送回接收端,接收端收到后保存。步骤304 接收端保存该数据报文。接收端可以将获取的数据报文保存在接收端事物日志中。参见图4所示,本申请实施例的发送UDP组播数据报文的装置,包括数据报文标识生成单元41和发送单元42。数据报文标识生成单元41,用于根据保存的数据报文标识算法,生成本次发送数据报文的报文标识;发送单元42,用于发送含有该报文标识的数据报文。所述数据报文标识算法可以是与接收端的算法相同,比如本次发送数据报文的报文标识为将保存的上次发送数据报文的报文标识加1。该装置可以进一步包括存储单元,用于将本次发送的数据报文保存在本地日志中。该装置还可以进一步包括接收单元,用于收到接收端的报文请求时,根据报文请求中的报文标识从保存的本地日志中获取对应的数据报文;则所述发送单元42,还用于将从本地日志中获取对应的数据报文发送给该接收端。参见图5所示,本申请实施例的获取UDP组播数据报文的装置,包括侦听单元 51、判断单元52、漏包恢复单元53以及存储单元M。侦听单元51,用于侦听发送端发送的数据报文;判断单元52,用于根据保存的该发送端对应的数据报文标识算法,确定该数据报文与上次接收到的数据报文之间是否存在漏包;漏包恢复单元53,用于当存在漏包错误时,从发送端获取漏收的数据报文并保存;存储单元M,用于当不存在漏包错误时,保存该数据报文;当存在漏包错误时保存从发送端获取漏收的数据报文。所述存储单元M,可以将获取的数据报文保存在接收端事物日志中。所述判断单元52,用于根据保存的该发送端对应的数据报文标识算法,利用保存的上次接收到的数据报文的数据标识获得本次该数据报文标识,并与收到的该数据报文中的报文标识进行比较,如果获取的本次该数据报文标识与收到的该数据报文中的报文标识不匹配,则确定存在漏包,否则,不存在漏包。所述数据报文标识算法与发送端的算法相同,比如本次发送数据报文的报文标识为将保存的上次发送数据报文的报文标识加1。此时,相当于发送端和接收端采用一个有序的编号作为报文标识。在本申请实施例中,发送端发送的每个数据报文都有一个有序的报文编号,而且, 接收端可以根据报文编号确定是否存在漏包,则从发送端获取被漏的数据报文,因而接收端可以实现错误容错和修复的能力。
而发送端可以在发送报文时,进行冗余备份,即可为接收端的请求单独提供数据报文,从而达到既保留UDP组播的速度快、占用资源少等优点,也能提供一定程度的可靠性,来扩大该技术的应用范围,解决KODB中需要同其他应用进行可靠的数据同步的问题, 可以解决在需要长时间运行的,可靠的分布式系统中,在不影响或打断正常运行系统前提下无缝的扩展系统功能。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种UDP组播方法,其特征在于,该方法包括以下步骤发送端根据保存的数据报文标识算法,生成本次发送数据报文的报文标识,并发送含有该报文标识的数据报文;路由器收到发送端向组播组发送的数据报文后,根据自身保存的信息,确定订阅该组播组的接收端,并向该接收端发送该数据报文。
2.根据权利要求1所述的方法,其特征在于,所述数据报文标识算法包括 本次发送数据报文的报文标识为将保存的上次发送数据报文的报文标识加1。
3.根据权利要求1所述的方法,其特征在于,该方法进一步包括 发送端将本次发送的数据报文保存在本地日志中。
4.根据权利要求3所述的方法,其特征在于,当发送端收到接收端的报文请求时,根据报文请求中的报文标识从保存的本地日志中获取对应的数据报文并发送。
5.一种获取UDP组播数据报文的方法,其特征在于,该方法包括以下步骤接收端侦听到发送端发送的数据报文后,根据保存的与所述发送端对应的数据报文标识算法,确定本次已接收的数据报文与上次接收到的数据报文之间是否存在漏包,如果存在,则从发送端获取漏收的数据报文并保存,如果不存在,则保存该数据报文。
6.根据权利要求5所述的方法,其特征在于,接收端将获取的数据报文保存在接收端事物日志中。
7.根据权利要求5所述的方法,其特征在于,确定本次已接收的数据报文与上次接收到的数据报文之间是否存在漏包,包括根据保存的与该发送端对应的数据报文标识算法,利用保存的上次接收到的数据报文的报文标识获得本次应接收到的数据报文的报文标识,并与本次已接收到的数据报文中的报文标识进行比较,如果获得的本次应接收到的数据报文标识与本次已接收到的数据报文中的报文标识不匹配,则确定存在漏包,否则,不存在漏包。
8.根据权利要求7所述的方法,其特征在于,所述数据报文标识算法包括 本次发送数据报文的报文标识为将保存的上次发送数据报文的报文标识加1。
9.一种发送UDP组播数据报文的装置,其特征在于,该装置包括数据报文标识生成单元,用于根据保存的数据报文标识算法,生成本次发送数据报文的报文标识;发送单元,用于发送含有该报文标识的数据报文。
10.根据权利要求9所述的装置,其特征在于,所述数据报文标识算法包括 本次发送数据报文的报文标识为将保存的上次发送数据报文的报文标识加1。
11.根据权利要求9所述的装置,其特征在于,该装置进一步包括 存储单元,用于将本次发送的数据报文保存在本地日志中。
12.根据权利要求9所述的装置,其特征在于,该装置进一步包括接收单元,用于收到接收端的报文请求时,根据报文请求中的报文标识从保存的本地日志中获取对应的数据报文;则所述发送单元,还用于将从本地日志中获取对应的数据报文发送给该接收端。
13.一种获取UDP组播数据报文的装置,其特征在于,该装置包括 侦听单元,用于侦听发送端发送的数据报文;判断单元,用于根据保存的该发送端对应的数据报文标识算法,确定本次已接收的数据报文与上次接收到的数据报文之间是否存在漏包;漏包恢复单元,用于当存在漏包错误时,从发送端获取漏收的数据报文并保存; 存储单元,用于当不存在漏包错误时,保存该数据报文;当存在漏包错误时保存从发送端获取漏收的数据报文。
14.根据权利要求13所述的装置,其特征在于,所述存储单元,用于将获取的数据报文保存在接收端事物日志中。
15.根据权利要求13所述的装置,其特征在于,所述判断单元,用于根据保存的该发送端对应的数据报文标识算法,利用保存的上次接收到的数据报文的报文标识获得本次应接收的数据报文的报文标识,并与本次已接收到的该数据报文中的报文标识进行比较,如果获取的本次应接收到的数据报文标识与本次已接收到的数据报文中的报文标识不匹配,则确定存在漏包,否则,不存在漏包。
16.根据权利要求15所述的装置,其特征在于,所述数据报文标识算法包括 本次发送数据报文的报文标识为将保存的上次发送数据报文的报文标识加1。
全文摘要
本发明公开了一种UDP(User Datagram Protocol)组播方法及装置,可以提高数据传输的可靠性。其中,UDP组播方法为发送端根据保存的数据报文标识算法,获取本次发送数据报文的报文标识,并发送含有该报文标识的数据报文;路由器收到发送端向组播组的数据报文后,根据自身保存的信息,确定订阅该组播组的接收端,并向该接收端发送该数据报文。获取UDP组播数据报文的方法为接收端侦听到发送端发送的数据报文后,根据保存的该发送端对应的数据报文标识算法,确定该数据报文与上次接收到的数据报文之间是否存在漏包,如果存在,则从发送端获取漏收的数据报文并保存,如果不存在,则保存该数据报文。
文档编号H04L12/56GK102281146SQ20101020508
公开日2011年12月14日 申请日期2010年6月11日 优先权日2010年6月11日
发明者全鑫, 常国斌, 张宋景, 朱明君, 李翀 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1