数据传输方法与流程

文档序号:11148085阅读:599来源:国知局
数据传输方法与制造工艺
本发明涉及通信领域,特别是涉及一种数据传输方法。
背景技术
:目前,终端间通讯协议多采用HTTP(Hypertexttransferprotocol,超文本传输协议)、HTTPS(HypertextTransferProtocoloverSecureSocketLayer,以安全为目标的HTTP通道)、CoAP(ConstrainedApplicationProtocol,受限制的应用协议)、TFTP(TrivialFileTransferProtocol,简单文件传输协议)等。它们都是基于TCP/IP协议(TransmissionControlProtocol/InternetProtocol的简写,中文译名为传输控制协议/网际协议,又叫网络通讯协议)族衍生出来的通讯协议,HTTP是以三次握手的成功进行数据传输,同样的,HTTPS只把HTTP明文传输方式改为密文传输方式;COAP一般采用UDP(UserDatagramProtocol的简称,中文名是用户数据包协议)的形式传递数据,协议非常小,最小的数据包只有4bytes,低功耗的同时,数据传输效率低;TFTP也仅为较微型终端的文件传输而设计。随着日新月异的物联网技术,终端间也需远程通讯能力。因此,若终端用以上协议进行远程通讯,将十分依赖后台服务器作为信息中转站,无疑增加了设计成本和开发难度,也就使得物联网的远程通讯具有一定的局限性。技术实现要素:基于此,有必要提供一种数据传输方法,其在服务器上注册后,在不同的局域网内的终端可以进行通信,而不需要依赖服务器作为信息中转站。一种数据传输方法,所述方法包括:接入第一局域网以获取自身的外网IP地址;向服务器发送所获取的自身的外网IP地址和自身的终端标识符,且从所述服务器获取与所述服务器相连接的所有终端的外网IP地址和终端标识符;根据所述终端标识符,从与所述服务器相连接的终端的外网IP地址中查询目标终端的外网IP地址;所述目标终端处于第二局域网中;根据所述目标终端的外网IP地址与所述目标终端进行握手;在握手成功后,与所述目标终端进行数据传输。上述数据传输方法,向服务器进行注册后,可以获取在服务器注册的所有的终端的外网IP地址,通过该外网IP地址,终端可以和目标终端进行通信,不需要再将信息在服务器进行中转,提高了终端之间通信的实时性,进而提高了用户的体验。在其中一个实施例中,所述向服务器发送所获取的自身的外网IP地址和自身的终端标识符的步骤,包括:将自身的外网IP地址和自身的终端标识符依次通过第一局域网路由器、虚拟中转路由器发送到所述服务器;所述第一局域网路由器位于所述第一局域网中。在其中一个实施例中,所述根据所述目标终端的外网IP地址与所述目标终端进行握手的步骤,包括:根据所述目标终端的外网IP地址,通过所述局域网路由器和所述虚拟中转路由器,向所述目标终端发送第一数据包,该第一数据包的Session字段的值为第一预设值;接收所述目标终端所返回的与所述第一数据包相对应的第二数据包;当所述第二数据包的Session字段的值为第二预设值时,向所述目标终端发送第三数据包,该第三数据包的Session字段的值为第三预设值;接收所述目标终端所返回的与所述第三数据包相对应的第四数据包;当该第四数据包的Session字段的值为第四预设值时,输出与所述目标终端握手成功的结果。在其中一个实施例中,当向所述目标终端发送第一数据包或第三数据包后,在预设时间间隔内未接收到来自所述目标终端的数据包,则返回连接超时的结果。在其中一个实施例中,所述与所述目标终端进行通信的步骤,包括:获取待传输数据;将所述待传输数据依次通过所述第一局域网路由器、至少一个虚拟中转路由器和第二局域网路由器发送到所述目标终端;所述第二局域网路由器位于所述第二局域网中。一种数据传输装置,包括:自身地址获取模块,用于在接入第一局域网后获取自身的外网IP地址;注册模块,用于向服务器发送所获取的自身的外网IP地址和自身的终端标识符,且从所述服务器获取与所述服务器相连接的所有终端的外网IP地址和终端标识符;目标地址获取模块,用于根据所述终端标识符,从与所述服务器相连接的终端的外网IP地址中查询目标终端的外网IP地址;所述目标终端处于第二局域网中;握手模块,用于根据所述目标终端的外网IP地址与所述目标终端进行握手;通信模块,用于在握手成功后,与所述目标终端进行数据传输。在其中一个实施例中,所述注册模块还用于将自身的外网IP地址和自身的终端标识符依次通过第一局域网路由器、虚拟中转路由器发送到所述服务器;所述第一局域网路由器位于所述第一局域网中。在其中一个实施例中,所述握手模块包括:第一发送单元,用于根据所述目标终端的外网IP地址,通过所述局域网路由器和所述虚拟中转路由器,向所述目标终端发送第一数据包,该第一数据包的Session字段的值为第一预设值;第一接收单元,用于接收所述目标终端所返回的与所述第一数据包相对应的第二数据包;第二发送单元,用于当所述第二数据包的Session字段的值为第二预设值时,向所述目标终端发送第三数据包,该第三数据包的Session字段的值为第三预设值;第二接收单元,用于接收所述目标终端所返回的与所述第三数据包相对应的第四数据包;输出单元,用于在该第四数据包的Session字段的值为第四预设值时,输出与所述目标终端握手成功的结果。在其中一个实施例中,所述握手模块还包括:超时单元,用于在向所述目标终端发送第一数据包或第三数据包后,在预设时间间隔内未接收到来自所述目标终端的数据包时,返回连接超时的结果。在其中一个实施例中,所述通信模块包括:数据获取单元,用于获取待传输数据;第三发送单元,用于将所述待传输数据依次通过所述第一局域网路由器、至少一个虚拟中转路由器和第二局域网路由器发送到所述目标终端;所述第二局域网路由器位于所述第二局域网中。附图说明图1为一实施例中数据传输方法的流程图;图2为图1所示实施例的一应用场景图;图3为图1所示实施例中握手过程的流程图;图4为一实施例中数据传输的传输路径图;图5为一实施例中的数据传输装置的示意图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用于解释本发明,并不用于限定本发明。在详细说明根据本发明的实施例前,应该注意到的是,所述的实施例主要在于与数据传输方法相关的步骤的组合。因此,所属方法步骤已经在附图中通过常规符号在适当的位置表示出来了,并且只示出了与理解本发明的实施例有关的细节,以免因对于得益于本发明的本领域普通技术人员而言显而易见的那些细节模糊了本发明的公开内容。在本文中,诸如左和右,上和下,前和后,第一和第二之类的关系术语仅仅用来区分一个实体或动作与另一个实体或动作,而不一定要求或暗示这种实体或动作之间的任何实际的这种关系或顺序。术语“包括”、“包含”或任何其他变体旨在涵盖非排他性的包含,由此使得包括一系列要素的过程、方法、物品或者设备不仅包含这些要素,而且还包含没有明确列出的其他要素,或者为这种过程、方法、物品或者设备所固有的要素。请参阅图1所示,图1为一实施例中数据传输方法的流程图,在该实施例中,该数据传输方法可以包括:S102:接入第一局域网以获取自身的外网IP地址。具体地,外网IP地址是指在联网后在本局域网内或整个互联网中的有效身份,是实现两个处于不同的局域网的终端的虚拟握手的基本条件。其中,IP全称为InternetProtocol,意为互联网协议。S104:向服务器发送所获取的自身的外网IP地址和自身的终端标识符,且从服务器获取与服务器相连接的所有终端的外网IP地址和终端标识符。其中,终端的标识符是指终端的身份标识符,其是唯一的,每一个终端均有唯一的身份标识符,以便可以通过该身份标识符识别该终端。服务器是终端进行注册的平台,是建立两个处于不同局域网的终端之间联系的必要部件。在服务器上可以存储有与服务器相连接的各个终端的外网IP地址和终端标识符,其可以以表格的形式进行存储,当服务器接收到终端发送来的外网IP地址和自身的终端标识符时,则向该表格中添加所接收到的外网IP地址和自身的终端标识符,另外,服务器可以主动向与其相连接的终端下发该表格,也可以在终端欲进行通信时,终端主动向服务器获取该表格。S106:根据终端标识符,从与服务器相连接的终端的外网IP地址中查询目标终端的外网IP地址;目标终端处于第二局域网中。具体地,待进行数据传输的两个终端分别归属于不同的局域网内,例如,其中一个终端处于第一局域网中,另一个终端(即目标终端)处于第二局域网中,第一局域网和第二局域网并没有直接连接。当其中一个终端欲与另一个终端进行数据传输时,其首先会在服务器上进行注册,并获取也在服务器上进行注册过的其他终端的外网IP地址和终端标识符,从而可以根据目标终端的终端标识符查询到目标终端的外网IP地址。S108:根据目标终端的外网IP地址与目标终端进行握手。具体地,在数据进行传输之前,先进行握手过程,即通信的双方在通信前对通信的方式等进行协商,同时告诉对方已经准备好发送接收数据,握手成功则表示建立了通信通道,可以进行数据传输。S110:在握手成功后,与目标终端进行数据传输。具体地,两个终端经过在服务器上注册,并握手后,以后的数据传输则不再依赖服务器作为信息中转站,实现了不同局域网内的两个终端的数据传输。上述数据传输方法,向服务器进行注册后,可以获取在服务器注册的所有的终端的外网IP地址,通过该外网IP地址,终端可以和目标终端进行通信,不需要再将信息在服务器进行中转,提高了终端之间通信的实时性,进而提高了用户的体验。在其中一个实施例中,向服务器发送所获取的自身的外网IP地址和自身的终端标识符的步骤,即步骤S104可以包括:将自身的外网IP地址和自身的终端标识符依次通过第一局域网路由器、虚拟中转路由器发送到服务器;第一局域网路由器位于第一局域网中。具体地,局域网路由器主要是给终端分配外网IP地址,以及连接虚拟中转路由器或服务器。虚拟中转路由器主要是用于连接服务器、连接其他虚拟中转路由器或连接局域网路由器。请参阅图2所示,图2为图1所示实施例的一应用场景图,第一终端和第二终端均含有接入局域网的无线通信模块500,该无线通信模块500主要是WIFI通信模块,在其他的实施例中,还可以是蓝牙、zigbee等。第一终端接入第一局域网,第二终端接入第二局域网后,分别获取到其自身的外网IP地址,第一外网IP地址和第二外网IP地址,第一终端通过第一局域网路由器和第一虚拟中转路由器将第一外网IP地址和第一终端标识符发送到服务器,第二终端通过第二局域网路由器和第二虚拟中转路由器将第二外网IP地址和第二终端标识符发送到服务器,以实现第一终端和第二终端在服务器的注册。在其他的实施例中,第一终端和第二终端可以均需要经过多个虚拟中转路由器才能够将自身的外网IP地址和终端标识符发送到服务器上,例如,3个,4个,8个等,在此对该数量不作限制。在上述实施例中,通过局域网路由器和虚拟中转路由器将自身的外网IP地址和自身的终端标识符发送到服务器,实现了终端在服务器的注册,为后续两个终端之间建立通信通道奠定基础,且通过虚拟中转路由器进行信息的传输,高效、快速。在其中一个实施例中,第一终端和第二终端进行握手的数据包主要包括以下字段:Flags字段,其长度一般为2bytes,固定值为0xF0F0,用于定义数据包为Tunnelconnect数据包,即握手数据包,用于进行信道的建立。Session字段,其长度一般为4bytes,为发起会话的标识符。Stat字段,其长度一般为2bits,用于表示通信状态。Value字段,其长度一般为4bytes,用于质量统计参考,主要是丢包率的计算。Extras字段,其长度一般为4bytes,是用户扩展位,具体可以参见如下表1所示,表1:握手数据包Flags字段Session字段Stat字段Value字段Extras字段2bytes4bytes2bits4bytes4bytes在计算机程序中,可以通过结构体来定义该握手数据包,如下所示:请参阅图3所示,图3为图1所示实施例中握手过程的流程图,在该实施例中,第一终端和第二终端的握手机制是四次握手机制,即根据目标终端的外网IP地址与目标终端进行握手的步骤,即步骤S108可以包括:S302:根据目标终端的外网IP地址,通过局域网路由器和虚拟中转路由器,向目标终端发送第一数据包,该第一数据包的Session字段的值为第一预设值。具体地,一般设置第一预设值为0,即第一终端向第二终端发送请求连接的数据包中“Session=0”。S304:接收目标终端所返回的与第一数据包相对应的第二数据包。具体地,如果第二终端可正常通信,第二终端会响应第一终端发送来的第一数据包,并向第一终端发送第二数据包,一般第二数据包中Session字段的内容会相应地进行改变。S306:当第二数据包的Session字段的值为第二预设值时,向目标终端发送第三数据包,该第三数据包的Session字段的值为第三预设值。具体地,一般设置第二预设值为1,即“Session=1”在第一终端接收该第二数据包后,读取第二数据包的Session字段的内容,如果该Session字段的内容未1,则该第一终端会继续向第二终端发送第三数据包,该第三数据包中的Session字段的第三预设值一般设置为2,即“Session=2”。S308:接收目标终端所返回的与第三数据包相对应的第四数据包。具体地,如果第二终端可正常通信,第二终端会响应第一终端发送来的第三数据包,并向第一终端发送第四数据包,一般第四数据包中Session字段的内容会相应地进行改变。S310:当该第四数据包的Session字段的值为第四预设值时,输出与目标终端握手成功的结果。具体地,一般设置第四预设值为3,即“Session=3”在第一终端接收该第四数据包后,读取第四数据包的Session字段的内容,如果该Session字段的内容为3,则标识握手成功,即通信信道建立,可以进行后续的数据传输。在上述实施例中,通过四次握手机制,建立了第一终端和第二终端之间的通信信道,以便于后续数据传输的快速高效地进行。在其中一个实施例中,当向目标终端发送第一数据包或第三数据包后,在预设时间间隔内未接收到来自目标终端的数据包,则返回连接超时的结果。在该实施例中,一般握手发起数据包默认间隔为20毫秒/包,而设置预设时间间隔为4秒,因此如果超过4秒,则默认超时,在其他的实施例中,预设时间间隔可以为其他的时间,例如3秒、5秒、7秒等。在其中一个实施例中,与目标终端进行通信的步骤,即步骤S110可以包括:首先获取待传输数据。具体地,该待传输数据可以仍以上述数据包的方式进行传播,其可以设置在Extras字段中。其次将待传输数据依次通过第一局域网路由器、至少一个虚拟中转路由器和第二局域网路由器发送到目标终端;其中,第二局域网路由器位于第二局域网中。在该实施例中,由于第一终端和第二终端之间的距离可能较远,因此至少要通过一个虚拟中转路由器才能将待传输数据发送到目标终端,例如可以是1个虚拟中转路由器、3个虚拟中转路由器、6个虚拟中转路由器等。具体地,如图4所示,图4为一实施例中数据传输的传输路径图,第一终端和第二终端在握手成功后,两个终端之间可进行无障碍的数据传输。第一终端获取待传输数据,通过第一局域网路由器发送的到第一虚拟中转路由器,然后通过第一虚拟中转路由器发送到第二虚拟中转路由器,一直发送到第N虚拟中转路由器(N为大于等于2的正整数,第N虚拟中转路由器与第二局域网路由器直接相连接),再由第N虚拟中转路由器发送到第二局域网路由器,最后到达第二终端,第二终端根据发送来的数据执行相应的操作或动作。另外,如图4中的虚线所示,第一终端和第二终端在握手成功后,两个终端之间可进行无障碍的数据传输,第二终端获取待传输数据,通过第二局域网路由器发送的到第N虚拟中转路由器(N为大于等于2的正整数,第N虚拟中转路由器与第二局域网路由器直接相连接),然后通过第N虚拟中转路由器发送到第N-1虚拟中转路由器,一直发送到第一虚拟中转路由器,再由第一虚拟中转路由器发送到第一局域网路由器,最后到达第一终端,第一终端根据发送来的数据执行相应的操作或动作。上述实施例中,在第一终端和第二终端握手成功后,第一终端和第二终端通过局域网路由器和虚拟中转路由器实现高效、快速的实时穿透通信,不再依赖服务器作为信息中转站。在其中一个实施例中,当与目标终端通信结束后,可以关闭与目标终端相通信的接口。上述方法可以是依赖UDP(UserDatagramProtocol,用户数据包协议)和IPv4(是互联网协议的第四版),API(ApplicationProgrammingInterface,应用程序编程接口)采用UnixTCPProgramming协议穿透(Tunnel)。在经过四次握手穿透成功连接后,断开连接仅需要关闭UDPsocket,其操作简单。另外,可以使用丢包率的统计方法来评价上述的数据传输方法的当前穿透会话的网络信号的强度,例如使用Value字段来统计当前发送和接收的数据包的数量,例如当Value(step#n)中n为偶数,表示发起端发起在第n次会话时的计数值;同理Value(step#m)中m为奇数,表示接收端在第m次会话时的计数。在一个实施例中,假设第一终端会话中记录发送数据包的数量req(对应于value字段),第一终端接收第二终端返回的数据包时,获取Extras字段的值ack(由第二终端记录收到的第一终端发送的Value字段值),如果第一终端没有接收到回复,则记ack=0,从而丢包率可以表示为(req-ack)/req,因此对于上述数据传输方法的评估方法也较为简单。请参阅图5所示,图5为一实施例中的数据传输装置的示意图,在该实施例中,该装置可以包括:自身地址获取模块100,用于在接入第一局域网后获取自身的外网IP地址。注册模块200,用于向服务器发送所获取的自身的外网IP地址和自身的终端标识符,且从服务器获取与服务器相连接的所有终端的外网IP地址和终端标识符。目标地址获取模块300,用于根据终端标识符,从与服务器相连接的终端的外网IP地址中查询目标终端的外网IP地址;目标终端处于第二局域网中。握手模块400,用于根据目标终端的外网IP地址与目标终端进行握手。通信模块500,用于在握手成功后,与目标终端进行数据传输。在其中一个实施例中,注册模块200还可以用于将自身的外网IP地址和自身的终端标识符依次通过第一局域网路由器、虚拟中转路由器发送到服务器;第一局域网路由器位于第一局域网中。在其中一个实施例中,握手模块400可以包括:第一发送单元,用于根据目标终端的外网IP地址,通过局域网路由器和虚拟中转路由器,向目标终端发送第一数据包,该第一数据包的Session字段的值为第一预设值。第一接收单元,用于接收目标终端所返回的与第一数据包相对应的第二数据包。第二发送单元,用于当第二数据包的Session字段的值为第二预设值时,向目标终端发送第三数据包,该第三数据包的Session字段的值为第三预设值。第二接收单元,用于接收目标终端所返回的与第三数据包相对应的第四数据包。输出单元,用于在该第四数据包的Session字段的值为第四预设值时,输出与目标终端握手成功的结果。在其中一个实施例中,握手模块400还可以包括:超时单元,用于在向目标终端发送第一数据包或第三数据包后,在预设时间间隔内未接收到来自目标终端的数据包时,返回连接超时的结果。在其中一个实施例中,通信模块500可以包括:数据获取单元,用于获取待传输数据;第三发送单元,用于将待传输数据依次通过第一局域网路由器、至少一个虚拟中转路由器和第二局域网路由器发送到目标终端;其中,第二局域网路由器位于第二局域网中。上述实施例中所涉及的装置的具体内容可以参见上述对方法的限定,在此不再赘述。以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1