数据传输方法、数据发送方法及数据接收方法

文档序号:7918550阅读:162来源:国知局

专利名称::数据传输方法、数据发送方法及数据接收方法
技术领域
:本发明涉及网络数据传输技术,特别涉及数据传输方法、数据发送方法及数据接收方法。
背景技术
:当今的许多设备和基于计算的服务依赖于通信系统在彼此之间传送必要的信息。所述的通信系统通常由多个独立的通信网络构成,其中包括有线网纟备和无线网纟各。用户数据报协议(UDP)是一种面向非连接的网络传输协议,处于网络分层模型中的传输层,它不保证传输可靠性。在网络不稳定的情况下,将应用层数据承载于UDP包中进行传输可能造成数据包丟失,可见,UDP无法满足一些对数据传输要求较高的应用的需要。传输控制协议(TCP)同样处于传输层,它是一种面向连接的网络传输协议,可供对可靠性要求较高的应用层协议选择,用以承载其数据包。基于TCP进行数据传输时需要首先在收发双方之间建立TCP连接,而在网络质量较差的情况下,特别是在无线网络中,收发双方之间的TCP连接可能出现频繁的断连,连接每断掉一次,就需要重新建立一次TCP连接,而建立TCP连接需要收发双方进行多次信令交互,这将导致在收发双方之间产生许多额外的数据通信量,从而使得传输效率较低。另外,根据TCP协议的规定,即使在收发双方之间没有数据需要发送的情况下,也需要向对方发送心跳包以维持双方之间的TCP连接,这也在一定程度上导致了通信资源的浪费。
发明内容有鉴于此,本发明的主要目的在于提供一种数据传输方法、一种数据发送方法及一种数据接收方法,以在保持较高传输效率的前提下,获得较高的数据传输可靠性。为达到上述目的,本发明的技术方案具体是这样实现的一种数据传输方法,包括A、发送方将携带有校验信息的应用层数据包封装到面向非连接的传输层协议数据包中发出,并将所述应用层数据包存储于緩冲区中,启动重传定时器;B、接收方接收所述传输层协议数据包,从中获取携带有校验信息的应用层数据包,并根据所述校验信息判断所接收的应用层数据包是否正确,若正确,发出对应于所述应用层数据包的、表示应用层数据包正确接收的确认包;若不正确,发出对应于所述应用层数据包的、表示应用层数据包未正确才妄收的确认包;C、若发送方接收到接收方返回的对应于所述应用层数据包的、表示应用层数据包未正确接收的确认包,或在所述重传定时器超时时尚未接收到接收方返回的对应于所述应用层数据包的、表示应用层数据包正确接收的确认包,则执行步骤D,否则,执行步骤E;D、发送方重传緩冲区中的该应用层数据包,重新启动重传定时器,并返回步骤C;E、发送方将緩冲区中的该应用层数据包删除。一种数据发送方法,包括Al、发送方将携带有校验信息的应用层数据包封装到面向非连接的传输层协议数据包中发出,并将所述应用层数据包存储于緩冲区中,启动重传定时器;Bl、若发送方接收到接收方返回的对应于所述应用层数据包的、表示7应用层数据包未正确接收的确认包,或在所述重传定时器超时时尚未接收到对应于所述应用层数据包的、表示应用层数据包正确接收的确认包,则执行步骤C1,否则,执行步骤D1;Cl、发送方重传緩冲区中的该应用层数据包,重新启动重传定时器,并返回步骤Bl;Dl、发送方将缓冲区中的该应用层数据包删除。一种数据接收方法,包括a、接收方接收来自于发送方的面向非连接的传输层协议数据包,从中获取携带有校验信息的应用层数据包;b、接收方计算所述应用层数据包的校验结果,比较所述校验结果与所述校验信息是否相同,若校验结果与校验信息相同,判定应用层数据包正确接收,发出对应于所述应用层数据包的、表示应用层数据包正确接收的确认包;若校验结果与校验信息不相同,判定应用层数据包未正确接收,发出对应于所述应用层数据包的、表示应用层数据包未正确接收的确认包。本发明对应于上述数据发送方法的数据接收方法在接收到携带有校验信息的应用层数据包之后,通过计算该应用层数据包的校验结果,并通过比较所述校验结果与所述校验信息是否相同来判断所述应用层数据包是否正确接收,在正确接收的情况下,向发送方返回对应于所述应用层数据包的、表示应用层数据包正确接收的确认包,使发送方确认其发出的数据包已被正确接收;在未正确接收的情况下,向发送方返回对应于所述应用层数据包的、表示应用层数据包未正确接收的确认包,使发送方可以重发所述未正确接收的应用层数据包,从而提高了数据传输的可靠性。同样地,由于本发明所述应用层数据包和确认包是通过面向非连接的传输层协议数据包承载的,数据收发双方之间无需建立连接,从而节省了许多用于信令交互、保持连接的通信资源,从而保证了较高的传输效率。可见,本发明通过在应用层引入校验机制和超时重传机制,并将应用层数据承载于面向非连接的传输层协议数据包中进行传输,从而在保持较高传输效率的前提下,获得了较高的数据传输可靠性。图1为本发明实施例中数据传输方法的流程示意图;图2为本发明实施例中数据发送方法的流程示意图;图3为本发明实施例中数据接收方法的流程示意图;图4为本发明一较佳实施例中应用层数据包的结构示意图。具体实施例方式为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。本发明的主要思想是通过在应用层中引入校验机制和超时重传机制,并将应用层数据承载于面向非连接的传输层协议数据包中进行传输,从而在保持较高传输效率的前提下,获得了较高的数据传输可靠性。图1为本发明实施例中数据传输方法的流程示意图。参见图1,该方法包括步骤101:发送方将携带有校验信息的应用层数据包封装到面向非连接的传输层协议数据包中发出,并将所述应用层数据包存储于緩沖区中,启动重传定时器;步骤102:接收方接收所述传输层协议数据包,从中获取携带有校验信息的应用层数据包,并根据所接收的校验信息判断所述应用层'数据包是否正确,若正确,发出对应于所述应用层数据包的、表示应用层数据包正确接收的确认包;若不正确,发出对应于所述应用层数据包的、表示应用层数据包未正确4妻收的确i人包;步骤103:若发送方接收到接收方返回的对应于所述应用层数据包的、表示应用层数据包未正确接收的确认包,或在所述重传定时器超时时尚未接收到接收方返回的对应于所述应用层数据包的、表示应用层数据包正确接收的确认包,则执行步骤104,否则,执行步骤105;步骤104:发送方重传緩冲区中的该应用层数据包,重新启动重传定时器,并返回步骤103;步骤105:发送方将緩冲区中的该应用层数据包删除。至此,结束本发明数据传输方法流程。发送方与接收方之间的每一个待发送应用层数据包都可以按照本发明上述方法进行传输。数据传输通常在收发双方之间进行,事实上所述收发双方在数据传输过程中既是发送方又是接收方,但是数据发送的功能和数据接收的功能通常是独立实现的,因此,为便于更清楚地描述本发明,下面分别从数据发送和数据接收的角度,详细说明本发明数据发送方法和数据接收方法。图2为本发明实施例中数据发送方法的流程示意图。参见图2,该方法由发送方执行,发送方预先设置重传次数上限以及应用层数据包长度上限,并收集数据信息,在需要发送所收集的数据信息时,该方法包括步骤201:判断本次数据发送是否为收发双方之间的第一次数据传输,如果是,执行步骤202,否则,跳到步骤206。为保证收发双方之间的数据传输安全性、以及收发双方之间对对方进行身份认证,在第一次数据传输的过程中,收发双方之间可以进行密钥协商以及身份认证等。本步骤所述发送方与接收方之间的第一次数据传输是针对每一次在收发双方之间建立的通信而言的,即收发双方之间建立一个通信,进行了若干次数据交互,停止双方之间的通信后,若下次再需要建立通信,则被认为是另外一次通信。步骤202:判断是否需要对数据传输进行加密,若需要,执行步骤203,否则,跳到步骤204。步骤203:随机生成第一随机数(以下记为rl),将该rl或rl的可逆变换形式携带于应用层数据包中,并将表示该应用层数据包携带有随机数的信息携10带于应用层数据包中。可以预先约定用于对rl进行可逆变换的变换算法,接收方收到发送方携带于应用层数据包中的rl的可逆变换形式后,可以4艮据所述约定的变换算法对rl的可逆变换形式进行逆变换,从而得到rl。步骤204:判断接收方是否需要对自身进行认证才能建立通信,如果是,执行步骤205,否则,跳到步骤206。本步骤所述认证机制适用于服务器/客户端模式,服务器端存储有客户端的认证信息,在客户端向服务器请求进行通信之前,服务器需要对客户端进行认证,因此,客户端需要将供服务器对自身认证的信息携带于应用层数据包中发送给服务器。步骤205:将供接收方认证自身的信息携带于应用层数据包中。本步骤中,为了加强对认证信息的保护,可以用步骤203所述随机数rl,对供接收方认证自身的信息进行加密,并将所得到的密文作为供接收方认证自身的信息携带于应用层数据包中。步骤206:判断应用层数据包的长度是否超过预先设置的应用层数据包长度上限,若超过,则执行步骤207,否则,跳到步骤208。本步骤所述应用层数据包长度上限可以根据统计得到的数据包长度与丢包概率之间的对应关系进行合理的设置。例如表1示出了统计得到的GPRS网络中不同长度的数据包的丢包概率<table>tableseeoriginaldocumentpage11</column></row><table>表1表l中,数据包长度以字节计算。步骤207:按照所设置的应用层数据包长度上限对应用层数据包进行分包处理得到多个新的应用层凝:据包;将这多个新的应用层数据包单独封装到每一个传输层协议数据包中,并将相同的流水号、表示该应用层数据包已被分包处理的信息、总分包个数、当前包编号携带于每一个新的应用层数据包中。本步骤所述流水号表示当前应用层数据包的编号,该编号从1开始累加、溢出后再从1开始计数。由同一个应用层数据包分包处理得到的多个新的应用层^t据包具有相同的流水号,利用所述相同的流水号,以及每个应用层萄:据包中携带的总分包个数和当前包编号,使得接收方在收到这些数据包之后,可以很方便地进行重新组装,得到分包之前的应用层数据包。步骤208:判断本地是否存储有用于对本次通信进行加密的密码,如果有,执行步骤209,否则,跳到步骤210。如步骤201所述,若需要对所传输的数据进行加密,收发双方将在第一次数据传输过程中进行密钥协商,协商好的密钥由收发双方各自保存,用于后续的凄史据加密。由于本流程是从发送方的角度进行描述,关于密码协商、密码存储将在后面的步骤中涉及。步骤209:以存储的密码对应用层数据包中携带的数据进行加密,并将表示该应用层数据包中的数据已被力。密的信息携带于该应用层数据包中。步骤210:判断是否需要对方应答本应用层数据包,如果需要,执行步骤211,否则,跳到步骤212。发送方发给接收方的应用层数据包有的是需要应答的,例如携带有认证信息的数据包,需要对方进行认证之后,返回是否认证通过的应答包,此时,需要发送方在应用层数据包中携带表示需要对方应答的信息。步骤211:将表示需要应答的信息携带于该应用层数据包中。步骤212:将应用层数据包的校验信息携带于该应用层数据包中。本步骤所述校验信息是对从应用层数据包的包头至应用层数据包的数据段末尾的数据进行校验得到的校验信息,可以采用CRC校验等方式进行校验。步骤213:将应用层数据包封装到面向非连接的传输层协议数据包中。步骤214:将该传输层协议数据包发出,并将所述应用层数据包存储于緩冲区中,启动重传定时器。步骤215:判断是否在重传定时器超时时尚未接收到对应于所发出应用层数据包的确认包,如果是,执行步骤216,否则,执行步骤217。步骤216:判断发出该应用层数据包的次数是否已超过预先设置的重传次数上限,若未超过,则返回步骤214,否则,结束本次与接收方之间的通信。步骤217:根据所收到的确认包中携带的信息判断应用层数据包是否被正确接收,若没有被正确接收,执行步骤216,否则,执行步骤218。步骤218:删除緩冲区中的该应用层数据包。步骤219:如果所发出的应用层数据包需要对方的应答,则判断是否在重传定时器超时时尚未收到对应于该应用层数据包的应答包,如果是,执行步骤216,否则,执行步骤220。步骤220:向发送方发出对应于该应答包的确认包,并从该应答包中获取对方的应答信息,根据所述应答信息进行相应的操作。本步骤中,发送方从应答包中所获取的应答信息与发送方之前向接收方发出的数据包的内容有关,例如如果在步骤203将随机数rl或rl的可逆变换形式携带于应用层数据包中发给了接收方,本次收到的应答包中,将携带有以rl加密后的第二随机数,以rl对该加密后的第二随机数解密,即可得到用于后续数据加密的密码,此时,需要将所述第二随机数作为密码存储;如果在步骤205将供接收方认证自身的信息携带于应用层数据包中发给了接收方,本次收到的应答包中,将携带有对方对自身的认证结果,发送方可以根据该认证结果判断对方对自身的认证是否通过,若通过,可以继续正常地进行后续数据传输,若未通过,则可能需要重新发起认证过程。以上只是举例说明,在实际应用中,发送方与接收方之间可能进行身份注销、修改认证信息或其他控制等,这些都需要接收方的应答,而接收方的应答根据发送方所请求内容的不同将有所不同。至此,完成一次数据传输过程中,数据发送方所执行的流程。可以按照上述方法发送下一个应层数据包,直至发送完所有待发送数据。13图3为本发明实施例中数据接收方法的流程示意图。参见图3,该方法由接收方执行,接收方预先设置重传次数上限,并按照如下步骤进行数据接收步骤301:接收面向非连接的传输层协议数据包,从中获取携带有校验信息的应用层数据包。步骤302:判断本地是否存储有用于对本次通信进行加密的密码,如果有,执行步骤303,否则,跳到步骤307。步骤303:以存储的密码对应用层数据包中携带的数据解密。步骤304:计算应用层数据包的校验结果,比较所述校验结果与应用层数据包中所携带的校验信息是否相同,若校验结果与校验信息相同,执行步骤305;若校验结果与校验信息不相同,跳到步骤306。步骤305:在校验结果与校验信息相同时,判定应用层数据包正确接收,发出对应于所述应用层数据包的、表示应用层数据包正确接收的确认包,跳到步骤315。步骤306:在校验结果与校验信息不相同时,判定应用层数据包未正确接收,发出对应于所述应用层数据包的、表示应用层数据包未正确接收的确认包,跳到步骤315。步骤307:计算应用层数据包的校验结果,比较所述校验结果与应用层数据包中所携带的校验信息是否相同,若校验结果与校验信息相同,执行步骤308;若校验结果与校验信息不相同,跳到步骤309。步骤308:在校验结果与校验信息相同.时,判定应用层数据包正确接收,发出对应于所述应用层数据包的、表示应用层数据包正确接收的确认包,跳到步骤310。步骤309:在校验结果与校验信息不相同时,判定应用层数据包未正确接收,发出对应于所述应用层数据包的、表示应用层数据包未正确接收的确认包。步骤310:判断应用层数据包中是否携带有表示该应用层数据包携带有随机数的信息,如果携带有,执行步骤311,否则,跳到步骤312。步骤311:从所述应用层数据包中获取第一随机数,或从所述应用层数据包中获取第一随机数的可逆变换形式,并对所述第一随机数的可逆变换形式进行逆变换得到第一随机数。如步骤203所述,可以预先约定用于对rl进行可逆变换的变换算法,如此,若在本步骤中收到rl的可逆变换形式,就可以根据该约定的变换算法对rl的可逆变换形式进行逆变换,从而得到rl。步骤312:判断应用层数据包中是否携带有用于对发送方进行认证的信息,如果携带有,执行步骤313,否则,跳到步骤315。本步骤中,所获取到的信息可能是经rl加密后的信息,可以以rl对所述信息进行解密,得到用于对对方进行认证的信息。步骤314:对发送方进行认证,得到认证结果。本步骤中,可以根据自身预先保存的对方的认证信息,结合对方本次发送过来的认证信息对对方进行认证。步骤315:判断应用层数据包中是否携带有表示需要应答的信息,若携带有,执行步骤316,否则,跳到步骤320。步骤316:发出对应于应用层数据包的应答包,并将所述应答包存储于緩冲区中,启动重传定时器。本步骤中,所发出的应答包中携带的内容与本次所接收到的对方的应用层数据包有关,在发送应答包之前可以判断本次是否收到的对方发送的随机数rl,若收到,可以随机生成第二随机数(以下记为r2),将r2存储为密码,并将r2携带于该应答包中;本次是否对对方进行了-险证,若进行了验证,将验证结果携带于该应答包中,等等。以上只是举例说明,在实际应用中,发送方与接收方之间可能进行身份注销、修改认证信息或其他控制等,这些都需要向接收方发送相应的应答包。步骤317:判断是否在重传定时器超时时尚未收到对应于该应答包的确认包,如果是,执行步骤318,否则,执行步骤319。步骤318:判断发出该应答包的次数是否已超过预先设置的重传次数上限,若未超过,则返回步骤316,否则,执行步骤319。步骤319:删除緩冲区中的该应答包。步骤320:判断应用层数据包中是否携带有表示该应用层数据包已被分包处理的信息,若携带有,执行步骤321,否则,结束本方法流程。这里,需要说明的是虽然本步骤所述判断在图3所示流程图中的执行次序处于步骤310~步骤319之后,但是,实际上在校验正确之后就可以执行本步骤所述判断。可见,本步骤与上述步骤310~步骤319之间没有绝对的先后次序关系,只是为了便于流程描述,而将本步骤的说明置于步骤310步骤319之后。步骤321:从应用层数据包中获取流水号、总分包个数和当前包编号,将流水号相同的应用层数据包按照其对应的当前包编号组合成完整的应用层数据包。至此,完成一次数据传输过程中,数据接收方所执行的流程。可以按照上述方法接收下一个应层数据包,直至接收完所有待发送数据。以上结合附图对本发明数据传输方法、数据发送方法和数据接收方法进行了详细说明,下面通过一个具体示例进一步详细说明本发明的具体实施方式。对应于本发明技术方案,可以设置如图4所示的应用层数据包结构。参见图4,图4为本发明一4交佳实施例中应用层数据包的结构示意图,该应用层数据包可以分为包头、业务包头、翁:据区和包尾。其中1)包头包括起始标志字段和数据包长度字段,这是数据包的常规组成部分a)起始标志为数据包起始符,用于标识一个应用层数据包的开始。b)数据包长度表示该应用层数据包从包头到包尾的总长度。2)业务包头包括请求流水号字段、标志位字段、协议版本号字段、终端唯一识别号字段、包类型字段、功能号字段、数据包时间戳字段和数据区长度字段等,以及可选的加密密码字段、总包号字段、当前包号字段和返回码字段等。其中c)请求流水号即步骤207所述流水号,表示当前数据包的编号,该编号从1开始累加、溢出后再从1开始计数;对应于某应用层数据包的确认包和应答包中,请求流水号字段的取值与该应用层数据包请求流水号字段的取值相同;由同一应用层数据包经分包处理后得到的多个包的请求流水号相同,以便接收端组装得到分包处理之前的应用层数据包。d)标志位用于携带标志信息,例如表示该应用层数据包中是否携带有密码信息、数据段是否被加密、是否进行了分包处理、是否需要对方应答、是否有返回码、是否对数据段进行了压缩、是否携带有认证信息等;可以设置该标志位占用l字节,并以各比特位的不同取值表示不同的标志信息。e)加密密码用于携带收发双方之间的密码信息,例如发送方首次发送给接收方的应用层数据包中所携带的随机数rl或rl的可逆变换形式就可以携带在该字段中;加密密码字段可以与标志位字段结合使用,即当标志位字段置为携带有密码信息时,在加密密码字段携带密码信息。f)总包号表示分包处理得到的总分包个数,当前包号表示当前包在分包处理得到的包中所处的编号;总包号字段和当前包号字段与标志位字段结合使用,即当标志位字段置为该包进行了分包处理时,在总包号字段和当前包号字段携带总包号信息和当前包号信息。g)协议版本号标志协议的不同版本号,可以默认设置为O。h)终端唯一识别号为用于区别各个终端的唯一标识符。i)包类型,对应于本发明有三种类型请求包、确认包和应答包。j)功能号用于表示当前应用层数据包用于执行什么操作。例如用于登录、注销、修改密码、数据传输、控制等。k)返回码用于携带相应应用层数据包的执行结果,与标志位结合使用。例如当接收到一个应用层数据包,校验不正确时,可以在针对该应用层数据包的确认包的返回码字段携带表示应用层数据包未正确接收的信息。1)数据包时间戳表示当前数据包的打包时间。17m)数据区长度表示应用层数据包中数据段的数据长度。3)数据区即数据段,是可选字段,用于存放数据内容,发送方发送给接收方的供接收方对发送方进行认证的信息也可以置于数据段中发送。4)包尾包括校验字段和结束标志字段o)校验字段用于携带应用层数据包的校验信息,所述校验信息是从应用层数据包的包头至应用层数据包的数据段末尾的数据进行校-验得到的信息,可以采用目前最常用的CRC校验。p)结束标志为数据包结束符,用于标识一个应用层数据包的结束。基于图4所示应用层数据包结构,可以构造相应的请求包、确认包、应答包以执行本发明所述数据传输方法。表2为本发明一较佳登录请求包的字段组成表<table>tableseeoriginaldocumentpage18</column></row><table>表2表2所示登录请求包可以用于发送方第一次向请求方发送随机数rl和认证信息。参见表2,随机数rl和rl的可逆变换形式可以置于表2所示加密密码字段中,并将标志位字段置为表示该登录请求包中携带有密码信息;包类型字段置为请求包类型;功能号字段置为与登录相应的取值;发送方的认证信息可以置于数据区中,如表2所示认证密码字段。<table>tableseeoriginaldocumentpage19</column></row><table>表2所示确认包可以用于接收方向发送方返回针对某一请求包的确认。参见表3,其请求流水号保持与相应的请求包一致;包类型字段置为确认包类型;功能号字段保持与相应的请求包一致;返回码字段携带确认信息,可以设置该字段为0表示正确接收,该字段为其他值表示未正确接收,并可以通过不同的错误号区分不同的错误。表4为本发明一较佳应答包的字段组成表:字段名称类型长度描述业务包头内容请求流水号(SerialNo)INT41234,同请求包一致标志位(Flag)Byte100001011协议版本号(Ver)BYTE1标志协议的不同版本号,默认为o。终端唯一识别号(VIN)CHAR17终端唯一识别号包类型(PackageType)BYTE13,即应答包功能号(FunctionNo)SHORT21000返回码(RetumCode)SHORT2执行结果数据包时间戳LONG41198223932数据段长度(DataLength)INT4数据段长度数据区内容会话密码(SessionPWD)U64864位会话密码表4表4所示应答包可以用于接收方向发送方返回针对某一登录请求包的应答。参见表4,其请求流水号保持与相应的请求包一致;包类型字段置为应答包类型;功能号字段保持与相应的请求包一致;返回码字段携带执行结果,针对本例,可以是对发送方的认证结果;接收方向发送方返回的用于本次通信的加密密码信息可以置于数据区中,如表4所示会话密码字段。基于表2表4所定义的应用层数据包,可以实现发送方与接收方之间的认证通信。通常,在认证通信中,通信双方中的被认证方为客户端,认证方为服务器端。该认证通信包括以下步骤20第1步客户端建立UDP链接,根据表2,封装登录请求包,并通过UDP发送给服务器端,同时将所发送的数据包保存在数据緩冲区中。第2步服务器端接收到数据包后,封装对应于该登录请求包的确认包,发送给该客户端,同时查询该客户端相关登录信息的正确性后,封装对应于该登录请求包的应答包,发送给客户端。第3步客户端在收到确认包后,删除緩冲区该登录请求包,如果在一定的时间内没有接收到该确认包,则再次发送缓沖区中的登录请求包,如果在发送一定次数后,还是没有收到该确认包,则认为网络不可用,需要重新连接。第4步客户端收到登录请求包的应答包后,封装确认包,发送给服务器端,同时解析数据包并判断应答包中的返回码,如果返回码为0,则表示登录成功,如果返回码为其他,则执行与该返回码相应的处理流程。在具体实施本发明技术方案时,可以按照表5i殳置以下各种网络中的重传定时器长度和重传次数上限<table>tableseeoriginaldocumentpage21</column></row><table><table>tableseeoriginaldocumentpage22</column></row><table>表6表6所示数据请求包可以用于受发送双方之间进行数据交互。参见表6,对于经分包处理的数据包,可以使其请求流水号相同,并将总包号字段和当前包编号字段置为相应取值,以便于接收方进行包的重组。表6中数据区的内容可以是加密之后的数据,此时,需要将标志位字段置为表示数据段已被加密的信息。收发双方之间的普通数据交互流程可以按照以下步骤进行22第1步客户端建立UDP链接,根据表6,封装数据请求包,并通过UDP发送给服务器端,同时将所发送的数据保存在数据緩冲区中。第2步服务器端接收到数据包后,封装对应于该数据请求包的确认包,直接发送给该客户端。第3步客户端在收到确认包后,删除緩冲区该数据请求包,如果在一定的时间内没有接收到该确认包,则再次发送緩沖区中的数据请求包,如果在发送一定次数后,还是没有收到该确认包,则认为网络不可用,需要重新连接。中携带校验信息,使得接收方能够根据所述校验信息判断数据接收的正确性;并且,通过在将该应用层数据包携带于面向非连接的传输层协议数据包中发出之后启动重传定时器,并在重传定时器超时时尚未收到对应于该应用层数据包的、表示应用层数据包正确接收的确认包的情况下,重发该传输层协议数据包,使得传输层协议的不可靠性得到了很大的弥补,获得了较高的传输可靠性。并且,由于本发明所述应用层数据包和确认包是通过面向非连接的传输层协议数据包承载的,数据收发双方之间无需建立连接,从而节省了许多用于信令交互、保持连接的通信资源,从而保证了较高的传输效率。本发明对应于上述数据发送方法的数据接收方法在接收到携带有校验信息的应用层数据包之后,通过计算该应用层数据包的校验结果,并通过比较所述校验结果与所述校验信息是否相同来判断所述应用层数据包是否正确4妄收,在正确接收的情况下,向发送方返回对应于所述应用层凄t据包的、表示应用层数据包正确接收的确认包,使发送方确认其发出的数据包已被正确接收;在未正确接收的情况下,向发送方返回对应于所述应用层数据包的、表示应用层数据包未正确接收的确认包,使发送方可以重发所述未正确接收的应用层数据包,从而提高了数据传输的可靠性。同样地,由于本发明所述应用层数据包和确认包是通过面向非连接的传输层协议数据包承载的,数据收发双方之间无需建立连接,从而节省了许多用于信令交互、保持连接的通23信资源,从而保证了较高的传输效率。可见,本发明通过在应用层引入校验机制和超时重传机制,并将应用层数据承栽于面向非连接的传输层协议,在保持较高传输效率的前提下,获得了较高的数据传输可靠性。此外,为了提高数据传输的安全性,本发明可以在应用层对数据进行加密,并将经加密之后的数据承载于传输层协议数据包中进行传输。并且,为了保证加密密码的传输安全性,本发明在收发双方之间交换密钥时采取了由一方发送随^L数,另一方将加密密钥以该随^L数加密之后发回所述一方的方式,以及针对收发双方每一次新建立的通信,在第一次数据传输所涉及的应用层数据包中协商一次密码的方式。以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。权利要求1、一种数据传输方法,其特征在于,包括A、发送方将携带有校验信息的应用层数据包封装到面向非连接的传输层协议数据包中发出,并将所述应用层数据包存储于缓冲区中,启动重传定时器;B、接收方接收所述传输层协议数据包,从中获取携带有校验信息的应用层数据包,并根据所述校验信息判断所接收的应用层数据包是否正确,若正确,发出对应于所述应用层数据包的、表示应用层数据包正确接收的确认包;若不正确,发出对应于所述应用层数据包的、表示应用层数据包未正确接收的确认包;C、若发送方接收到接收方返回的对应于所述应用层数据包的、表示应用层数据包未正确接收的确认包,或在所述重传定时器超时时尚未接收到接收方返回的对应于所述应用层数据包的、表示应用层数据包正确接收的确认包,则执行步骤D,否则,执行步骤E;D、发送方重传缓冲区中的该应用层数据包,重新启动重传定时器,并返回步骤C;E、发送方将缓冲区中的该应用层数据包删除。2、一种数据发送方法,其特征在于,包括Al、发送方将携带有校验信息的应用层数据包封装到面向非连接的传输层协议数据包中发出,并将所述应用层数据包存储于緩冲区中,启动重传定时器;Bl、若发送方接收到接收方返回的对应于所述应用层数据包的、表示应用层数据包未正确接收的确认包,或在所述重传定时器超时时尚未接收到对应于所述应用层数据包的、表示应用层数据包正确接收的确认包,则执行步骤Cl,否则,执行步骤D1;Cl、发送方重传緩冲区中的该应用层数据包,重新启动重传定时器,并返回步骤B1;Dl、发送方将緩冲区中的该应用层数据包删除。3、根据权利要求2所述的方法,其特征在于,该方法进一步包括预先设置重传次数上限;在执行步骤Cl之前进一步包括发送方判断发出所述应用层数据包的次数是否已超过所述重传次数上限,若未超过,则执行步骤Cl,否则,结束与接收方之间的通4言。4、根据权利要求2或3所述的方法,其特征在于,所述步骤A1进一步包括当需要对方应答所述应用层数据包时,发送方将表示需要应答的信息携带于所述应用层数据包中;当发送方接收到接收方返回的对应于所述应用层数据包的应答包时,该方法进一步包括发送方发出对应于所述应答包的确认包。5、根据权利要求4所述的方法,其特征在于,当所述应用层数据包为收发双方之间的第一次数据传输时,所述步骤Al进一步包括发送方随^L生成第一随机数,将第一随机数或第一随机数的可逆变换形式携带于所述应用层数据包中,并将表示该应用层数据包携带有随机数的信息携带于所述应用层数据包中;当发送方接收到接收方返回的对应于所述第一次数据传输的应用层数据包的应答包时,进一步包括从所述应答包中获取发送方使用所述第一随机数加密后的第二随机数,以第一随机数对所述加密后的第二随机数解密得到第二随机数,将所述第二随机数作为密码存储;在发放方发送除第一次数据传输之外的应用层数据包时,所述步骤Al进一步包括以所述存储的密码对所述应用层数据包中携带的数据进行加密,并将表示所述应用层数据包中的数据已被加密的信息携带于所述应用层数据包中。6、根据权利要求5所述的方法,其特征在于,当所述应用层数据包为收发双方之间的第一次数据传输时,所述步骤Al进一步包括发送方将供接收方对自身进行认证的信息携带于所述应用层数据包中;当发送方接收到接收方返回的对应于所述第一次数据传输的应用层数据包的应答包时,进一步包括从所述应答包中获取接收方对自身的认证结果。7、根据权利要求2或3所述的方法,其特征在于,该方法进一步包括预先设置应用层数据包长度上限;所述步骤Al进一步包括当应用层数据包的长度超过所述应用层数据包长度上限时,发送方按照所述应用层数据包长度上限对所述应用层数据包进行分包处理得到多个新的应用层数据包;将所述多个新的应用层数据包单独封装到每一个传输层协议数据包中,并将相同的流水号、表示所述应用层数据包已被分包处理的信息、总分包个数、当前包编号携带于所述每一个新的应用层数据包中。8、一种数据接收方法,其特征在于,包括a、接收方接收来自于发送方的面向非连接的传输层协议数据包,从中获取携带有校验信息的应用层数据包;b、接收方计算所述应用层数据包的校验结果,比较所述校验结果与所述校验信息是否相同,若校验结果与校验信息相同,判定应用层数据包正确接收,发出对应于所述应用层数据包的、表示应用层数据包正确接收的确认包;若校验结果与4交验信息不相同,判定应用层数据包未正确接收,发出对应于所述应用层数据包的、表示应用层数据包未正确接收的确认包。9、根据权利要求8所述的方法,其特征在于,在步骤a之后进一步包括c、接收方判断所述应用层数据包中是否携带有表示需要应答的信息,若携带有,则发出对应于所述应用层数据包的应答包,并将所述应答包存储于緩沖区中,启动重传定时器;d、若在所述重传定时器超时时尚未接收到对应于所述应答包的确认包,则执行步骤e,否则,接收方将緩冲区中的该应答包删除;e、接收方重传缓冲区中的该应答包,并重新启动重传定时器。10、根据权利要求9所述的方法,其特征在于,该方法进一步包括预先设置重传次数上限;在执行步骤e之前进一步包括判断发出所述应答包的次数是否已超过所述重传次数上限,若未超过,则返回步骤e,否则,结束与发送方之间的通信。11、根据权利要求IO所述的方法,其特征在于,在步骤a之后进一步包括接收方判断所述获取到的应用层数据包中是否携带有表示该应用层数据包携带有随机数的信息,如果是,则从所述应用层数据包中获取第一随机数,或从所述应用层数据包中获取第一随机数的可逆变换形式,并对所述第一随机数的可逆变换形式进行逆变换得到第一随机数;在步骤c发出对应于所述应用层数据包的应答包之前,进一步包括接收方随机生成第二随机数,将所述第二随机数存储为密码,将由第一随机数加密后的第二随机数携带于所述应答包中;在接收方接收到来自于发送方的除第一次数据传输之外的应用层数据包时,该方法进一步包括接收方以所述存储的密码对所述应用层数据包中携带的数据解密。12、根据权利要求11所述的方法,其特征在于,在接收方判定所述获取到的应用层数据包中携带有表示该应用层数据包携带有随机数的信息之后,进一在步骤c发出对应于所述应用层数据包的应答包之前,进一步包括接收方根据所述用于对发送方进行认证的信息对发送方进行认证,并将认证结果携带于所述应答包中。13、根据权利要求10所述的方法,其特征在于,在步骤a之后进一步包括接收方判断所述应用层数据包中是否携带有表示所述应用层数据包已被分包处理的信息,若携带有,则从所述应用层数据包中获取流水号、总分包个数和当前包编号,将流水号相同的应用层数据包按照其对应的当前包编号组合成完整的应用层数据包。全文摘要本发明公开了一种数据传输方法,包括发送方将携带有校验信息的应用层数据包封装到传输层协议数据包中发出,并缓存该应用层数据包、启动重传定时器;接收方根据校验信息判断应用层数据包是否正确,若正确,发出表示正确接收的确认包;否则发出表示未正确接收的确认包;若发送方收到表示未正确接收的确认包,或在重传定时器超时时尚未收到表示正确接收的确认包,则重传缓冲区中的该应用层数据包,重新启动重传定时器;否则发送方将缓冲区中的该应用层数据包删除。本发明还公开了一种数据发送方法和一种数据接收方法。应用本发明能够在保持较高传输效率的前提下,获得较高的数据传输可靠性。文档编号H04L29/06GK101645883SQ20081014604公开日2010年2月10日申请日期2008年8月8日优先权日2008年8月8日发明者吴建锋,洲阮申请人:比亚迪股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1