CN114500243A - 数据通信方法、装置、计算机可读介质及电子设备 - Google Patents

数据通信方法、装置、计算机可读介质及电子设备 Download PDF

Info

Publication number
CN114500243A
CN114500243A CN202011272894.1A CN202011272894A CN114500243A CN 114500243 A CN114500243 A CN 114500243A CN 202011272894 A CN202011272894 A CN 202011272894A CN 114500243 A CN114500243 A CN 114500243A
Authority
CN
China
Prior art keywords
data
message
tcp
source
confirmation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202011272894.1A
Other languages
English (en)
Other versions
CN114500243B (zh
Inventor
李晓明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Beijing Co Ltd
Original Assignee
Tencent Technology Beijing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Beijing Co Ltd filed Critical Tencent Technology Beijing Co Ltd
Priority to CN202011272894.1A priority Critical patent/CN114500243B/zh
Publication of CN114500243A publication Critical patent/CN114500243A/zh
Application granted granted Critical
Publication of CN114500243B publication Critical patent/CN114500243B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • H04L41/0668Management of faults, events, alarms or notifications using network fault recovery by dynamic selection of recovery network elements, e.g. replacement by the most appropriate element after failure
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0823Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
    • H04L41/0836Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability to enhance reliability, e.g. reduce downtime
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L67/025Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/143Termination or inactivation of sessions, e.g. event-controlled end of session
    • H04L67/145Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请属于计算机及通信技术领域,具体涉及一种数据通信方法、数据通信装置、计算机可读介质以及电子设备。该方法包括:接收与源端设备建立TCP连接的对端设备发送的数据报文,并将数据报文加入至源端设备的接收报文缓存队列中;生成用于确认数据报文接收成功的确认报文,并将确认报文加入至源端设备的回复报文缓存队列中;从源端设备的接收报文缓存队列中读取数据,并将已读取数据备份至与源端设备相对应的备用设备中;根据已读取数据的数据备份结果更新用于表示源端设备的数据接收状态的TCP确认号,以基于TCP确认号向对端设备发送回复报文缓存队列中的确认报文。本申请实施例可以提高数据通信的稳定性和可靠性。

Description

数据通信方法、装置、计算机可读介质及电子设备
技术领域
本申请属于计算机及通信技术领域,具体涉及一种数据通信方法、数据通信装置、计算机可读介质以及电子设备。
背景技术
传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的、基于字节流的传输层通信协议,通信双方通过建立TCP连接可以实现相互之间进行数据通信。基于TCP连接进行数据通信时,可以有效地对数据传输的过程进行控制,例如可以对传输的数据进行排序和去重等处理。
由于TCP协议在协议设计中没有考虑高可用性(High Availability,HA)的问题,而且TCP协议本身处理过程复杂,一旦TCP连接的通信双方中的任意一方出现故障,便容易导致数据传输的中断,也可能因通信数据的丢失而无法恢复TCP连接。因此,如何提高TCP通信连接的稳定性是目前亟待解决的问题。
发明内容
本申请的目的在于提供一种数据通信方法、数据通信装置、计算机可读介质以及电子设备,至少在一定程度上克服TCP通信连接技术中存在的通信稳定性差的技术问题。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请实施例的一个方面,提供一种数据通信方法,所述方法包括:接收与源端设备建立TCP连接的对端设备发送的数据报文,并将所述数据报文加入至所述源端设备的接收报文缓存队列中;生成用于确认所述数据报文接收成功的确认报文,并将所述确认报文加入至所述源端设备的回复报文缓存队列中;从所述源端设备的接收报文缓存队列中读取数据,并将已读取数据备份至与所述源端设备相对应的备用设备中;根据所述已读取数据的数据备份结果更新用于表示所述源端设备的数据接收状态的TCP确认号,以基于所述TCP确认号向所述对端设备发送所述回复报文缓存队列中的确认报文。
根据本申请实施例的一个方面,提供一种数据通信装置,所述装置包括:报文接收模块,被配置为接收与源端设备建立TCP连接的对端设备发送的数据报文,并将所述数据报文加入至所述源端设备的接收报文缓存队列中;报文确认模块,被配置为生成用于确认所述数据报文接收成功的确认报文,并将所述确认报文加入至所述源端设备的回复报文缓存队列中;数据读取模块,被配置为从所述源端设备的接收报文缓存队列中读取数据,并将已读取数据备份至与所述源端设备相对应的备用设备中;报文回复模块,被配置为根据所述已读取数据的数据备份结果更新用于表示所述源端设备的数据接收状态的TCP确认号,以基于所述TCP确认号向所述对端设备发送所述回复报文缓存队列中的确认报文。
在本申请的一些实施例中,基于以上技术方案,所述报文回复模块包括:确认报文查找单元,被配置为当检测到TCP确认号的更新事件时,在所述源端设备的回复报文缓存队列中查找与更新后的TCP确认号相匹配的确认报文;确认报文发送单元,被配置为当查找到与所述更新后的TCP确认号相匹配的确认报文时,将该确认报文发送至所述对端设备;确认报文移除单元,被配置为将发送成功的确认报文从所述源端设备的回复报文缓存队列中移除。
在本申请的一些实施例中,基于以上技术方案,所述报文回复模块还包括:第一数据量获取单元,被配置为当所述已读取数据备份成功时,获取所述已读取数据的数据量;数据量更新单元,被配置为根据所述已读取数据的数据量更新在所述备用设备上完成备份处理的已备份数据的数据量;第一确认号更新单元,被配置为获取所述对端设备的TCP初始序列号,并根据所述TCP初始序列号以及所述已备份数据的数据量更新用于表示所述源端设备的数据接收状态的TCP确认号。
在本申请的一些实施例中,基于以上技术方案,所述报文回复模块还包括:确认报文监测单元,被配置为实时监测所述源端设备向所述对端设备发送的确认报文,并获取已发送的确认报文中携带的TCP确认号;最大确认号确定单元,被配置为根据已发送的确认报文中携带的TCP确认号确定所述源端设备向所述对端设备发送确认报文时使用的最大TCP确认号;第二数据量获取单元,被配置为当所述已读取数据备份成功时,获取所述已读取数据的数据量;第二确认号更新单元,被配置为根据所述已读取数据的数据量和所述最大TCP确认号更新用于表示所述源端设备的数据接收状态的TCP确认号。
在本申请的一些实施例中,基于以上技术方案,所述报文确认模块包括:报文解析单元,被配置为获取所述数据报文中携带的第一报文序列号、第一报文确认号以及数据内容的数据量;确认号确定单元,被配置为根据所述第一报文序列号以及所述数据内容的数据量确定用于表示所述数据报文接收成功的第二报文确认号;序列号确定单元,被配置为根据所述第一报文确认号确定用于表示所述源端设备的数据发送状态的第二报文序列号;报文封装单元,被配置为根据所述第二报文序列号和所述第二报文确认号封装用于确认所述数据报文接收成功的确认报文。
在本申请的一些实施例中,基于以上技术方案,所述数据通信装置还包括:修复模式开启模块,被配置为当检测到所述源端设备与所述备用设备的设备切换事件时,在所述备用设备上创建TCP套接字,并开启TCP修复模式;连接建立模块,被配置为基于所述TCP修复模式,在所述备用设备与所述对端设备之间建立修复后的TCP连接;修复模式关闭模块,被配置为关闭所述TCP修复模式,并通过修复后的TCP连接在所述备用设备与所述对端设备之间进行数据通信。
在本申请的一些实施例中,基于以上技术方案,所述连接建立模块包括:第一端口获取单元,被配置为获取所述源端设备使用的与所述对端设备进行数据通信的源端地址和源端端口;端口绑定单元,被配置为将所述备用设备上创建的TCP套接字绑定至所述源端地址和源端端口;第二端口获取单元,被配置为获取所述对端设备使用的与所述源端设备进行数据通信的对端地址和对端端口;端口连接单元,被配置为基于所述源端地址、所述源端端口、所述对端地址和所述对端端口在所述备用设备与所述对端设备之间建立新的TCP连接;状态获取单元,被配置为获取所述源端设备与所述对端设备断开TCP连接时的数据通信状态信息;参数赋值单元,被配置为根据所述数据通信状态信息对所述备用设备与所述对端设备之间建立的新的TCP连接进行赋值处理以得到修复后的TCP连接。
在本申请的一些实施例中,基于以上技术方案,所述数据通信状态信息包括用于表示数据发送状态的TCP序列号以及用于表示数据接收状态的TCP确认号;所述状态获取单元包括:数据量获取子单元,被配置为当所述源端设备与所述对端设备断开TCP连接时,获取所述备用设备上备份的已发送数据的第一数据量和已接收数据的第二数据量;序列号获取子单元,被配置为获取所述源端设备的第一TCP初始序列号以及所述对端设备的第二TCP初始序列号;序列号确定子单元,被配置为根据所述第一数据量以及所述第一TCP初始序列号确定所述源端设备与所述对端设备断开TCP连接时的TCP序列号;确认号确定子单元,被配置为根据所述第二数据量以及所述第二TCP初始序列号确定所述源端设备与所述对端设备断开TCP连接时的TCP确认号。
在本申请的一些实施例中,基于以上技术方案,所述数据通信装置还包括:备份报文获取模块,被配置为获取在所述备用设备上备份的由所述源端设备向所述对端设备发送数据的备份数据报文;备份报文缓存模块,被配置为将所述备份数据报文加入至所述备用设备的发送报文缓存队列中,以使所述备用设备通过修复后的TCP连接向所述对端设备发送所述备份数据报文。
在本申请的一些实施例中,基于以上技术方案,所述数据通信装置还包括:报文备份模块,被配置为当检测到所述源端设备向所述对端设备发送数据报文时,将待发送的数据报文备份至所述备用设备;备份报文发送模块,被配置为当检测到设备切换事件时,在所述备用设备与所述对端设备之间建立修复后的TCP连接,并通过修复后的TCP连接向所述对端设备发送所述备用设备上保存的待发送数据的备份数据报文。
在本申请的一些实施例中,基于以上技术方案,所述数据通信装置还包括:备份报文移除模块,被配置为当接收到所述对端设备向所述源端设备返回的确认报文时,在所述备用设备上查找并移除与该确认报文相对应的已发送数据的备份数据报文。
在本申请的一些实施例中,基于以上技术方案,所述数据通信装置还包括:确认信息更新模块,被配置为当接收到所述对端设备向所述源端设备返回的确认报文时,更新用于记录所述数据确认状态的报文确认信息;确认信息读取模块,被配置为以预设时间为间隔,定期读取所述报文确认信息,以根据最新的报文确认信息将备份数据报文分类为已确认数据和未确认数据;已确认数据移除模块,被配置为根据报文分类结果移除所述备份数据报文中的已确认数据。
根据本申请实施例的一个方面,提供一种计算机可读介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如以上技术方案中的数据通信方法。
根据本申请实施例的一个方面,提供一种电子设备,该电子设备包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器被配置为经由执行所述可执行指令来执行如以上技术方案中的数据通信方法。
根据本申请实施例的一个方面,提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行如以上技术方案中的数据通信方法。
在本申请实施例提供的技术方案中,通过在源端设备上配置回复报文缓存队列,可以暂时存储源端设备接收到数据报文后生成的用于确认数据报文接收成功的确认报文,只有当所接收的数据完成读取并在备用设备上进行备份后,才向发出数据报文的对端设备发送对应的确认报文。采用对确认报文进行延迟处理的方式,能够确保源端设备与备用设备在实现数据同步的同时对TCP连接状态也进行实时同步。在对源端设备和备用设备进行切换时,可以基于正确的TCP连接状态对断开的TCP连接进行恢复,提高与对端设备进行数据通信的稳定性和可靠性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示意性地示出了应用本申请技术方案的通信系统架构框图。
图2示意性地示出了通信双方基于三次握手机制建立TCP连接的交互流程图。
图3示意性地示出了通信双方在建立TCP连接的基础上进行数据传输的原理示意图。
图4示意性地示出了本申请一些实施例中的数据通信方法的步骤流程图。
图5示意性地示出了本申请一些实施例中源端设备处理接收数据的方法流程图。
图6示意性地示出了本申请一些实施例中修复TCP连接的方法步骤流程图。
图7示意性地示出了本申请实施例在一应用场景中对发送数据进行备份处理的原理框图。
图8示意性地示出了本申请实施例提供的数据通信装置的结构框图。
图9示意性示出了适于用来实现本申请实施例的电子设备的计算机系统结构框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
图1示意性地示出了应用本申请技术方案的通信系统架构框图。
如图1所示,通信系统100包括作为通信双方的源端设备110和对端设备120,源端设备110与对端设备120在TCP协议的基础上利用网际协议群建立数据通信链路130,数据通信链路130可以是有线通信链路或者无线通信链路。此外,系统架构100还包括与源端设备110相对应的备用设备140,备用设备140用于对源端设备110的通信数据进行备份,而且源端设备110可以将其TCP连接状态与备用设备140进行实时同步。当源端设备110出现故障或者因系统升级、维护等原因而断开与对端设备120之间的TCP连接时,备用设备140可以基于实时同步的TCP连接状态信息进行TCP修复,即在备用设备140和对端设备120之间建立与之前相同的数据通信链路,使得对端设备120可以无感知地继续与备用设备140进行数据通信。
除了作为传输层协议的TCP协议之外,用于建立数据通信链路的网际协议群还可以包括应用层协议、网络层协议、数据链路层协议。应用层协议例如可以包括超文本传输协议(Hyper Text Transfer Protocol,HTTP)、简单邮件传输协议(Simple Mail TransferProtocol,SMTP)、实时传输协议(Real-time Transport Protocol,RTP)等等。网络层协议例如可以包括网际互联协议(Internet Protocol,IP)和Internet控制报文协议(InternetControl Message Protocol,ICMP)。数据链路层协议例如可以包括地址解析协议(AddressResolution Protocol,ARP)。
以客户端和服务器的通信模型(Client-Server)为例,在源端设备110和对端设备120之间建立TCP连接时,一方可以作为客户端(运行客户端进程)发出数据请求,而另一方则作为服务器(运行服务器进程)对客户端的请求做出响应以向其提供数据服务。TCP连接的工作方式包括短连接方式(Short-Live Connection)和长连接方式(Long-LiveConnection)两种。在短连接方式下:当客户端有请求时,会建立一个TCP连接,在接收到服务器响应后,该TCP连接就会断开;当下次再有新的请求时,客户端会再次与服务器建立连接,并在收到响应后再次断开;如此循环往复,实现基于短连接的数据通信。在长连接方式下:客户端与服务器建立TCP连接之后,会一直使用该连接进行数据通信,直到没有数据传输或异常断开;在空闲期间,通常会使用心跳数据包(Keep-Alive)保持TCP连接不被断开。
举例而言,源端设备110以及备用设备140可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。对端设备120可以是智能手机、平板电脑、笔记本电脑、台式电脑、智能家电、智能穿戴设备等各种终端设备。对端设备120上可以运行各种类型的客户端应用程序,例如视频客户端、音乐客户端、游戏客户端等等。与之相对的,源端设备110上可以运行服务器应用程序,向对端设备120上运行的客户端应用程序提供视频资源、音乐资源、游戏资源等数据支持服务。
根据实现需要,本申请实施例中的系统架构可以具有任意数目的源端设备110、对端设备120以及备用设备140。例如,一个源端设备110可以同时与多个对端设备120建立TCP连接并进行数据通信,一个对端设备120也可以同时与多个源端设备110建立TCP连接并进行数据通信;一个源端设备110可以同时通过多个备用设备140进行数据备份并同时与多个备用设备140进行TCP连接状态的实时同步,一个备用设备140也可以同时对多个源端设备110进行数据备份并分别与各个源端设备110进行TCP连接状态的实时同步。
图2示意性地示出了通信双方基于三次握手机制建立TCP连接的交互流程图,其交互过程具体如下。
在建立TCP连接前,客户端210和服务器220均处于连接关闭状态(ClOSED),客户端210主动向服务器220发出连接请求,服务器220则被动接受连接请求。
当需要建立TCP连接时,服务器220可以首先创建传输控制块(TransmissionControl Block,TCB),传输控制块TCB是用于保存连接信息的数据结构。服务器220完成传输控制块TCB的创建后便进入监听状态(LISTEN),准备接收客户端210发送的连接请求。
客户端210也同样创建一个传输控制块TCB,并在创建完成后向服务器220发出连接请求报文。在连接请求报文中,同步标志位SYN被置为1,同时包含一个客户端初始序列号seq=x。此时,客户端210进入同步已发送状态(SYN-SENT)。基于TCP协议,连接请求报文不能携带数据,但是会消耗掉一个数据序号。
服务器220收到连接请求报文后,如果同意建立TCP连接,则向客户端210返回确认报文,用以通知客户端210连接请求已被正确接收。在该确认报文中,确认标志位ACK和同步标志位SYN均被置为1,确认号ack为x+1,同时也包含一个服务器初始序列号seq=y。此时,服务器220进入同步已接收状态(SYN-RCVD)。与连接请求报文相似的,确认报文也不能携带数据,但是同样会消耗一个数据序号。
客户端210在收到服务器220发出的确认报文后,要向服务器220再次发送一确认报文,用以通知服务器220连接响应已被正确接收。在该确认报文中,确认标志位ACK被置为1,确认号ack为y+1,自身的序列号seq为x+1。
经过以上三次握手过程后,TCP连接成功建立,客户端210和服务器220都进入已建立连接状态(ESTABLISHED),此后双方便可以开始基于TCP连接进行数据通信。
图3示意性地示出了通信双方在建立TCP连接的基础上进行数据传输的原理示意图。如图3所示,通信双方在进行数据通信时,按照数据传输方向可以划分为发送方310和接收方320。当发送方310向接收方320传输数据时,首先将需要向对方传输的数据以字节流的形式不断地写入发送缓存330中。发送缓存330中暂时存储的数据按照字节流的顺序分段并添加TCP报文头后,可以封装形成数据报文,进而通过TCP连接340向接收方320传输承载字节流的数据报文。传输至接收方320一侧的数据报文在经过解析处理移除TCP报文头后会首先被写入接收缓存350中,接收缓存350中暂时存储的数据会被依次读取至接收方320,最终完成数据由发送方310至接收方320的传输过程。
在数据传输过程中,当发送方310或者接收方320出现异常时,会导致TCP连接的意外断开,对应缓存中的数据以及当前处于通信链路中正在传输的数据便会出现数据丢失。此时,利用备用设备对异常设备进行替换能够尽可能地降低损失,而如何保持TCP连接状态的实时同步,以便对断开的TCP连接进行及时恢复便显得尤为重要。
下面结合具体实施方式对本申请提供的数据通信方法、数据通信装置、计算机可读介质以及电子设备等技术方案做出详细说明。
图4示意性地示出了本申请一些实施例中的数据通信方法的步骤流程图,该数据通信方法可以由数据通信中的任意的终端设备或者服务器设备执行,本申请实施例以图1所示的源端设备110执行的数据通信方法作为示例进行说明。如图4所示,该数据通信方法主要可以包括如下的步骤S410至步骤S440。
步骤S410:接收与源端设备建立TCP连接的对端设备发送的数据报文,并将数据报文加入至源端设备的接收报文缓存队列中。
步骤S420:生成用于确认数据报文接收成功的确认报文,并将确认报文加入至源端设备的回复报文缓存队列中。
步骤S430:从源端设备的接收报文缓存队列中读取数据,并将已读取数据备份至与源端设备相对应的备用设备中。
步骤S440:根据已读取数据的数据备份结果更新用于表示源端设备的数据接收状态的TCP确认号,以基于更新后的TCP确认号向对端设备发送回复报文缓存队列中的确认报文。
在本申请实施例提供的数据通信方法中,通过在源端设备上配置回复报文缓存队列,可以暂时存储源端设备接收到数据报文后生成的用于确认数据报文接收成功的确认报文,只有当所接收的数据完成读取并在备用设备上进行备份后,才向发出数据报文的对端设备发送对应的确认报文。采用对确认报文进行延迟处理的方式,能够确保源端设备与备用设备在实现数据同步的同时对TCP连接状态也进行实时同步。在对源端设备和备用设备进行切换时,可以基于正确的TCP连接状态对断开的TCP连接进行恢复,提高与对端设备进行数据通信的稳定性和可靠性。
图5示意性地示出了本申请一些实施例中源端设备处理接收数据的方法流程图。如图5所示,当源端设备接收到对端设备发送的数据报文后,会生成相应的确认报文,并基于数据读取和数据备份结果向对端设备返回缓存的确认报文,具体处理方法包括如下的步骤S510至步骤S550。
步骤S510:基于TCP连接接收由对端设备发送的数据报文,并将该数据报文加入至接收报文缓存队列中。
接收到的数据报文首先在接收报文缓存队列中暂时存储,TCP/IP协议栈按照队列顺序依次对接收到的各个数据报文进行解析处理,提取其中携带的数据。TCP/IP协议栈是用于建立数据通信链路的网际协议群,可以基于其中包含的各种协议对封装好的数据报文进行解析处理,从报文主体中提取数据的同时,也从报文头中获取通信状态相关的报文信息,如TCP序列号、TCP确认号等等。在接收报文缓存队列中可以存储原始的数据报文,也可以存储对数据报文进行解析后提取出的数据内容,本申请实施例对此不做特殊限定。
步骤S520:生成用于通知对端设备数据报文接收成功的确认报文,并将该确认报文加入至回复报文缓存队列中。
TCP/IP协议栈对数据报文进行解析处理时,可以基于获取到的报文信息生成相应的确认报文,用以通知对端设备其发送的数据报文已被成功接收。在生成确认报文后,源端设备不会立即向对端设备返回该确认报文,而是先将其暂时存储在回复报文缓存队列中,等待进一步的发送指令。
步骤S530:应用程序从接收报文缓存队列中依次读取数据。
在接收报文缓存队列中的已经接收的数据字节数大于或等于套接字socket的低潮限度值时,可以向位于应用层的应用程序发送通知,以通知应用程序套接字socket处于可读状态。应用程序按照队列顺序从接收报文缓存队列中依次读取数据,从而对数据进行消费。
步骤S540:对应用程序读取成功的数据进行同步备份处理。
源端设备上被读取到应用层的数据会被同步备份至与源端设备相对应的备用设备上,以维持数据同步。一旦源端设备出现故障而宕机或者出现数据丢失等问题,可以启用备用设备进行设备切换,或者通过备用设备上备份的数据对源端设备进行数据恢复。
步骤S550:根据数据备份结果更新TCP确认号ack,并基于更新后的TCP确认号ack将缓存的确认报文发送给对端设备。
举例而言,在确认报文缓存队列中保存有TCP确认号为10、11、12、13……的确认报文,根据数据备份结果更新的TCP确认号ack为12(与TCP确认号大于12的确认报文相对应的数据尚未完成读取和备份),那么源端设备将把TCP确认号为12的确认报文发送给对端设备。
基于以上处理接收数据的方法,当源端设备出现故障而切换至备用设备时,接收报文缓存队列中保存的尚未读取和备份的数据便会丢失,而基于延迟发送确认报文的机制,与这部分丢失数据相对应的确认报文也没有向对端设备发送。由于没有收到对应的确认报文,对端设备会重新向备用设备发送这部分丢失数据,从而在对端设备和备用设备之间恢复TCP连接并继续进行数据通信。
在本申请的一些实施例中,生成确认报文的方法可以包括:获取数据报文中携带的第一报文序列号、第一报文确认号以及数据内容的数据量;根据第一报文序列号以及数据内容的数据量确定用于表示数据报文接收成功的第二报文确认号;根据第一报文确认号确定用于表示源端设备的数据发送状态的第二报文序列号;根据第二报文序列号和第二报文确认号封装用于确认数据报文接收成功的确认报文。
举例而言,当接收到一个数据报文时,可以获取该数据报文的第一报文序列号x、第一报文确认号y以及数据内容的数据量z。在生成用于确认该数据报文已成功接收的确认报文时,可以直接将第一报文确认号y赋值给第二报文序列号,并将第一报文序列号与数据量的和x+z赋值给第二报文确认号,将第二报文序列号和第二报文确认号写入报文头部后可以封装形成确认报文。当把该确认报文传输至对端设备后,对端设备可以根据该确认报文中的第二报文确认号x+z确认其所发送的第一报文序列号为x的数据报文已成功传输至源端设备,并且传输数据的数据量为z,未出现数据丢失。
在本申请的一些实施例中,可以根据对端设备的TCP初始序列号和已备份数据的数据量对TCP确认号进行更新。在此基础上,步骤S440中的根据已读取数据的数据备份结果更新用于表示源端设备的数据接收状态的TCP确认号,可以包括:当已读取数据备份成功时,获取已读取数据的数据量;根据已读取数据的数据量更新在备用设备上完成备份处理的已备份数据的数据量;获取对端设备的TCP初始序列号,并根据TCP初始序列号以及已备份数据的数据量更新用于表示源端设备的数据接收状态的TCP确认号。
在本申请的一些实施例中,还可以对源端设备已发送的数据报文进行监测,并根据监测结果以及数据备份结果对TCP确认号进行更新。在此基础上,步骤S440中的根据已读取数据的数据备份结果更新用于表示源端设备的数据接收状态的TCP确认号,可以包括:实时监测源端设备向对端设备发送的确认报文,并获取已发送的确认报文中携带的TCP确认号;根据已发送的确认报文中携带的TCP确认号确定源端设备向对端设备发送确认报文时使用的最大TCP确认号;当已读取数据备份成功时,获取已读取数据的数据量;根据已读取数据的数据量和最大TCP确认号更新用于表示源端设备的数据接收状态的TCP确认号。
已读取数据以及已备份数据的数据量可以用字节数来进行计量,针对接收到的数据,在完成读取并备份后,再对已备份数据的数据量进行更新。基于已备份数据的数据量对TCP确认号进行更新,可以向对端设备发送基于该TCP确认号的确认报文,通知对端设备已备份数据的接收状态。而对于仅完成接收,但未完成读取和备份的数据,则延后向对端设备发送确认报文的时间,从而可以保证源端设备与备份设备在数据同步的同时,对TCP连接状态也进行同步。
基于跟随数据备份结果持续更新的TCP确认号,可以向对端设备发送与之对应的确认报文,并对回复报文缓存队列中存储的待发送的确认报文做出更新。在本申请的一些实施例中,步骤S440中的基于TCP确认号向对端设备发送回复报文缓存队列中的确认报文,可以包括:当检测到TCP确认号的更新事件时,在源端设备的回复报文缓存队列中查找与更新后的TCP确认号相匹配的确认报文;当查找到与更新后的TCP确认号相匹配的确认报文时,将该确认报文发送至对端设备;将发送成功的确认报文从源端设备的回复报文缓存队列中移除。
通过配置回复报文缓存队列,可以根据数据备份结果向对端设备发送确认报文,未完成数据读取或者未完成数据备份的部分,则不会向对端设备发送确认报文,由此可以保持源端设备与备份设备在TCP连接状态上的同步,在源端设备出现异常或者源端设备进行升级维护等情况时,可以对源端设备和备用设备进行切换。在完成源端设备与备用设备的切换后,为继续与对端设备进行数据通信,可以在备用设备与对端设备之间建立并修复TCP连接。
图6示意性地示出了本申请一些实施例中修复TCP连接的方法步骤流程图。如图6所示,在备用设备与对端设备之间对TCP连接进行修复的方法可以包括如下的步骤S610至步骤S630。
步骤S610:当检测到源端设备与备用设备的设备切换事件时,在备用设备上创建TCP套接字,并开启TCP修复模式。
步骤S620:基于TCP修复模式,在备用设备与对端设备之间建立修复后的TCP连接。
步骤S630:关闭TCP修复模式,并通过修复后的TCP连接在备用设备与对端设备之间进行数据通信。
设备切换事件可以是在需要对源端设备进行升级维护等情况下执行的主动切换事件,也可以是在源端设备出现异常或者故障而执行的应急切换事件。TCP修复模式是用于调整参数以恢复TCP连接状态的模式,在TCP修复模式下,建立TCP连接的设备会暂停数据报文的收发。
在TCP修复模式下,利用当前保存的地址和端口数据以及TCP连接的数据状态信息,可以在备用设备与对端设备之间建立修复后的TCP连接。在一些可选的实施方式中,修复TCP连接的方法可以包括:获取源端设备使用的与对端设备进行数据通信的源端地址和源端端口;将备用设备上创建的TCP套接字绑定至源端地址和源端端口;获取对端设备使用的与源端设备进行数据通信的对端地址和对端端口;基于源端地址、源端端口、对端地址和对端端口在备用设备与对端设备之间建立新的TCP连接;获取源端设备与对端设备断开TCP连接时的数据通信状态信息;根据数据通信状态信息对备用设备与对端设备之间建立的新的TCP连接进行赋值处理以得到修复后的TCP连接。
在修复TCP连接时,备用设备可以通过调用bind()函数将TCP套接字绑定至与源端设备完全相同的地址和端口,即源端地址和源端端口。完成地址和端口的绑定后,再调用connect()函数将TCP套接字连接至对端设备的对端地址和对端端口。随后可以直接将备用设备配置为已建立连接状态(ESTABLISHED),不需要进行握手操作便可以在备用设备与对端设备之间建立新的TCP连接。
基于新建立的TCP连接,通过对数据通信状态信息进行参数赋值可以使其恢复至源端设备与对端设备断开TCP连接前的连接状态。数据通信状态信息包括用于表示数据发送状态的TCP序列号以及用于表示数据接收状态的TCP确认号;获取源端设备与对端设备断开TCP连接时的数据通信状态信息的方法可以包括:当源端设备与对端设备断开TCP连接时,获取备用设备上备份的已发送数据的第一数据量和已接收数据的第二数据量;获取源端设备的第一TCP初始序列号以及对端设备的第二TCP初始序列号;根据第一数据量以及第一TCP初始序列号确定源端设备与对端设备断开TCP连接时的TCP序列号;根据第二数据量以及第二TCP初始序列号确定源端设备与对端设备断开TCP连接时的TCP确认号。
在一些可选的实施方式中,数据通信状态信息还可以包括源端设备与对端设备协商确定的最大报文段长度MSS以及滑动窗口尺寸wscale等其他TCP协商信息。在备用设备与对端设备之间修复TCP连接时,可以对TCP协商信息一并进行恢复。
在关闭TCP修复模式之前,本申请实施例还可以对缓存中的数据进行恢复,以便完成TCP修复后可以继续对缓存数据进行数据通信。具体而言,本申请实施例可以获取在备用设备上备份的由源端设备向对端设备发送数据的备份数据报文;将备份数据报文加入至备用设备的发送报文缓存队列中,以使备用设备通过修复后的TCP连接向对端设备发送备份数据报文。
在从源端设备切换至备用设备后,可以通过在备用设备与对端设备之间修复TCP连接,并基于修复后的TCP连接将所有的备份数据报文重新发送给对端设备,以避免出现数据丢失的问题。具体而言,当检测到源端设备向对端设备发送数据报文时,将待发送的数据报文备份至备用设备;当检测到设备切换事件时,在备用设备与对端设备之间建立修复后的TCP连接,并通过修复后的TCP连接向对端设备发送备用设备上保存的待发送数据的备份数据报文。
对端设备在收到备用设备发送的备份数据报文后,可以基于备份数据报文中携带的TCP序列号判断该报文是否为新收到的报文或者重复收到的报文。如果收到重复的报文,可以直接将其忽略而不会对数据通信和数据消费产生其他影响。
在本申请的一些实施例中,可以根据其报文确认结果对备份数据报文进行更新,以减少或者避免过多的备份数据报文被重新发送。在一些可选的实施方式中,当接收到对端设备向源端设备返回的确认报文时,可以在备用设备上查找并移除与该确认报文相对应的已发送数据的备份数据报文,实现对备份数据报文的实时更新。在另一些可选的实施方式中,也可以通过定期读取报文确认信息的方式对备份数据报文进行定期更新。具体而言,当接收到对端设备向源端设备返回的确认报文时,更新用于记录数据确认状态的报文确认信息;以预设时间为间隔,定期读取报文确认信息,以根据最新的报文确认信息将备份数据报文分类为已确认数据和未确认数据;根据报文分类结果移除备份数据报文中的已确认数据。
图7示意性地示出了本申请实施例在一应用场景中对发送数据进行备份处理的原理框图。
如图7所示,当源端设备准备向对端设备发送数据时,可以将其准备向对端设备发送的数据在备用设备上进行备份处理,备份数据报文被存储在备用设备上配置的报文队列中。源端设备可以将完成备份处理的数据写入到套接字socket中以通过TCP连接向对端设备发送,未完成备份的数据则暂停发送。备用设备可以通过定期读取报文确认信息tcpi_bytes_acked来确认哪些数据已经被对端设备确认收到,基于报文确认信息可以更新表示数据发送状态的序列号seq,再根据更新后的序列号seq将对端设备确认收到的备份数据报文从报文队列中移除。如此一来,在进行源端设备和备用设备的切换后,备用设备只需要将对端设备未确认收到的备份数据报文以及少量未及时更新状态的备份数据报文发送至对端设备,减少重复报文的发送量。
本申请实施例利用Linux内核原生支持的TCP修复选项TCP_REPAIR,引入缓存队列来延迟发送确认报文ACK的方式对其进行优化,结合应用层数据报文的实时同步来计算相应的seq/ack号,较好地完成了TCP状态的实时同步,实现方式简单,能够非常方便地部署到现网设备上。利用边界网关协议BGP进行实测,在增加TCP状态同步后,可以大幅提升系统的稳定性,保障了业务的高可用性。
应当注意,尽管在附图中以特定顺序描述了本申请中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
以下介绍本申请的装置实施例,可以用于执行本申请上述实施例中的数据通信方法。图8示意性地示出了本申请实施例提供的数据通信装置的结构框图。如图8所示,数据通信装置800主要可以包括:报文接收模块810,被配置为接收与源端设备建立TCP连接的对端设备发送的数据报文,并将数据报文加入至源端设备的接收报文缓存队列中;报文确认模块820,被配置为生成用于确认数据报文接收成功的确认报文,并将确认报文加入至源端设备的回复报文缓存队列中;数据读取模块830,被配置为从源端设备的接收报文缓存队列中读取数据,并将已读取数据备份至与源端设备相对应的备用设备中;报文回复模块840,被配置为根据已读取数据的数据备份结果更新用于表示源端设备的数据接收状态的TCP确认号,以基于TCP确认号向对端设备发送回复报文缓存队列中的确认报文。
在本申请的一些实施例中,基于以上各实施例,报文回复模块840包括:确认报文查找单元,被配置为当检测到TCP确认号的更新事件时,在源端设备的回复报文缓存队列中查找与更新后的TCP确认号相匹配的确认报文;确认报文发送单元,被配置为当查找到与更新后的TCP确认号相匹配的确认报文时,将该确认报文发送至对端设备;确认报文移除单元,被配置为将发送成功的确认报文从源端设备的回复报文缓存队列中移除。
在本申请的一些实施例中,基于以上各实施例,报文回复模块840还包括:第一数据量获取单元,被配置为当已读取数据备份成功时,获取已读取数据的数据量;数据量更新单元,被配置为根据已读取数据的数据量更新在备用设备上完成备份处理的已备份数据的数据量;第一确认号更新单元,被配置为获取对端设备的TCP初始序列号,并根据TCP初始序列号以及已备份数据的数据量更新用于表示源端设备的数据接收状态的TCP确认号。
在本申请的一些实施例中,基于以上各实施例,报文回复模块840还包括:确认报文监测单元,被配置为实时监测源端设备向对端设备发送的确认报文,并获取已发送的确认报文中携带的TCP确认号;最大确认号确定单元,被配置为根据已发送的确认报文中携带的TCP确认号确定源端设备向对端设备发送确认报文时使用的最大TCP确认号;第二数据量获取单元,被配置为当已读取数据备份成功时,获取已读取数据的数据量;第二确认号更新单元,被配置为根据已读取数据的数据量和最大TCP确认号更新用于表示源端设备的数据接收状态的TCP确认号。
在本申请的一些实施例中,基于以上各实施例,报文确认模块820包括:报文解析单元,被配置为获取数据报文中携带的第一报文序列号、第一报文确认号以及数据内容的数据量;确认号确定单元,被配置为根据第一报文序列号以及数据内容的数据量确定用于表示数据报文接收成功的第二报文确认号;序列号确定单元,被配置为根据第一报文确认号确定用于表示源端设备的数据发送状态的第二报文序列号;报文封装单元,被配置为根据第二报文序列号和第二报文确认号封装用于确认数据报文接收成功的确认报文。
在本申请的一些实施例中,基于以上各实施例,数据通信装置800还包括:修复模式开启模块,被配置为当检测到源端设备与备用设备的设备切换事件时,在备用设备上创建TCP套接字,并开启TCP修复模式;连接建立模块,被配置为基于TCP修复模式,在备用设备与对端设备之间建立修复后的TCP连接;修复模式关闭模块,被配置为关闭TCP修复模式,并通过修复后的TCP连接在备用设备与对端设备之间进行数据通信。
在本申请的一些实施例中,基于以上各实施例,连接建立模块包括:第一端口获取单元,被配置为获取源端设备使用的与对端设备进行数据通信的源端地址和源端端口;端口绑定单元,被配置为将备用设备上创建的TCP套接字绑定至源端地址和源端端口;第二端口获取单元,被配置为获取对端设备使用的与源端设备进行数据通信的对端地址和对端端口;端口连接单元,被配置为基于源端地址、源端端口、对端地址和对端端口在备用设备与对端设备之间建立新的TCP连接;状态获取单元,被配置为获取源端设备与对端设备断开TCP连接时的数据通信状态信息;参数赋值单元,被配置为根据数据通信状态信息对备用设备与对端设备之间建立的新的TCP连接进行赋值处理以得到修复后的TCP连接。
在本申请的一些实施例中,基于以上各实施例,数据通信状态信息包括用于表示数据发送状态的TCP序列号以及用于表示数据接收状态的TCP确认号;状态获取单元包括:数据量获取子单元,被配置为当源端设备与对端设备断开TCP连接时,获取备用设备上备份的已发送数据的第一数据量和已接收数据的第二数据量;序列号获取子单元,被配置为获取源端设备的第一TCP初始序列号以及对端设备的第二TCP初始序列号;序列号确定子单元,被配置为根据第一数据量以及第一TCP初始序列号确定源端设备与对端设备断开TCP连接时的TCP序列号;确认号确定子单元,被配置为根据第二数据量以及第二TCP初始序列号确定源端设备与对端设备断开TCP连接时的TCP确认号。
在本申请的一些实施例中,基于以上各实施例,数据通信装置800还包括:备份报文获取模块,被配置为获取在备用设备上备份的由源端设备向对端设备发送数据的备份数据报文;备份报文缓存模块,被配置为将备份数据报文加入至备用设备的发送报文缓存队列中,以使备用设备通过修复后的TCP连接向对端设备发送备份数据报文。
在本申请的一些实施例中,基于以上各实施例,数据通信装置800还包括:报文备份模块,被配置为当检测到源端设备向对端设备发送数据报文时,将待发送的数据报文备份至备用设备;备份报文发送模块,被配置为当检测到设备切换事件时,在备用设备与对端设备之间建立修复后的TCP连接,并通过修复后的TCP连接向对端设备发送备用设备上保存的待发送数据的备份数据报文。
在本申请的一些实施例中,基于以上各实施例,数据通信装置800还包括:备份报文移除模块,被配置为当接收到对端设备向源端设备返回的确认报文时,在备用设备上查找并移除与该确认报文相对应的已发送数据的备份数据报文。
在本申请的一些实施例中,基于以上各实施例,数据通信装置800还包括:确认信息更新模块,被配置为当接收到对端设备向源端设备返回的确认报文时,更新用于记录数据确认状态的报文确认信息;确认信息读取模块,被配置为以预设时间为间隔,定期读取报文确认信息,以根据最新的报文确认信息将备份数据报文分类为已确认数据和未确认数据;已确认数据移除模块,被配置为根据报文分类结果移除备份数据报文中的已确认数据。
在本申请实施例提供的数据通信装置中,通过在源端设备上配置回复报文缓存队列,可以暂时存储源端设备接收到数据报文后生成的用于确认数据报文接收成功的确认报文,只有当所接收的数据完成读取并在备用设备上进行备份后,才向发出数据报文的对端设备发送对应的确认报文。采用对确认报文进行延迟处理的方式,能够确保源端设备与备用设备在实现数据同步的同时对TCP连接状态也进行实时同步。在对源端设备和备用设备进行切换时,可以基于正确的TCP连接状态对断开的TCP连接进行恢复,提高与对端设备进行数据通信的稳定性和可靠性。
本申请各实施例中提供的数据通信装置的具体细节已经在对应的方法实施例中进行了详细的描述,此处不再赘述。
图9示意性地示出了用于实现本申请实施例的电子设备的计算机系统结构框图。
需要说明的是,图9示出的电子设备的计算机系统900仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图9所示,计算机系统900包括中央处理器901(Central Processing Unit,CPU),其可以根据存储在只读存储器902(Read-Only Memory,ROM)中的程序或者从存储部分908加载到随机访问存储器903(Random Access Memory,RAM)中的程序而执行各种适当的动作和处理。在随机访问存储器903中,还存储有系统操作所需的各种程序和数据。中央处理器901、在只读存储器902以及随机访问存储器903通过总线904彼此相连。输入/输出接口905(Input/Output接口,即I/O接口)也连接至总线904。
以下部件连接至输入/输出接口905:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如局域网卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至输入/输出接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
特别地,根据本申请的实施例,各个方法流程图中所描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被中央处理器901执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本申请实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

Claims (15)

1.一种数据通信方法,其特征在于,所述方法包括:
接收与源端设备建立TCP连接的对端设备发送的数据报文,并将所述数据报文加入至所述源端设备的接收报文缓存队列中;
生成用于确认所述数据报文接收成功的确认报文,并将所述确认报文加入至所述源端设备的回复报文缓存队列中;
从所述源端设备的接收报文缓存队列中读取数据,并将已读取数据备份至与所述源端设备相对应的备用设备中;
根据所述已读取数据的数据备份结果更新用于表示所述源端设备的数据接收状态的TCP确认号,以基于所述TCP确认号向所述对端设备发送所述回复报文缓存队列中的确认报文。
2.根据权利要求1所述的数据通信方法,其特征在于,所述基于所述TCP确认号向所述对端设备发送所述回复报文缓存队列中的确认报文,包括:
当检测到TCP确认号的更新事件时,在所述源端设备的回复报文缓存队列中查找与更新后的TCP确认号相匹配的确认报文;
当查找到与所述更新后的TCP确认号相匹配的确认报文时,将该确认报文发送至所述对端设备;
将发送成功的确认报文从所述源端设备的回复报文缓存队列中移除。
3.根据权利要求1所述的数据通信方法,其特征在于,所述根据所述已读取数据的数据备份结果更新用于表示所述源端设备的数据接收状态的TCP确认号,包括:
当所述已读取数据备份成功时,获取所述已读取数据的数据量;
根据所述已读取数据的数据量更新在所述备用设备上完成备份处理的已备份数据的数据量;
获取所述对端设备的TCP初始序列号,并根据所述TCP初始序列号以及所述已备份数据的数据量更新用于表示所述源端设备的数据接收状态的TCP确认号。
4.根据权利要求1所述的数据通信方法,其特征在于,所述根据所述已读取数据的数据备份结果更新用于表示所述源端设备的数据接收状态的TCP确认号,包括:
实时监测所述源端设备向所述对端设备发送的确认报文,并获取已发送的确认报文中携带的TCP确认号;
根据已发送的确认报文中携带的TCP确认号确定所述源端设备向所述对端设备发送确认报文时使用的最大TCP确认号;
当所述已读取数据备份成功时,获取所述已读取数据的数据量;
根据所述已读取数据的数据量和所述最大TCP确认号更新用于表示所述源端设备的数据接收状态的TCP确认号。
5.根据权利要求1所述的数据通信方法,其特征在于,所述生成用于确认所述数据报文接收成功的确认报文,包括:
获取所述数据报文中携带的第一报文序列号、第一报文确认号以及数据内容的数据量;
根据所述第一报文序列号以及所述数据内容的数据量确定用于表示所述数据报文接收成功的第二报文确认号;
根据所述第一报文确认号确定用于表示所述源端设备的数据发送状态的第二报文序列号;
根据所述第二报文序列号和所述第二报文确认号封装用于确认所述数据报文接收成功的确认报文。
6.根据权利要求1至5中任意一项所述的数据通信方法,其特征在于,所述方法还包括:
当检测到所述源端设备与所述备用设备的设备切换事件时,在所述备用设备上创建TCP套接字,并开启TCP修复模式;
基于所述TCP修复模式,在所述备用设备与所述对端设备之间建立修复后的TCP连接;
关闭所述TCP修复模式,并通过修复后的TCP连接在所述备用设备与所述对端设备之间进行数据通信。
7.根据权利要求6所述的数据通信方法,其特征在于,在所述备用设备与所述对端设备之间建立修复后的TCP连接,包括:
获取所述源端设备使用的与所述对端设备进行数据通信的源端地址和源端端口;
将所述备用设备上创建的TCP套接字绑定至所述源端地址和源端端口;
获取所述对端设备使用的与所述源端设备进行数据通信的对端地址和对端端口;
基于所述源端地址、所述源端端口、所述对端地址和所述对端端口在所述备用设备与所述对端设备之间建立新的TCP连接;
获取所述源端设备与所述对端设备断开TCP连接时的数据通信状态信息;
根据所述数据通信状态信息对所述备用设备与所述对端设备之间建立的新的TCP连接进行赋值处理以得到修复后的TCP连接。
8.根据权利要求7所述的数据通信方法,其特征在于,所述数据通信状态信息包括用于表示数据发送状态的TCP序列号以及用于表示数据接收状态的TCP确认号;所述获取所述源端设备与所述对端设备断开TCP连接时的数据通信状态信息,包括:
当所述源端设备与所述对端设备断开TCP连接时,获取所述备用设备上备份的已发送数据的第一数据量和已接收数据的第二数据量;
获取所述源端设备的第一TCP初始序列号以及所述对端设备的第二TCP初始序列号;
根据所述第一数据量以及所述第一TCP初始序列号确定所述源端设备与所述对端设备断开TCP连接时的TCP序列号;
根据所述第二数据量以及所述第二TCP初始序列号确定所述源端设备与所述对端设备断开TCP连接时的TCP确认号。
9.根据权利要求6所述的数据通信方法,其特征在于,在关闭所述TCP修复模式之前,所述方法还包括:
获取在所述备用设备上备份的由所述源端设备向所述对端设备发送数据的备份数据报文;
将所述备份数据报文加入至所述备用设备的发送报文缓存队列中,以使所述备用设备通过修复后的TCP连接向所述对端设备发送所述备份数据报文。
10.根据权利要求1至5中任意一项所述的数据通信方法,其特征在于,所述方法还包括:
当检测到所述源端设备向所述对端设备发送数据报文时,将待发送的数据报文备份至所述备用设备;
当检测到设备切换事件时,在所述备用设备与所述对端设备之间建立修复后的TCP连接,并通过修复后的TCP连接向所述对端设备发送所述备用设备上保存的待发送数据的备份数据报文。
11.根据权利要求10所述的数据通信方法,其特征在于,所述方法还包括:
当接收到所述对端设备向所述源端设备返回的确认报文时,在所述备用设备上查找并移除与该确认报文相对应的已发送数据的备份数据报文。
12.根据权利要求10所述的数据通信方法,其特征在于,所述方法还包括:
当接收到所述对端设备向所述源端设备返回的确认报文时,更新用于记录所述数据确认状态的报文确认信息;
以预设时间为间隔,定期读取所述报文确认信息,以根据最新的报文确认信息将备份数据报文分类为已确认数据和未确认数据;
根据报文分类结果移除所述备份数据报文中的已确认数据。
13.一种数据通信装置,其特征在于,所述装置包括:
报文接收模块,被配置为接收与源端设备建立TCP连接的对端设备发送的数据报文,并将所述数据报文加入至所述源端设备的接收报文缓存队列中;
报文确认模块,被配置为生成用于确认所述数据报文接收成功的确认报文,并将所述确认报文加入至所述源端设备的回复报文缓存队列中;
数据读取模块,被配置为从所述源端设备的接收报文缓存队列中读取数据,并将已读取数据备份至与所述源端设备相对应的备用设备中;
报文回复模块,被配置为根据所述已读取数据的数据备份结果更新用于表示所述源端设备的数据接收状态的TCP确认号,以基于所述TCP确认号向所述对端设备发送所述回复报文缓存队列中的确认报文。
14.一种计算机可读介质,其上存储有计算机程序,该计算机程序被处理器执行时实现权利要求1至12中任意一项所述的数据通信方法。
15.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1至12中任意一项所述的数据通信方法。
CN202011272894.1A 2020-11-13 2020-11-13 数据通信方法、装置、计算机可读介质及电子设备 Active CN114500243B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011272894.1A CN114500243B (zh) 2020-11-13 2020-11-13 数据通信方法、装置、计算机可读介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011272894.1A CN114500243B (zh) 2020-11-13 2020-11-13 数据通信方法、装置、计算机可读介质及电子设备

Publications (2)

Publication Number Publication Date
CN114500243A true CN114500243A (zh) 2022-05-13
CN114500243B CN114500243B (zh) 2024-02-09

Family

ID=81489713

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011272894.1A Active CN114500243B (zh) 2020-11-13 2020-11-13 数据通信方法、装置、计算机可读介质及电子设备

Country Status (1)

Country Link
CN (1) CN114500243B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116074252A (zh) * 2023-03-07 2023-05-05 国仪量子(合肥)技术有限公司 Udp数据传输方法及udp数据传输装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030126282A1 (en) * 2001-12-29 2003-07-03 International Business Machines Corporation System and method for improving backup performance of media and dynamic ready to transfer control mechanism
US20060198296A1 (en) * 2005-03-07 2006-09-07 Sumandra Majee Method and apparatus for replicating a transport layer protocol stream
WO2009072706A1 (en) * 2007-12-04 2009-06-11 Ncerti Co., Ltd Service system for backing up and restoring data in mobile terminal
CN104580215A (zh) * 2015-01-09 2015-04-29 烽火通信科技股份有限公司 一种tcp连接热备份的实现方法
CN106230747A (zh) * 2016-08-30 2016-12-14 迈普通信技术股份有限公司 恢复tcp连接序列号的方法、装置及系统
CN109951388A (zh) * 2019-03-29 2019-06-28 新华三技术有限公司 路由不间断方法和主控板
CN110073301A (zh) * 2017-08-02 2019-07-30 强力物联网投资组合2016有限公司 工业物联网中具有大数据集的数据收集环境下的检测方法和系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030126282A1 (en) * 2001-12-29 2003-07-03 International Business Machines Corporation System and method for improving backup performance of media and dynamic ready to transfer control mechanism
US20060198296A1 (en) * 2005-03-07 2006-09-07 Sumandra Majee Method and apparatus for replicating a transport layer protocol stream
WO2009072706A1 (en) * 2007-12-04 2009-06-11 Ncerti Co., Ltd Service system for backing up and restoring data in mobile terminal
CN104580215A (zh) * 2015-01-09 2015-04-29 烽火通信科技股份有限公司 一种tcp连接热备份的实现方法
CN106230747A (zh) * 2016-08-30 2016-12-14 迈普通信技术股份有限公司 恢复tcp连接序列号的方法、装置及系统
CN110073301A (zh) * 2017-08-02 2019-07-30 强力物联网投资组合2016有限公司 工业物联网中具有大数据集的数据收集环境下的检测方法和系统
CN109951388A (zh) * 2019-03-29 2019-06-28 新华三技术有限公司 路由不间断方法和主控板

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116074252A (zh) * 2023-03-07 2023-05-05 国仪量子(合肥)技术有限公司 Udp数据传输方法及udp数据传输装置
CN116074252B (zh) * 2023-03-07 2023-06-06 国仪量子(合肥)技术有限公司 Udp数据传输方法及udp数据传输装置

Also Published As

Publication number Publication date
CN114500243B (zh) 2024-02-09

Similar Documents

Publication Publication Date Title
WO2021121370A1 (zh) 用于消息队列的消息丢失检测方法和装置
US8335853B2 (en) Transparent recovery of transport connections using packet translation techniques
US7860985B2 (en) Method for synchronizing connection state in data communication, and communication node using the same
CN108449239B (zh) 心跳包检测方法、装置、设备和存储介质
CN107277083B (zh) 一种数据交互的处理方法、装置及系统
CN106598633B (zh) 配置文件的更新方法、客户端及服务器
JP2004280738A (ja) 代理応答装置
CN108712457A (zh) 基于Nginx反向代理的后端服务器动态负载调整方法及装置
CN112631788B (zh) 数据传输方法及数据传输服务器
EP3873067A1 (en) Data transmission method and apparatus
CN114185582A (zh) 基于quic协议的汽车软件在线升级系统及方法
CN107104822B (zh) 服务器备灾处理方法、装置、存储介质及电子设备
CN113986501A (zh) 实时数据库api无中断调用方法、系统、存储介质及服务器
CN114500243B (zh) 数据通信方法、装置、计算机可读介质及电子设备
CN111385068B (zh) 数据传输方法、装置、电子设备及通信系统
US11444882B2 (en) Methods for dynamically controlling transmission control protocol push functionality and devices thereof
CN110266446B (zh) 一种基于sack模式调整乱序时长的方法和装置
CN115865886B (zh) 一种基于http的跨网络数据交互方法和装置
WO2024040846A1 (zh) 数据处理方法、装置、电子设备及存储介质
CN111416851A (zh) 在多个负载均衡器之间进行会话同步的方法和负载均衡器
CN116112536A (zh) 一种tcp-串口通信透传的方法及装置
CN113722126A (zh) 一种请求处理方法和装置
CN108667682B (zh) 基于安全网关深度包检测的连接同步方法、装置及介质
CN111416852A (zh) 在多个负载均衡器之间进行会话同步的方法和负载均衡器
CN115580667B (zh) 数据传输方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant