CN111385068A - 数据传输方法、装置、电子设备及通信系统 - Google Patents
数据传输方法、装置、电子设备及通信系统 Download PDFInfo
- Publication number
- CN111385068A CN111385068A CN201811642199.2A CN201811642199A CN111385068A CN 111385068 A CN111385068 A CN 111385068A CN 201811642199 A CN201811642199 A CN 201811642199A CN 111385068 A CN111385068 A CN 111385068A
- Authority
- CN
- China
- Prior art keywords
- message
- data
- communication device
- outgoing
- outgoing message
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/1607—Details of the supervisory signal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1809—Selective-repeat protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L5/00—Arrangements affording multiple use of the transmission path
- H04L5/003—Arrangements for allocating sub-channels of the transmission path
- H04L5/0053—Allocation of signaling, i.e. of overhead other than pilot signals
- H04L5/0055—Physical resource allocation for ACK/NACK
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种数据传输方法、装置、电子设备及通信系统,该方法包括:获取发送至基于面向连接协议的另一通信装置的外发报文;模拟所述另一通信装置生成对于所述外发报文中数据的确认报文;根据所述确认报文,将该外发报文从重传队列中移除。
Description
技术领域
本发明涉及通信技术领域,更具体的,涉及一种数据传输方法、一种通信装置,一种电子设备,以及一种通信系统。
背景技术
现有的通信协议中,无连接的传输层通信协议有用户数据报协议(User DatagramProtocol,UDP),UDP一般用于一点对多点的数据业务,比如视频会议。基于UDP进行数据传输,发送端不需要与接收端进行任何的协商,就可以将数据发出,接收端在接收到数据后,也不会给发送端确认(ack),因此,基于UDP可以形成无连接透传的数据传输通道,而且,目前,也只有UDP可以提供该种无连接透传的数据传输通道。
因此,在一些应用场景下,均是基于UDP实现数据的无连接透传,在该种应用中,受UDP本身的限制,为实现数据的无连接透传,将必然面临性能上的损失,例如无法进行建立连接、关闭连接等系统管理,难于对通信系统进行优化等。这就亟需提供一种新的数据传输方法,以在进行数据透传的同时,还能够进行良好的通信系统管理。
发明内容
本发明实施例的一个目的是提供一种进行数据传输的新的技术方案。
根据本发明的第一方面,提供了一种数据传输方法,由基于面向连接协议的一通信装置实施,其包括:
获取发送至基于面向连接协议的另一通信装置的外发报文;
模拟所述另一通信装置生成对于所述外发报文中数据的确认报文;
根据所述确认报文,将所述外发报文从重传队列中移除。
可选地,所述方法还包括:
识别所述外发报文是否为具有数据的数据报文;
在所述外发报文是数据报文的情况下,再执行所述模拟所述另一通信装置生成对于所述外发报文中数据的确认报文的步骤。
可选地,所述识别所述外发报文是否为具有数据的数据报文步骤,包括:
获取所述外发报文的数据长度信息;
根据所述数据长度信息,识别所述外发报文是否为所述数据报文。
可选地,所述模拟所述另一通信装置生成对于所述外发报文中数据的确认报文步骤,包括:
获取所述外发报文中数据的起始序号和所述外发报文中数据的数据长度信息;
根据所述起始序号和所述数据长度信息,模拟所述另一通信装置生成对于所述外发报文中数据的确认报文。
可选地,所述模拟所述另一通信装置生成对于所述外发报文中数据的确认报文的步骤,包括:
将所述外发报文置入预设等待队列中;
检测当前时间与最先进入所述等待队列中的外发报文的发送时间的差值是否达到设定时间值,其中,所述设定时间值小于设定的超时重传时间值;
若是,模拟所述另一通信装置生成对于所述等待队列中所有数据的确认报文,并清空所述等待队列。
可选地,所述方法还包括:
查找序号先于所述外发报文中数据的设定控制标志位的置位指示;
检测是否接收到所述另一通信装置返回的对于所述置位指示的确认报文;
在接收到所述对于所述置位指示的确认报文的情况下,再执行所述模拟所述另一通信装置生成对于所述外发报文中数据的确认报文的步骤。
可选地,所述方法还包括:
在所述外发报文还是控制报文的情况下,去除所述外发报文中的数据,得到的裁剪后的报文,其中,所述控制报文为对设定控制标志位进行置位指示的报文;
将所述裁剪后的报文送入所述重传队列中。
可选地,所述面向连接协议为TCP协议。
可选地,所述方法还包括:
接收所述另一通信装置发送的对方报文;
识别所述对方报文是否为对所述数据进行确认的真实确认报文;
在所述对方报文是所述真实确认报文的情况下,丢弃所述对方报文中对应所述真实确认报文的内容。
可选地,所述丢弃所述对方报文中对应所述真实确认报文的内容,包括:
设置所述对方报文中的确认标志位无效;或者,
清空所述对方报文中的确认序号字段的内容。
根据本发明的第二方面,还提供了一种基于面向连接协议的通信装置,其包括存储器和处理器,所述存储器用于存储可执行的指令;所述处理器用于在所述指令的控制下执行根据本发明第一方面中的数据传输方法。
根据本发明的第三方面,还提供了一种基于面向连接协议的通信装置,其包括:
报文获取模块,用于获取发送至基于面向连接协议的另一通信装置的外发报文;
确认报文模拟模块,用于模拟所述另一通信装置生成对于所述外发报文中数据的确认报文;以及,
报文处理模块,用于根据所述确认报文,将所述外发报文从重传队列中移除。
根据本发明的第四方面,还提供了一种电子设备,其包括本发明第二方面或者第三方面中的通信装置。
根据本发明的第五方面,还提供了一种通信系统,包括服务器和终端设备,所述服务器包括一根据本发明第二方面或者第三方面中的通信装置,所述终端设备包括另一根据本发明第二方面或者第三方面中的通信装置。
根据本发明的第六方面,还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器执行时实现如本发明第一方面中任一项所述的数据传输方法。
本发明的一个有益效果在于,根据本发明实施例的方法、装置、电子设备及通信系统,其基于面向连接协议进行数据传输,但作为发送端的通信装置在发送具有数据的外发报文时,会模拟作为接收端的通信装置生成对于所发送数据的确认报文,以禁止在任何情况下对该数据进行重传处理,进而实现数据透传。与此同时,由于面向连接协议具有多种成熟的连接管理策略,因此,相对通过UDP进行数据传输的通信系统,本发明实施例的通信系统将具有更好的系统性能,具有完善的连接管理和错误处理机制,并能够有效解决穿透防火墙的问题,进而为实现数据透传提供了更有优势的解决方案。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。
图1是显示可用于实现本发明实施例的通信系统的硬件配置的原理框图;
图2是根据本发明实施例的数据传输方法的流程示意图;
图3是根据本发明一个例子的数据传输交互示意图;
图4是根据本发明一个例子的数据传输交互示意图;
图5是根据本发明另一实施例的数据传输方法的流程图;
图6是根据本发明第三实施例的数据传输方法的流程图;
图7是根据本发明第四实施例的数据传输方法的流程图;
图8是根据本发明实施例的服务器和终端设备的交互过程流程示意图;
图9是根据本发明实施例的基于面向连接协议的通信装置的结构示意图;
图10是根据本发明另一实施例的基于面向连接协议的通信装置的结构示意图;
图11是根据本发明实施例的电子设备的硬件结构示意图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
<硬件配置>
图1是根据本发明实施例的通信系统100的组成结构示意图。
根据图1所示,本实施例的通信系统100包括服务器1000和终端设备2000。
服务器1000提供处理、数据库、通讯设施的业务点。服务器1000可以是整体式服务器或是跨多计算机或计算机数据中心的分散式服务器。服务器可以是各种类型的,例如但不限于,网络服务器,新闻服务器,邮件服务器,消息服务器,广告服务器,文件服务器,应用服务器,交互服务器,数据库服务器,或代理服务器。在一些实施例中,每个服务器可以包括硬件,软件,或用于执行服务器所支持或实现的合适功能的内嵌逻辑组件或两个或多个此类组件的组合。例如,服务器例如刀片服务器、云端服务器等,或者可以是由多台服务器组成的服务器群组,可以包括上述类型的服务器中的一种或多种等等。
在一个实施例中,服务器1000可以如图1所示,包括处理器1100、存储器1200、接口装置1300、通信装置1400、显示装置1500、输入装置1600。
在该实施例中,服务器1000还可以包括扬声器、麦克风等等,在此不做限定。
处理器1100可以是专用的服务器处理器,也可以是满足性能要求的台式机处理器、移动版处理器等,在此不做限定。存储器1200例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1300例如包括各种总线接口,例如串行总线接口(包括USB接口)、并行总线接口等。通信装置1400能够进行有线或无线通信,通信装置1400至少能够基于面向连接协议进行通信,以至少能够实施本发明任意实施例的数据传输方法。显示装置1500例如是液晶显示屏、LED显示屏触摸显示屏等。输入装置1600例如可以包括触摸屏、键盘等。
尽管在图1中示出了服务器1000的多个装置,但是,本发明可以仅涉及其中的部分装置,例如,服务器1000只涉及存储器1200、通信装置1400以及处理器1100。
终端设备2000例如是手机、PC机、便携式电脑、平板电脑、掌上电脑、可穿戴设备等。
在一个实施例中,终端设备2000可以如图1所示,包括处理器2100、存储器2200、接口装置2300、通信装置2400、显示装置2500、输入装置2600、扬声器2700、麦克风2800等等。
处理器2100可以是中央处理器CPU、微处理器MCU等。存储器2200例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置2300例如包括USB接口、耳机接口等。通信装置2400能够进行有线或无线通信,通信装置1400至少能够基于面向连接协议进行通信,以至少能够实施本发明任意实施例的数据传输方法。显示装置2500例如是液晶显示屏、触摸显示屏等。输入装置2600例如可以包括触摸屏、键盘、体感输入等。用户可以通过扬声器2700和麦克风2800输入/输出语音信息。
尽管在图1中示出了终端设备2000的多个装置,但是,本发明可以仅涉及其中的部分装置,例如,终端设备2000只涉及通信装置2400、存储器2200和处理器2100。
通信网络3000可以是无线通信网络也可以是有线通信网络,可以是局域网也可以是广域网。
本实施例中,服务器1000与终端设备2000可以通过各自的通信装置1400、2400,基于面向连接协议进行数据传输,并在数据传输的过程中实施本发明任意实施例的数据传输方法。
<方法实施例>
图2为根据一个实施例的数据传输方法的示意性流程图。
根据图2所示,本实施例的数据传输方法由基于面向连接协议的一通信装置8000A实施,即,本实施例的数据传输方法为基于面向连接协议的数据传输方法,本实施例的数据传输方法可以包括如下步骤S2100~S2300:
步骤S2100,通信装置8000A获取发送至基于面向连接协议的另一通信装置8000B的外发报文。
在一个例子中,通信装置8000A可以是图1中的通信装置1400,另一通信装置8000B可以是图1中的通信装置2400。
在另一个例子中,通信装置8000A可以是图1中的通信装置2400,另一通信装置8000B可以是图1中的通信装置1400。
本实施例中,报文是传输层的基本数据单元,也被称之为报文段,其包含了通信装置8000A一次性所要发送的完整信息,报文在发送过程中会被下层进一步封装成包、帧,最终由通信装置8000A以数据帧的形式发送至另一通信装置8000B,通信装置8000B通过逆向解封,即可获得报文携带的完整信息,该信息可以包括数据信息和控制信息中的至少一种。
本实施例中,以通信装置8000A为执行本实施例的方法的主体,外发报文即为由通信装置8000A发送至另一通信装置8000B的报文,对方报文即为通信装置8000A接收到的来自另一通信装置8000B的报文。
本实施例中,面向连接协议为传输层协议。
面向连接协议与无连接协议的区别在于:通信装置8000A需要与另一通信装置8000B联系,并通过联系来维持一个对话,包括在建立连接时进行连接协商联系,在关闭连接时进行关闭协商联系等;而且,在通信装置8000A发出一外发报文后,另一通信装置8000B如果成功接收到该外发报文,会向通信装置8000A进行接收确认(ack),通信装置8000A如果没有接收到相应的确认(ack),将会在满足协议所规定的条件时重传该外发报文至另一通信装置8000B。
在一个例子中,该面向连接协议可以为最常用的传输控制协议(TransmissionControl Protocol,TCP),在该例子中,本实施例提及的各种报文均为TCP报文。
在另外的例子中,该面向连接协议也可以是顺序分组交换协议(SequencedPacket Exchange protocol,SPX),连接模型网络协议(Connection Mode NetworkProtocol,CMNP)等。
对于面向连接协议,通信装置8000A在从上层应用获取到待发送的数据后,会将待发送的数据分割成多个TCP报文,按序号排列发送至另一通信装置8000B。
以TCP为例,通信装置8000A与通信装置8000B在建立连接的过程中可以通过报文中的选项字段协商确定最大报文段长度MSS,进而根据该最大报文段长度MSS将待发送的数据分割成多个TCP报文,该多个TCP报文的大小可以相同,也可以不相同,但不能超过最大报文段长度MSS。
以TCP为例,基于面向连接协议的报文(包括外发报文、对方报文)的报文格式包括报文首部和数据段,其中,报文首部中包括至少一个协议字段信息,该协议字段信息例如但不限于包括源端口号、目的端口号、序号seq、确认序号、同步标志SYN、结束标志FIN、确认标志ACK以及复位标志RST等。数据段则承载所要发送的数据。在此,基于面向连接协议的报文至少具有报文首部,根据报文的作用可以具有数据段,也可以不具有数据段。
在报文首部中,序号seq是TCP报文中数据段首个字节的序号,在TCP协议中,TCP报文中数据段的每个字节都会被顺序编号,例如,一个TCP报文的序号seq是301,而数据段中的数据为100字节,则该TCP报文的末尾字节的序号则为400,这说明,下一个TCP报文的序号seq应为401。
另外,在TCP报文中,除了数据段的每个字节均被编号之外,一些控制标志位的置位指示(即有效指示)也会占一个序号,这些控制标志位即为本申请中指出的设定控制标志位,该设定控制标志位包括同步标志SYN(连接阶段被置位)、结束标志FIN(关闭阶段被置位)等。
确认序号指明期待收到对方发送的下一个字节的序号。例如,通信装置8000A发送了序号seq为501的TCP报文,该TCP报文的数据段携带200字节的数据,这说明,该TCP报文的末尾字节的序号为700,另一通信装置8000B在收到了该TCP报文后,对该TCP报文进行确认的确认序号将为701,指明期待收到通信装置8000A发送的下一个字节的序号为701,这说明,通信装置8000A所要发送的下一TCP报文的序号seq将为701;另外,确认序号701还用于向通信装置8000A说明:通信装置8000B已经成功接收到了通信装置8000A所发送的序号小于701的所有字节。
同步标志SYN用于在连接建立时同步序号,仅当同步标志SYN被置位时,即SYN=1时,同步标志字段才有效。
结束标志FIN用于释放连接,仅当结束标志FIN被置位时,即FIN=1时,结束标志字段才有效。
确认标志ACK用于表明确认序号有效,仅当ACK=1时,确认序号字段才有效。
数据段承载所要发送的数据,该数据通常是业务数据,报文中还可以设置数据长度字段,用于指示数据段所携带数据的数据长度(字节数)。
步骤S2200,通信装置8000A模拟另一通信装置8000B生成对于该外发报文中数据的确认报文。
本实施例中,在该外发报文是具有数据的数据报文的情况下,通信装置8000A仅模拟另一通信装置8000B生成对于该外发报文中数据的确认报文,这样,在该确认报文被及时注入至通信装置8000A的协议栈中后,通信装置8000A的协议栈将认为该外发报文中的数据已被通信装置8000B成功接收,并将该外发报文从重传队列中移除,这样,无论通信装置8000B是否真正成功接收到该外发报文中的数据,通信装置8000A都将不会对该外发报文的数据进行重传,进而实现数据透传。
在一个例子中,该步骤S2200中模拟另一通信装置8000B生成对于外发报文中数据的确认报文可以进一步包括如下步骤:
步骤S2211,通信装置8000A获取外发报文中数据的起始序号和外发报文中数据的数据长度信息。
以外发报文是TCP报文为例,通信装置8000A可以是从TCP报文的报文首部中获取序号seq的数值a,该序号seq的数值a即为该外发报文中数据的起始序号。
步骤S2212,通信装置8000A根据起始序号和数据长度信息,模拟另一通信装置8000B生成对于外发报文中数据的确认报文。
根据该步骤S2212,在对于外发报文中数据的确认报文中,确认标志ACK被置位,即ACK=1,确认序号等于该外发报文的序号seq的数值a+数据长度L(字节数)。
在将模拟生成的该确认报文注入至通信装置8000A的协议栈后,协议栈将认为通信装置8000B已经成功接收到序号小于a+L的所有数据,期待接收的下一字节的序号为a+L。此时,通信装置8000A的协议栈会将该外发报文从重传队列中移除。
例如,参见图3所示,在建立连接后的数据传输阶段,外发报文仅为数据报文,其中,数据报文可以捎带确认标志的置位指示,通信装置8000A发出外发报文A3,在外发报文A3中:序号seq=x+1,ack=y+1,length=100,其中,ack=y+1表示通信装置8000A确认已经成功接收到通信装置8000B发送的序号小于y的所有数据,期待接收通信装置8000B发送的下一字节的序号为y+1,length为外发报文A3的数据段所携带数据的字节数。
在该例子中,根据本发明实施例的数据传输方法,通信装置8000A将在发出外发报文A3后,模拟通信装置8000B生成针对外发报文A3中数据的确认报文,即模拟生成的确认报文的内容为:seq=y+1,ack=x+101。在此,由于该模拟生成的确认报文未携带任何有效数据,因此,其中的序号seq=y+1不会对通信装置8000B所要发送的下一字节的序号造成任何影响,通信装置8000B仍然可以发出图3中的对方报文B2:ACK=1,seq=y+1,ack=x+101,length=100,其中,该对方报文B2的100个字节的数据的起始序号为y+1,末尾序号为y+100。
又例如,参照图4所示,外发报文A6既为数据报文,又因携带了FIN=1而同时成为控制报文,在外发报文A6中:结束标志(设定控制标志位)FIN=1,序号seq=M,数据长度length=100,可以得知,该外发报文A6所携带数据的起始序号为M,末尾序号为M+99,FIN=1占用一个字节,序号为M+100。
在该例子中,根据本发明实施例的数据传输方法,通信装置8000A在模拟生成对于外发报文A6中数据的确认报文时,确认的内容是ack=M+100,而并不会模拟通信装置8000B生成对于外发报文A6中的FIN=1的确认报文。这样,按照协议规定,通信装置8000A需要等待通信装置8000B针对外发报文A6中的FIN=1的确认报文,即图4中的ack=M+101,才会进入断开连接等待的状态,如果未接收到通信装置8000B针对外发报文A6中的FIN=1的确认报文,会根据协议规定启动重传。
在一个例子中,该步骤S2200中模拟另一通信装置8000B生成对于外发报文中数据的确认报文可以进一步包括如下步骤:
步骤S2221,通信装置8000A将外发报文置入预设等待队列中。
根据该步骤S2221,通信装置8000A可以设置一等待模拟确认的等待队列,以将顺序发送的各个数据报文堆栈进该等待队列,以等待对等待队列中所有数据报文所携带的数据统一进行模拟确认。
步骤S2222,通信装置8000A检测当前时间与最先进入该等待队列中的外发报文的发送时间的差值是否达到设定时间值,其中,该设定时间值小于设定的超时重传时间,如是,则执行步骤S2323。
根据该步骤S2222,最先进入该等待队列中的外发报文为该等待队列中发送时间最早的数据报文,也即序号seq最小的数据报文。因此,如果当前之间与最先进入该等待队列中的外发报文的发送时间的差值未达到该设定时间值,则说明对于等待队列中的所有数据报文,即使没有接收到通信装置8000B返回的确认报文,通信装置8000A在此时也不会启动重传,此时,可以继续等待新的数据报文进入该等待队列,直到当前时间与最先进入该等待队列中的外发报文的发送时间的差值达到设定时间值。
步骤S2223,通信装置8000A模拟另一通信装置8000B生成对于等待队列中所有数据(即所有数据报文所携带的数据)的确认报文,并清空该等待队列。
例如,等待队列中最后进入的外发报文的序号seq为M,数据长度为L,则模拟通信装置8000B生成ack=M+L注入自身的协议栈,即相当于对等待队列中所有数据都进行了模拟确认。
在例子中,可以对等待队列中所有数据报文所携带的数据统一进行确认,这可以有效减少模拟生成确认报文的次数。
在另外的例子中,通信装置8000A也可以在每发送一数据报文后,立刻模拟通信装置8000B生成针对该数据报文中数据的确认报文,以加快将数据报文从重传队列中移除的速度,提高传输效率。
在一个例子中,该步骤S2200中模拟另一通信装置8000B生成对于外发报文中数据的确认报文还可以进一步包括如下步骤S2224:对于以上步骤S2222的检测,在当前时间与最先进入该等待队列中的外发报文的发送时间的差值未达到设定时间值的情况下,通信装置8000A再进一步检测该外发报文是否同时为数据报文和控制报文,如是,则模拟另一通信装置8000B生成对于等待队列中所有数据(即所有数据报文所携带的数据)的确认报文,并清空等待队列。
该例子中,如果该外发报文仅是数据报文,则可以继续等待新的数据报文进入该等待队列。
步骤S2300,通信装置8000A将该外发报文从重传队列中移除。
根据该步骤S2300,通信装置8000A可以将模拟生成的确认报文注入协议栈,此时,协议栈将认为通信装置8000B已经成功接收到该外发报文中的数据,进而将该外发报文从重传队列中移除,实现数据透传。
在一个例子中,面向连接协议是TCP协议,外发报文是TCP报文,在此,通信装置8000A根据以上步骤S2200,模拟通信装置8000B生成对于TCP报文中数据的确认报文之后,可以是将该确认报文注入自身的TCP协议栈中,并根据该确认报文确认TCP报文中的数据被通信装置8000B成功接收,进而将该外发报文从重传队列中移除。
根据本发明实施例的方法,其基于面向连接协议进行通信连接,但作为发送端的通信装置8000A在数据传输阶段,会模拟作为接收端的通信装置8000B生成对于所发送数据的确认报文,以禁止在任何情况下对该数据进行重传处理,进而实现数据透传。
另外,根据本发明实施例的方法,对于对外报文携带的除数据信息以外的其他有效信息(单独占用序号的其他信息),例如,设定控制标志位的置位指示的信息,其不会进行模拟确认的处理,因此,通信装置8000A与通信装置8000B可以基于面向连接协议正常联系,例如,进行建立连接的协商及断开连接的协商等,进而保证其他信息的可靠传输。
再者,根据本发明实施例的方法,由于面向连接协议具有多种成熟的连接管理策略,因此,相对通过UDP进行数据传输的方法,本发明实施例的方法将使得通信系统具有更好的系统性能,例如,具有完善的连接管理和错误处理机制,并能够有效解决穿透防火墙的问题,进而为实现数据透传提供了更有优势的解决方案。
在一个实施例中,本发明方法还可以包括如下步骤:通信装置8000A识别步骤S2100获取的外发报文是否为具有数据的数据报文,如是,再执行以上步骤S2200中模拟另一通信装置8000B生成对于该外发报文中数据的确认报文的操作。
本实施例中,如果一外发报文的数据段携带有数据,则该外发报文为数据报文。
例如,如果一外发报文的数据段的数据长度的字节数大于0,则该外发报文属于数据报文,否则,该外发报文不属于数据报文。
本实施例中,如果一外发报文的设定控制标志位被置位,则该外发报文为控制报文。该设定控制标志位指需要单独占用一个序号的标志位,以TCP报文为例,该设定控制标志位包括同步标志SYN、结束标志FIN、复位标志RST等。
例如,一个外发报文中SYN=1,表示同步标志SYN字段有效,该外发报文属于控制报文。又例如,一个外发报文中FIN=1,表示结束标志FIN字段有效,该外发报文属于控制报文。再例如,一个外发报文中RST=1,表示复位标志RST字段有效,该外发报文属于控制报文。
本实施例中,该外发报文可以仅为数据报文,对应地,该外发报文中的设定控制标志位的状态均为无效,但确认标志ACK可以有效,即数据报文可以捎带确认序号。
本实施例中,该外发报文也可以仅为控制报文。在该例子中,外发报文的数据段未携带任何数据。例如,该外发报文中SYN=1,且数据长度为0字节。
本实施例中,该外发报文也可以同时为控制报文和数据报文,这说明,该外发报文中的至少一个设定控制标志位被置位有效,且数据段携带有数据。例如,一个外发报文中FIN=1,且数据长度length=100字节,则该外发报文既是控制报文,又是数据报文。
在一个例子中,该步骤中识别外发报文是否为具有数据的数据报文可以进一步包括如下步骤S2410~S2420:
步骤S2410,通信装置8000A获取外发报文的数据长度信息。
在一个例子中,外发报文中可以设置数据长度字段,数据长度字段具有数据长度信息,该数据长度信息表示数据段所携带数据的字节数。在该步骤S2410中,可以通过读取数据长度字段的内容获取该数据长度信息。
在另一个例子中,可以根据其他长度信息计算得到外发报文的数据长度信息。以外发报文是TCP报文为例,由于TCP报文嵌入在IP报文中,因此,可以通过IP报文头携带的数据长度减去TCP报文的头部长度得到该数据长度信息。
步骤S2420,通信装置8000A根据数据长度信息,识别外发报文是否为数据报文。
在数据长度信息为“0”时,表示数据段未携带任何数据,在数据长度信息大于“0”时,表示数据段携带有数据。
例如,一个外发报文的数据长度信息为length=100,这说明,数据段携带有100字节的数据,该外发报文为数据报文。
在一个实施例中,如果外发报文不是数据报文,则通信装置8000A可以根据面向连接协议,将该外发报文送入重传队列,进入等待通信装置8000B确认的状态,如果通信装置8000A在协议规定的时间内接收到通信装置8000B对于外发报文所携带信息的确认报文,则将该外发报文从重传队列中移除,否则,将启动重传。
例如,参照图3,通信装置8000A与通信装置8000B在建立连接的三次握手阶段,通信装置8000A发出外发报文A1,在外发报文A1中:序号seq=x,SYN=1,该序号seq=x为随机生成,其可以为0,也可以为其他序号,SYN=1表示同步标志被置位,通信装置8000A请求建立连接,该外发报文A1不具有数据,因此不是数据报文,其是对设定控制标志位进行置位指示的控制报文。
在该例子中,根据本实施例的方法,通信装置8000A在发出外发报文A1后,会基于TCP协议,将外发报文A1送入重传队列,以等待通信装置8000B确认。通信装置8000B在成功接收到该外发报文A1后,会向通信装置8000A发送对方报文B1:序号seq=y,SYN=1,ack=x+1,该序号seq=y同样为随机生成,ack=x+1即为对外发报文A1的确认。在通信装置8000A成功接收到该对方报文B1后,会将外发报文A1从重传队列中移除,并回复ack=y+1,以对成功接收到对方报文B1向通信装置8000B进行确认。在该例子中,如果通信装置8000A在协议规定的时间内没有接收到对方报文B1,则会对外发报文A1进行重传,直到接收到对方报文B1为止。
又例如,参照图3,通信装置8000A与通信装置8000B在断开连接的四次挥手阶段,通信装置8000A发出外发报文A4,在外发报文A4中:序号seq=M,FIN=1,ack=N,FIN=1表示结束标志被置位,通信装置8000A请求单方向断开连接,ack=N是对通信装置8000B在先发送的序号小于N的所有信息的确认,该外发报文A4不具有数据,因此不是数据报文,其是对设定控制标志位进行置位指示的控制报文。
在该例子中,根据本实施例的方法,通信装置8000A在发出外发报文A4后,会基于TCP协议,将外发报文A4送入重传队列,以等待通信装置8000B确认。通信装置8000B在成功接收到该外发报文A4后,会向通信装置8000A发送对方报文B3:ack=M+1。在通信装置8000A成功接收到该对方报文B3后,会将外发报文A4从重传队列中移除。在该例子中,如果通信装置8000A在协议规定的时间内没有接收到对方报文B3,则会对外发报文A4进行重传,直到接收到对方报文B3为止。
在该例子中,当通信装置8000B也完成所有数据的发送后,参见图3,其会向通信装置8000A发出对方报文B4:序号seq=N,FIN=1,ack=M+1,此时,通信装置8000B也请求单方向断开连接,此时,由于在通信装置8000A单方向断开连接后,就不会再发送新的数据,因此,对方报文B4的确认序号ack仍然为M+1,通信装置8000A在成功接收到对方报文B4后,发出外发报文A5:ack=N+1。
根据本发明该实施例,对于不是数据报文的其他报文,可以基于面向连接协议启动重传机制,保证其他信息传输的可靠性,例如保证通信连接的正常开启和关闭。
图5是根据本发明另一实施例的数据传输方法的流程示意图。
根据图5所示,本实施例的方法还可以包括如下步骤:
步骤S5100,通信装置8000A查找序号先于外发报文中数据的设定控制标志位的置位指示。
根据该步骤S5100,通信装置8000A在对外发报文中的数据进行模拟确认之前,可以先查找占用序号的设定控制标志位,其中,报文中的设定控制标志位在被置位时,即有效时,将占用一个序号。
本实施例中,该外发报文可以是通信装置8000A发送的任意一个中间报文,这也可以理解为是,在发送该外发报文之前,通信装置8000A可能向通信装置8000B发送了一些控制报文。例如,参见图3的建立连接的三次握手阶段,在发送外发报文之前,通信装置8000A可以是将SYN=1的控制报文发送至通信装置8000B。
步骤S5200,通信装置8000A检测是否接收到通信装置8000B返回的对于该置位指示的确认报文,如接收到,再执行上述步骤S2300,即执行模拟另一通信装置8000B生成对于外发报文中数据的确认报文的步骤;如未接收到,则循环执行步骤S5200进行检测,直至接收到通信装置8000B返回的对于该置位指示的确认报文。
在此,由于一些控制标志位的置位指示会单独占用一个序号,因此,模拟通信装置8000B生成对于外发报文中数据的确认报文,会对序号在先的一些置位指示也一并确认,因此,根据本实施例的方法可以保证这些置位指示只能由通信装置8000B确认,进而保证这些置位指示的可靠传输。
在另外的实施例中,也可以通过协议设定:只有通信装置8000B对要求确认的置位指示进行确认后,通信装置8000A才能继续发送数据报文,这样就不需进行本实施例的检测操作,而直接对数据报文中的数据进行模拟确认。但是,根据本实施例的方法,可以在实现数据透传的同时,允许对协议进行更灵活的设置。
图6是根据本发明另一实施例的数据传输方法的流程示意图。
根据图6所示,本实施例的数据传输方法还可以包括如下步骤:
步骤S6100,通信装置8000A在外发报文为具有数据的数据报文的情况下,进一步检测该外发报文是否还是控制报文。
控制报文为对设定控制标志位进行置位指示的报文,该设定控制标志位的置位指示单独占用一个序号,需要由另一通信装置8000B确认。
该设定控制标志位例如是同步标志SYN,结束标志FIN等。
步骤S6200,在外发报文还是控制报文的情况下,通信装置8000A去除该外发报文中的数据,得到裁剪后的报文。
在一个例子中,通信装置8000A在外发报文还为控制报文的情况下,可以是去除外发报文中的数据,并修改外发报文中的序号Seq,以得到裁剪后的报文。
例如,对于图4中的外发报文A6,其是FIN=1,且数据段有效的数据报文和控制报文,在此,通信装置8000A可以是去除外发报文中数据段的数据,并将序号seq修改为M+100,进而得到裁剪后的报文,可以理解的是,裁剪后的报文为FIN=1的控制报文。
步骤S6300,通信装置8000A将裁剪后的报文置入重传队列。
根据该步骤S6300,裁剪后的报文置入重传队列后,会等待接收通信装置8000B返回的确认报文,如在规定时间内未接收到该确认报文,将仅重传裁剪后的报文。
根据本实施例,在外发报文同为数据报文和控制报文的情况下,能够对外发报文进行裁剪处理,以在未收到通信装置8000B针对外发报文中置位指示的确认报文时,仅重传控制信息的部分,减少冗余。
图7是根据本发明另一实施例的数据传输方法的流程示意图。
根据图7所示,本实施例的方法还可以包括如下步骤:
步骤S7100,通信装置8000A接收另一通信装置8000B发送的对方报文。
例如,对方报文可以是SYN=1,且数据段无效的控制报文;又例如,对方报文可以是数据报文,其中,数据报文可以捎带确认序号,即确认标志ACK有效;又例如,对方报文仅是ACK=1的确认报文;再例如,对方报文可以同为数据报文和控制报文。
步骤S7200,通信装置8000A识别对方报文是否为对外发报文中数据进行确认的真实确认报文。
根据该步骤S7200,通信装置8000A可以根据对方报文中确认标志ACK是否有效,以及确认序号的数值来判断该对方报文是否为对外发报文中数据进行确认的真实确认报文。
例如,参见图3,对方报文B2中的ack=x+101,其是对外发报文A3中数据的真实确认报文。
例如,参照图4,外发报文A6中的结束标志FIN=1,序号seq=M,数据长度length=100,可以得知,该外发报文A6同为控制报文和数据报文,该外发报文A6所携带数据的起始序号为M,末尾序号为M+99,FIN=1占用一个字节,序号为M+100,通信装置8000A在将该外发报文A6发送至通信装置8000B时,根据起始序号M和数据长度length=100,模拟通信装置8000B生成对于外发报文A6中数据的确认报文ack=M+100。另一方面,通信装置8000B在成功接收到外发报文A6后,会向通信装置8000A发出对方报文B5:ack=M+101,由于通信装置8000A已经自身模拟生成了确认报文ack=M+100,因此,该对方报文B5不是对外发报文A6中数据的真实确认报文,而是对外发报文A6中结束标志FIN=1的真实确认报文。
步骤S7300,通信装置8000A在对方报文是真实确认报文的情况下,丢弃对方报文中对应真实确认报文的内容。
在一个例子中,该步骤S7300中丢弃对方报文中对应真实确认报文的内容可以是:设置对方报文中的确认标志位无效。
例如,参照图3,接收到的对方报文B2中的确认标志ACK=1,ack=x+101,在此,可以是将对方报文B2中的确认标志ACK设置为无效,例如可以是设置ACK=0,这样,不会影响通信装置8000A正常接收对方报文B2的数据段所携带有100字节的数据。
在一个例子中,该步骤S7300中丢弃对方报文中对应真实确认报文的内容也可以是:清空对方报文中的确认序号字段的内容。
例如,同样参照图3,接收到的对方报文B2中的确认标志ACK=1,ack=x+101,在此,可以是删除对方报文B2中的ack=x+101,例如修改为ack=0。
在一个例子中,如果对方报文仅是用于确认外发报文中数据的真实确认报文,则还可以直接丢弃该对方报文。
<例子>
图8为根据本发明实施例的服务器1000和终端设备2000之间的交互过程的示意性流程图,其中,服务器1000通过通信装置1400实施相关步骤,终端设备2000通过通信装置2400实施相关步骤。
根据图1和图8所示,本实施例的面向连接协议为TCP协议,在此,本实施例的数据传输过程可以包括如下步骤:
步骤S8110,服务器1000准备接收终端设备2000发送的第一建立连接指示。
在执行步骤S8110之后,服务器1000进入监听LISTEN状态。
步骤S8210,终端设备2000向服务器1000发送第一建立连接指示。
该第一建立连接指示可以通过TCP报文的形式表示,例如,参照图3,该TCP报文可以是报文A1,在报文A1中:序号seq=x,SYN=1,该序号seq=x为随机生成,SYN=1表示同步标志被置位,代表第一建立连接指示,该报文A1通常不具有数据。
步骤S8120,服务器1000接收到第一建立连接指示之后,向终端设备2000发送第二建立连接指示;同时,向终端设备2000发送第一确认指示,表示已经成功接收到第一建立连接指示。
第二建立连接指示和第一确认指示可以通过TCP报文的形式表示,例如,参照图3,该TCP报文可以是报文B1,在报文B1中:序号seq=y,SYN=1,ack=x+1,该序号seq=y同样为随机生成,ack=x+1即为对报文A1的确认,对应第一确认指示,SYN=1表示同步标志被置位,代表第二建立连接指示此时,服务器1000进入了同步接收SYN-RCVD状态。
步骤S8220,终端设备2000接收到第二建立连接指示后,向服务器1000发送第二确认指示。
该第二确认指示可以通过TCP报文的形式表示,例如,参照图3,TCP报文可以为报文A2,在报文A2中,ack=y+1即为对报文B1的确认,对应第二确认指示。此时,终端设备2000和服务器1000之间的TCP连接建立,终端设备2000进入已建立连接ESTABLISHED状态。
以上步骤S8110~S8220为服务器1000与终端设备2000在建立连接的三次握手阶段,通过以上步骤S8110~S8220可以建立服务器1000和终端设备2000之间的通信连接。
在以上步骤S8110、S8210和S8220中传输的报文均未携带数据,不属于数据报文,因此,作为报文发送端的通信装置1400或者通信装置2400,均不会模拟对方生成对于报文中数据的确认报文,且报文A1、报文B1具有设定控制标志位的置位指示(SYN=1),作为报文发送端的通信装置1400或者通信装置2400会将报文A1、报文B1送入重传队列,如果设定时间内未接收到对方返回的确认报文,将对报文A1、报文B1进行重传,以保证双方之间的可靠连接。
步骤S8230,终端设备2000发送TCP报文。
步骤S8130,服务器1000发送针对TCP报文中数据的确认报文。
根据以上步骤S8230和步骤S8130,在建立连接后的数据传输阶段,该TCP报文主要为数据报文,其中,数据报文可以捎带确认标志的置位指示。
参照图3,终端设备2000发送报文A3,在报文A3中:序号seq=x+1,ack=y+1,length=100,其中,ack=y+1表示终端设备2000确认已经成功接收到服务器1000发送的序号小于y的所有数据,期待接收服务器1000发送的下一字节的序号为y+1,length为报文A3的数据段所携带数据的字节数。终端设备2000将报文A3发出后,模拟服务器1000生成针对报文A3中数据的确认报文,即模拟生成的确认报文的内容为:seq=y+1,ack=x+101,并根据模拟生成的该确认报文,将报文A3从重传队列中移除。
同时,当服务器1000接收到终端设备2000发送的报文A3后,会向终端设备2000发送报文B2,在报文B2中,ACK=1,seq=y+1,ack=x+101,length=100,其中,该报文B2的100个字节的数据的起始序号为y+1,末尾序号为y+100,终端设备2000通过检测发现该报文B2是对报文A3中的数据进行确认的真实确认报文,即,报文B2包含对应真实确认报文的内容ACK=1,ack=x+101,因此,丢弃报文B2中对应真实确认报文的内容,例如修改报文B2中的ACK=0。
步骤S8240,终端设备2000向服务器1000发送第一断开连接指示。
该第一断开连接指示可以通过TCP报文的形式表示,例如,参照图3,该TCP报文可以是报文A4,在报文A4中:序号seq=M,FIN=1,ack=N,FIN=1表示结束标志被置位,代表第一断开连接指示,终端设备2000请求单方向断开连接,ack=N是对服务器1000在先发送的序号小于N的所有信息的确认,该报文A4不具有数据,因此不是数据报文,其是对设定控制标志位进行置位指示的控制报文。
步骤S8140,服务器1000接收到第一断开连接指示之后,向终端设备2000发送第三确认指示,以告知终端设备2000其已成功接收到该第一断开连接指示。
该第三确认指示可以通过TCP报文的形式表示,这也可以理解为是,服务器1000通过发送TCP报文发送第三确认指示,例如,参照图3,该TCP报文可以是报文B3,在报文B3中:ack=M+1。
步骤S8150,服务器1000完成所有数据的发送后,向终端设备2000发送第二断开连接指示。
该第二断开连接指示可以通过TCP报文的形式表示,例如,参照图4,该TCP报文可以是报文B4,在报文B4中:序号seq=N,FIN=1,ack=M+1,服务器1000也请求单方向断开连接,FIN=1表示结束标志被置位,代表第二断开连接指示,此时,由于在终端设备2000单方向断开连接后,就不会再发送新的数据,因此,报文B4的确认序号ack仍然为M+1。
步骤S8250,终端设备2000接收到服务器1000发送的第二断开连接指示后,向服务器1000发送第四确认指示,以告知服务器1000其已成功接收到第二断开连接指示。
参照图3,终端设备2000在成功接收到报文B4后,发出报文A5:ack=N+1,至此,服务器1000与终端设备2000之间完全断开连接,结束一次会话。
在以上步骤S8240、S8140、S8150和S8250为TCP的四次挥手断开连接的步骤,以上步骤中传输的报文均未携带数据,不属于数据报文,因此,作为报文发送端的通信装置1400或者通信装置2400,均不会模拟对方生成对于报文中数据的确认报文,且报文A4、报文B4具有设定控制标志位的置位指示(FIN=1),作为报文发送端的通信装置1400或者通信装置2400会将报文A4、报文B4送入重传队列,如果设定时间内未接收到对方返回的确认报文,将对报文A4、报文B4进行重传,以保证双方之间的可靠断开。
<装置实施例>
在本实施例中,还提供一种基于面向连接协议的通信装置8000,以上通信装置8000A和通信装置8000B可以采用通信装置8000的结构,其还可以是如图1所示的通信装置1400,也可以是如图1所示的通信装置2400。
参照图9,该通信装置8000可以包括一个或者多个存储器8100,以及一个或者多个处理器8200,该存储器8100用于存储可执行的指令;该处理器8200用于在指令的控制下执行根据本发明任意实施例的数据传输方法。
该通信装置8000还用于执行基于面向连接协议的通信方法,通信装置8000可以通过相同的处理器执行该通信方法和数据传输方法,也可以通过不同的处理器分别执行该通信方法和数据传输方法,在此不做限定。
在另一实施例中,如图10所示,还提供一种基于面向连接协议的通信装置8000,该通信装置8000至少可以包括:报文获取模块8010、确认报文模拟模块8020和报文处理模块8030。
该报文获取模块8010用于获取发送至基于面向连接协议的另一通信装置的外发报文。
该确认报文模拟模块8020用于模拟另一通信装置生成对于外发报文中数据的确认报文。
该报文处理模块8030用于根据所述确认报文,将所述外发报文从重传队列中移除。
在一个实施例中,该通信装置8000还可以包括报文识别模块(图中未示出),该报文识别模块用于识别报文获取模块8010获取的外发报文是否为具有数据的数据报文,并在该外发报文是数据报文的情况下,再通知确认报文模拟模块8020执行模拟另一通信装置生成对于外发报文中数据的确认报文的操作。
在一个实施例中,该报文识别模块还用于获取外发报文的数据长度信息;根据数据长度信息,识别外发报文是否为数据报文。
在一个实施例中,该确认报文模拟模块8020还用于获取外发报文中数据的起始序号和外发报文中数据的数据长度信息;根据起始序号和数据长度信息,模拟另一通信装置生成对于外发报文中数据的确认报文。
在一个实施例中,该确认报文模拟模块8020还用于将外发报文置入预设等待队列中;检测当前时间与最先进入等待队列中的外发报文的发送时间的差值是否达到设定时间值;并在达到设定时间值的情况下,再模拟另一通信装置生成对于等待队列中所有数据的确认报文。该设定时间小于设定的超时重传时间。
在一个实施例中,该确认报文模拟模块8020还用于在外发报文是数据报文的情况下,查找序号先于外发报文中数据的设定控制标志位的置位指示;检测是否接收到另一通信装置返回的对于置位指示的确认报文;在接收到对于置位指示的确认报文的情况下,再模拟另一通信装置生成对于外发报文中数据的确认报文。
在一个实施例中,该通信装置8000还可以包括数据去除模块(图中未示出)。
该数据去除模块用于在外发报文还是控制报文的情况下,去除外发报文中的数据,得到的裁剪后的报文;将裁剪后的报文送入重传队列中。
控制报文为对设定控制标志位进行置位指示的报文。
在一个实施例中,面向连接协议为TCP协议。
在一个实施例中,该通信装置8000还可以包括报文丢弃模块(图中未示出)。
该报文丢弃模块用于接收另一通信装置发送的对方报文;识别对方报文是否为对数据进行确认的真实确认报文;以及,在对方报文是真实确认报文的情况下,丢弃对方报文中对应真实确认报文的内容。
在一个实施例中,该报文丢弃模块还用于设置对方报文中的确认标志位无效;或者,清空对方报文中的确认序号字段的内容。
<电子设备实施例>
在本实施例中,还提供一种电子设备9000,其可以是如图1所示的服务器1000,也可以是如图1所示的终端设备2000。
参照图11所示,电子设备9000可以包括根据本发明任意实施例的基于面向连接协议的通信装置8000,用于实施本发明任意实施例的数据传输方法。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。
Claims (15)
1.一种数据传输方法,由基于面向连接协议的一通信装置实施,所述方法包括:
获取发送至基于面向连接协议的另一通信装置的外发报文;
模拟所述另一通信装置生成对于所述外发报文中数据的确认报文;
根据所述确认报文,将所述外发报文从重传队列中移除。
2.根据权利要求1所述的方法,其中,所述方法还包括:
识别所述外发报文是否为具有数据的数据报文;
在所述外发报文是数据报文的情况下,再执行所述模拟所述另一通信装置生成对于所述外发报文中数据的确认报文的步骤。
3.根据权利要求2所述的方法,其中,所述识别所述外发报文是否为具有数据的数据报文的步骤,包括:
获取所述外发报文的数据长度信息;
根据所述数据长度信息,识别所述外发报文是否为所述数据报文。
4.根据权利要求1所述的方法,其中,所述模拟所述另一通信装置生成对于所述外发报文中数据的确认报文的步骤,包括:
获取所述外发报文中数据的起始序号和所述外发报文中数据的数据长度信息;
根据所述起始序号和所述数据长度信息,模拟所述另一通信装置生成对于所述外发报文中数据的确认报文。
5.根据权利要求1所述的方法,其中,所述模拟所述另一通信装置生成对于所述外发报文中数据的确认报文的步骤,包括:
将所述外发报文置入预设等待队列中;
检测当前时间与最先进入所述等待队列中的外发报文的发送时间的差值是否达到设定时间值,其中,所述设定时间值小于设定的超时重传时间值;
若是,模拟所述另一通信装置生成对于所述等待队列中所有数据的确认报文,并清空所述等待队列。
6.根据权利要求1所述的方法,其中,所述方法还包括:
查找序号先于所述外发报文中数据的设定控制标志位的置位指示;
检测是否接收到所述另一通信装置返回的对于所述置位指示的确认报文;
在接收到所述对于所述置位指示的确认报文的情况下,再执行所述模拟所述另一通信装置生成对于所述外发报文中数据的确认报文的步骤。
7.根据权利要求1所述的方法,其中,所述方法还包括:
在所述外发报文还是控制报文的情况下,去除所述外发报文中的数据,得到的裁剪后的报文,其中,所述控制报文为对设定控制标志位进行置位指示的报文;
将所述裁剪后的报文送入所述重传队列中。
8.根据权利要求1所述的方法,其中,所述面向连接协议为TCP协议。
9.根据权利要求1至8中任一项所述的方法,其中,所述方法还包括:
接收所述另一通信装置发送的对方报文;
识别所述对方报文是否为对所述数据进行确认的真实确认报文;
在所述对方报文是所述真实确认报文的情况下,丢弃所述对方报文中对应所述真实确认报文的内容。
10.根据权利要求9所述的方法,其中,所述丢弃所述对方报文中对应所述真实确认报文的内容,包括:
设置所述对方报文中的确认标志位无效;或者,
清空所述对方报文中的确认序号字段的内容。
11.一种基于面向连接协议的通信装置,包括存储器和处理器,所述存储器用于存储可执行的指令;所述处理器用于在所述指令的控制下执行根据权利要求1-10中任一项所述的数据传输方法。
12.一种基于面向连接协议的通信装置,包括:
报文获取模块,用于获取发送至基于面向连接协议的另一通信装置的外发报文;
确认报文模拟模块,用于模拟所述另一通信装置生成对于所述外发报文中数据的确认报文;以及,
报文处理模块,用于根据所述确认报文,将所述外发报文从重传队列中移除。
13.一种电子设备,包括权利要求11或12所述的通信装置。
14.一种通信系统,包括服务器和终端设备,所述服务器包括一权利要求11或12所述的通信装置,所述终端设备包括另一权利要求11或12所述的通信装置。
15.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器执行时实现如权利要求1至10中任一项所述的数据传输方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811642199.2A CN111385068B (zh) | 2018-12-29 | 2018-12-29 | 数据传输方法、装置、电子设备及通信系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811642199.2A CN111385068B (zh) | 2018-12-29 | 2018-12-29 | 数据传输方法、装置、电子设备及通信系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111385068A true CN111385068A (zh) | 2020-07-07 |
CN111385068B CN111385068B (zh) | 2023-09-22 |
Family
ID=71218352
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811642199.2A Active CN111385068B (zh) | 2018-12-29 | 2018-12-29 | 数据传输方法、装置、电子设备及通信系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111385068B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112491871A (zh) * | 2020-11-25 | 2021-03-12 | 北京宝兰德软件股份有限公司 | 一种tcp重组方法、装置、电子设备及存储介质 |
CN113791901A (zh) * | 2021-08-31 | 2021-12-14 | 上海弘积信息科技有限公司 | 一种高效的负载均衡设备tcp重传实现方法 |
CN114448916A (zh) * | 2021-12-24 | 2022-05-06 | 锐捷网络股份有限公司 | Tipc报文处理方法、装置、设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170117999A1 (en) * | 2015-10-22 | 2017-04-27 | Harris Corporation | Communications device serving as transmission control protocol (tcp) proxy |
CN107733903A (zh) * | 2017-10-18 | 2018-02-23 | 中国联合网络通信集团有限公司 | 一种基于udp的数据传输确认方法和基站 |
US20180332009A1 (en) * | 2017-05-15 | 2018-11-15 | Medtronic, Inc. | Multimodal Cryptographic Data Communications in a Remote Patient Monitoring Environment |
-
2018
- 2018-12-29 CN CN201811642199.2A patent/CN111385068B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170117999A1 (en) * | 2015-10-22 | 2017-04-27 | Harris Corporation | Communications device serving as transmission control protocol (tcp) proxy |
US20180332009A1 (en) * | 2017-05-15 | 2018-11-15 | Medtronic, Inc. | Multimodal Cryptographic Data Communications in a Remote Patient Monitoring Environment |
CN107733903A (zh) * | 2017-10-18 | 2018-02-23 | 中国联合网络通信集团有限公司 | 一种基于udp的数据传输确认方法和基站 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112491871A (zh) * | 2020-11-25 | 2021-03-12 | 北京宝兰德软件股份有限公司 | 一种tcp重组方法、装置、电子设备及存储介质 |
CN112491871B (zh) * | 2020-11-25 | 2023-07-28 | 北京宝兰德软件股份有限公司 | 一种tcp重组方法、装置、电子设备及存储介质 |
CN113791901A (zh) * | 2021-08-31 | 2021-12-14 | 上海弘积信息科技有限公司 | 一种高效的负载均衡设备tcp重传实现方法 |
CN113791901B (zh) * | 2021-08-31 | 2023-12-26 | 上海弘积信息科技有限公司 | 一种高效的负载均衡设备tcp重传实现方法 |
CN114448916A (zh) * | 2021-12-24 | 2022-05-06 | 锐捷网络股份有限公司 | Tipc报文处理方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111385068B (zh) | 2023-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109922144B (zh) | 用于处理数据的方法和装置 | |
US20140258465A1 (en) | Identification of originating ip address and client port connection to a web server via a proxy server | |
US20160261722A1 (en) | Robust Multipath TCP Stateless Connection Establishment | |
CN111385068B (zh) | 数据传输方法、装置、电子设备及通信系统 | |
EP3544261A1 (en) | Data transmission method and device | |
CN111224999A (zh) | 一种传输协议切换方法、装置、设备及存储介质 | |
CN101436978A (zh) | 使用udp协议进行可靠数据传输的方法 | |
EP2745467A1 (en) | Method for flow control and for reliable communication in a collaborative environment | |
CN112787945B (zh) | 数据传输方法、装置、计算机可读介质及电子设备 | |
CN110581812A (zh) | 一种数据报文的处理方法和装置 | |
WO2023093879A1 (zh) | 数据传输方法、装置、设备和介质 | |
WO2011015020A1 (zh) | 文件传输方法、系统及客户端 | |
CN113328877B (zh) | 一种端口协议的确定方法和装置 | |
WO2019001352A1 (zh) | 数据传输的方法、装置和系统 | |
CN107431965B (zh) | 一种实现传输控制协议tcp传输的方法及装置 | |
CN105791239A (zh) | 一种tcp中间人处理方法 | |
JP2004254039A (ja) | メール通信中継システム、メール通信中継装置、メール通信中継方法及びメール通信中継用プログラム | |
WO2015048999A1 (en) | Method and proxy node for source to destination packet transfer | |
CN114500243B (zh) | 数据通信方法、装置、计算机可读介质及电子设备 | |
CN106576085B (zh) | 发射控制协议(tcp)确认(ack)包抑制 | |
WO2017067224A1 (zh) | 一种报文处理方法及装置 | |
CN111225423B (zh) | 一种数据前转的方法和设备 | |
JP2004187099A (ja) | 通信制御方法、通信システム及び通信装置 | |
CN106385409B (zh) | 一种tcp报文的处理方法及装置 | |
CN106209666A (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 |