基于udp协议的数据传输方法

文档序号:7945220阅读:209来源:国知局
专利名称:基于udp协议的数据传输方法
技术领域
本发明涉及一种互联网中数据传输的方法,更具体地说,涉及一种基于UDP协议 的数据传输方法。
背景技术
TCP (Transmission Control Protocol),传输控制协议,主要用于在主机间建立
一个虚拟连接,以实现高可靠性的数据包交换。IP协议可以进行IP数据包的分割和组装,
但是通过IP协议并不能清楚地了解到数据包是否顺利地发送给目标计算机。而使用TCP
协议就不同了 ,在该协议传输模式中在将数据包成功发送给目标计算机后,TCP会要求发送
一个确认;如果在某个时限内没有收到确认,那么TCP将重新发送数据包。另外,在传输的
过程中,如果接收到无序、丢失以及被破坏的数据包,TCP还可以负责恢复。 TCP是一种面向连接的、可靠的、基于字节流的运输层通信协议,通常由IETF的
RFC 793说明。在简化的计算机网络OSI模型中,它完成运输层所指定的功能。 UDP (User Datagram Protocol),用户数据报协议,是0SI参考模型中一种无连接
的传输层协议,提供面向事务的简单不可靠信息传送服务。UDP协议基本上是IP协议与上
层协议的接口。 UDP协议适用端口分别运行在同一台设备上的多个应用程序。 由于大多数网络应用程序都在同一台机器上运行,计算机上必须能够确保目的地
机器上的软件程序能从源地址机器处获得数据包,以及源计算机能收到正确的回复。这是
通过使用UDP的"端口号"完成的。例如,如果一个工作站希望在工作站128. 1. 123. 1上使
用域名服务系统,它就会给数据包一个目的地址128. 1. 123. l,并在UDP头插入目标端口号
53。源端口号标识了请求域名服务的本地机的应用程序,同时需要将所有由目的站生成的
响应包都指定到源主机的这个端口上。UDP端口的详细介绍可以参照相关文章。 UDP协议使用IP层提供的服务把从应用层得到的数据从一台主机的某个应用程
序传给网络上另一台主机上的某一个应用程序。其特点如下 1、 UDP传送数据前并不与对方建立连接,即UDP是无连接的,在传输数据前,发送 方和接收方相互交换信息使双方同步。 2、 UDP不对收到的数据进行排序,在UDP报文的首部中并没有关于数据顺序的信 息(如TCP所采用的序号),而且报文不一定按顺序到达的,所以接收端无从排起。
3、UDP对接收到的数据报不发送确认信号,发送端不知道数据是否被正确接收,也 不会重发数据。 4、 UDP传送数据较TCP快速,系统开销也少。 从以上特点可知,UDP提供的是无连接的、不可靠的数据传送方式,是一种尽力而 为的数据交付服务。问题在于,TCP协议在网络发展的前期,适用于所有的用户。在前期使 用网络的用户,每个人都拥有一个公共的固定的ip地址,随着用户的增多,ip地址资源开 始变得匮乏。为了解决ip资源匮乏的问题,nat(网络地址转换器)设备出现了,大的网络 用户集群使用局域网地址,访问公共网络时分配临时的公网地址的方式,解决了 ip匮乏问题。但是也直接导致了网络状态的复杂化,并直接影响了TCP协议的适用范围。用户与用 户之间使用TCP协议共享资源时,绝大多数情况都无法进行。UDP协议可以穿越绝大多数的 nat设备共享用户资源,但是UDP协议的无连接以及不可靠传输的特点,使得共享资源的过 程变得异常艰难。

发明内容
本发明提供一种基于UDP协议实现互联网中两个客户终端之间数据的可靠传输 方法,旨在弥补TCP协议下对传输数据因IP地址数量有限而受到的限制问题。
本发明一种基于UDP协议的数据传输方法,包括如下步骤 (SI)发送终端将待发送的文件分成数据包,为数据包设置序号,以便接收终端将 各个数据包重新恢复为发送的文件; (S2)发送终端设置三个队列,包括等待发送数据队列、等待应答数据队列和补发 数据队列。其中,等待发送数据队列,将数据包信息以先进先出的方式按序排列,并且基于 UDP协议建立传输链路实现数据包的传输; (S3)当等待发送数据队列中的一个数据包数据全部发出后,将该数据包信息从等 待发送数据队列放入所述等待应答数据队列,等待所述接收终端应答;当接收终端应答接 收成功时,等待应答数据队列删除成功传输的数据包信息; (S4)当接收终端对所述等待应答数据队列中的数据包超时或未应答,则将该数据 包放入补发数据队列,用于等待重新放入等待发送数据队列进行发送。 本发明基于UDP协议的数据传输方法,其改进在于,上述步骤(S2)中,等待发送数 据队列根据数据包的编号按序排列。此外优选方式下,在同一时刻,发送终端和接收终端之 间可以建立多个传输链路。 本发明基于UDP协议的数据传输方法,针对置于nat设备之后无法使用TCP可靠 传输机制的用户,使用UDP协议进行用户间的资源共享。根据UDP协议的特点,对UDP协议 进行封装,使UDP协议在共享资源时与TCP协议效果相同,简化数据共享的过程;从而极大 的拓宽了网络间用户互相连接的范围,使更多的用户可以采用互相连接的方式进行资源共 享;并因此大幅度地提高了网络的传输效率。尤其针对于用户机而言,UDP协议采用端口一 对多的连接,TCP采用端口一对一的连接,UDP协议较TCP协议更加节省本地资源;摆脱了 IP地址数量的限制,从而可以广泛地应用于互联网技术下的数据传输,而且能够提高数据 传输的可靠性。


图1是本发明基于UDP协议的数据传输方法两终端间的流程情况示意图。
具体实施例方式
如图l所示本发明基于UDP协议的数据传输方法的流程图,左侧为发送终端的流 程情况,右侧为接收终端的流程情况,二者之间通过互联网网络交互信息。
图中,逻辑控制层,用于处理逻辑流程,建立在网络传输层之上,主要负责处理逻 辑问题,需要进行网络读写时,通过网络传输层完成。网络链路控制器,用于绑定一个本地
4端口或者称为网络地址(socketaddress),负责所有使用绑定端口发送的数据;由于目的 地址不同,每个目的地址与本地端口地址建立一条传输链路,每个网络链路控制器可以拥 有多条传输链路。传输链路,其链路由本地地址与目的地址作为链路的唯一标识。而数据处 理器,在发送数据时,对需要发送的数据按传递顺序进行编号;接收数据时,按照数据编号 进行数据整合,完成整合的数据按照顺序向上传递到逻辑处理层进行处理。此外,网络传输 端口 或者称为SocketAddress,网络传输地址,由IP+port组成,如202. 96. 69. 38 :4578 ; 网络传输地址在网络中是唯一 的存在,标识本机的通信地址。
本发明基于UDP协议的数据传输方法,具体包括如下步骤 (1)发送终端将待发送的文件分成数据包,为数据包设置序号,以便接收终端将各 个数据包重新恢复为发送的文件; (2)发送终端在每个链路内拥有三个数据存储队列,分别是等待发送数据队列、
等待应答数据队列和补发数据队列。其中,等待发送数据队列,在队列内存储等待发送的数
据,使用可靠传输,要求接收方接到数据后给予发送方应答(通知已收到)。等待发送数据
队列等待应答数据队列,队列内的数据已经发送过,等待对方收到后的响应,确认对方收
到。补发数据队列,当一定时间内未收到对方的响应信息,对可能丢失的数据进行补发。传
输链路中存储了所有的关于此链路的数据,数据传递给链路后直接添加到"等待发送数据
队列",由发送线程将数据从"等待发送数据队列"中取出,写入网络端口 ;然后将数据加入
"等待应答数据队列",并定时检查响应,一定时间内没有受到应答,将会操作"补发数据队
列"进行补发。
具体方式为 a)等待发送数据队列将数据包信息以先进先出的方式按序排列,并且基于UDP协 议建立传输链路实现数据包的传输。 b)当等待发送数据队列中的一个数据包数据全部发出后,将该数据包信息从等待 发送数据队列放入所述等待应答数据队列,等待接收终端应答;当接收终端应答接收成功 时,等待应答数据队列删除成功传输的数据包信息。 c)当接收终端对所述等待应答数据队列中的数据包超时或未应答,则将该数据包 放入补发数据队列,用于等待重新放入等待发送数据队列进行发送。 此处,"超时"概念如下通常这个时间根据RTT值来计算,RTT值在网络中称为 回路时间,也就是一个数据包从发送时间开始计算,到接受到响应包结束,其间所耗用的时 间。超时是以RTT值为基准,本发明优选方式下,第一次计时以2个RTT值时间为开始补发 的计时基础,第二次是4个RTT值,依此类推,2倍数的递增方式。当数据包的总发送时间超 过5秒,认为链路存在故障,并放弃发送。对于首次发送的数据包,RTT值默认为50毫秒到 300毫秒中的一个优选数值;而对于多个反馈的数据包,RTT值可取平均或加权平均计算获 得。通常情况下,未应答的状态也以超时为判断前提,也就是说,在一定时间后无法接受到 响应,即可直接判定为未作应答;因此此处"超时"、"未作应答"的概念等同。
根据附图l,分别说明发送终端和接收终端的实现过程。 发送终端首先由逻辑控制层产生数据,数据经程序内部传递,传递到网络层,网络 层根据数据绑定的本地地址,关联网络链路控制器,再根据目的地址绑定具体的传输链路, 找到具体的链路后,将数据传递给数据处理器,对数据进行传输编号,以防止传输顺序错乱,并将数据封装在可执行接口内部;封装完毕后,将对应的网络链路控制器添加到执行队 列,等待独立执行线程访问。独立执行线程遍历执行队列,按照队列内的排放顺序,将网络 链路控制器逐个取出,检索传输链路,将需要发送的数据发送,通过网络端口 ,发送向目的 地。 而接收终端由独立线程定时遍历本地所有的网络链路控制器,读取接收到的存在 于所有链路的数据,每接收到一个数据对发送方做接收数据应答,将接收完整的数据传递 给数据处理器,由数据处理器对接收到的数据作整理,通过排序整合,将接续的数据向上传 递,交给逻辑处理层作处理,非连续的数据等待数据接续后再上传。 本发明基于UDP协议的数据传输方法,通过发送数据后,返回接收数据响应的方 式,对发送的每一个数据进行确认,达到数据可靠传输的目的,每个数据都需要应答时,发 送数据的速度就相应的降低了,针对于这种情况,采取同时传输多个数据来提高速度,即允 许同时存在多个未收到"接收数据响应"的数据在网络中传输,这样在网络层传输的速度就 大大的提高了 ;在网络传输的过程中每个数据所走的路径都可能不同,相应的达到目的地 的速度也不同,在网络传输中由于应用的不同,对于数据的传送速度要求也不同,有很多应 用需要保证数据的收发顺序,目前多个包在网络中传输,传输速度是无法保证,我们只能通 过程序内部来保障顺序,在数据发送前,对数据进行编号,接收数据时,按照编号重新排序, 为防止过多的无序数据对网络层造成太大的压力,程序内部会将数据的数量控制在一定的 范围之内,通过以上的手段结合应用,来实现UDP的可靠传输。 以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此, 任何熟悉本技术领域的技术人员在本发明披露的技术范围内,根据本发明的技术方案及其 发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
权利要求
一种基于UDP协议的数据传输方法,包括在发送终端和接收终端之间建立传输链路的步骤,以及依靠所述传输链路传输数据的步骤;其特征在于,具体包括如下步骤(S1)所述发送终端将待发送的文件分成数据包,为数据包设置序号,以便所述接收终端将各个数据包重新恢复为发送的文件;(S2)所述发送终端设置三个队列,包括等待发送数据队列、等待应答数据队列和补发数据队列;所述等待发送数据队列,将数据包信息以先进先出的方式按序排列,并且基于UDP协议建立传输链路实现数据包的传输;(S3)当所述等待发送数据队列中的一个数据包数据全部发出后,将该数据包信息从所述等待发送数据队列放入所述等待应答数据队列,等待所述接收终端应答;当所述接收终端应答接收成功时,所述等待应答数据队列删除成功传输的数据包信息;(S4)当所述接收终端对所述等待应答数据队列中的数据包未做应答时,则将该数据包放入所述补发数据队列,用于等待重新放入所述等待发送数据队列进行发送。
2. 根据权利要求1所述基于UDP协议的数据传输方法,其特征在于,步骤(S2)中,所述 等待发送数据队列根据数据包的编号按序排列。
3. 根据权利要求2所述基于UDP协议的数据传输方法,其特征在于,同一时刻,所述发 送终端和接收终端之间建立多个传输链路。
全文摘要
本发明公开了一种基于UDP协议的数据传输方法,具体步骤如下(S1)发送终端将待发送的文件分成数据包,为数据包设置序号,以便接收终端将各个数据包重新恢复为发送的文件;(S2)发送终端设置三个队列,当等待发送数据队列中的一个数据包数据全部发出后,等待接收终端应答;当接收终端应答接收成功时,等待应答数据队列删除成功传输的数据包信息。当接收终端对所述等待应答数据队列中的数据包超时未应答,则将该数据包放入补发数据队列,用于等待重新放入所述等待发送数据队列进行发送。本发明拓宽了网络间用户互相连接的范围,大幅提高了网络的传输效率,可以广泛地应用于互联网技术下的数据传输,并且能够保证数据传输的可靠性。
文档编号H04L12/56GK101778093SQ20091001007
公开日2010年7月14日 申请日期2009年1月13日 优先权日2009年1月13日
发明者李德宝, 蒋一 申请人:蒋一
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1