CN115622944A - 基于多并行度下数据流的tcp拼包方法和系统 - Google Patents

基于多并行度下数据流的tcp拼包方法和系统 Download PDF

Info

Publication number
CN115622944A
CN115622944A CN202211226896.6A CN202211226896A CN115622944A CN 115622944 A CN115622944 A CN 115622944A CN 202211226896 A CN202211226896 A CN 202211226896A CN 115622944 A CN115622944 A CN 115622944A
Authority
CN
China
Prior art keywords
data
tcp
seq
mss
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.)
Pending
Application number
CN202211226896.6A
Other languages
English (en)
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.)
Eccom Network System Co ltd
Original Assignee
Eccom Network System 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 Eccom Network System Co ltd filed Critical Eccom Network System Co ltd
Priority to CN202211226896.6A priority Critical patent/CN115622944A/zh
Publication of CN115622944A publication Critical patent/CN115622944A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • H04L47/193Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
    • 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

Abstract

本发明提供了一种基于多并行度下数据流的TCP拼包方法和系统,包括:步骤S1:对于接入的交易数据流,将预设无意义范围内的数据包和非TCP协议数据包进行过滤;步骤S2:采用并行的运算处理方式,将需要拼包的数据分配至同一个分区内;步骤S3:对每个分区内的数据,根据TCP的SEQ号进行排序并去重;步骤S4:对去重排序后的数据,判断当前是否有连续的SEQ序号的不同TCP报文,若存在则判断这些数据包是否符合都是满帧+非满帧的逻辑,当条件都符合时进行拼包,根据SEQ号将连续的数据包内容拼成一个完整的TCP内容。本发明通过满帧非满帧的拼包逻辑以解决数据在网络链路传输中由于MSS限制导致的数据分片问题。

Description

基于多并行度下数据流的TCP拼包方法和系统
技术领域
本发明涉及通信技术领域,具体地,涉及一种基于多并行度下数据流的TCP拼包方法和系统。
背景技术
随着证券市场散户的机构化,聚集大量客户的机构交易逐渐转入高频化,机构的量化高频交易成为机构交易的重点关注对象,高频交易过程中,每日产生的交易行情数据也不断增加,为了保证数据的完整性,整个交易过程在整个网络传输过程中的应用层封装协议使用的是TCP协议。
TCP协议是采用“带重传的肯定确认”的机制,且实现了面向连接的、点对点的、有序的、可靠的、自带滑动窗口和拥塞控制的字节流传输协议。这既保证了数据的完整性,但也带来了一定的问题。
目前网络的通信消息主要分为两类消息,一类是Large Messages,还有一类消息是Small Messages。整个高频交易过程中产生的大量数据大多是连续发送的LargeMessages。而交易链路中传输涉及的网络设备基本都有MTU限制,因此在网络设备间建立交易的TCP长连接时往往双方已经协商好了MSS值,使得TCP报文段的分段与重组是在传输层完成的,并不在网络层进行分片。MSS(Maximum Segment Size,最大报文长度)指的是TCP数据包每次能够传输的最大数据分段,TCP报文段的长度大于MSS时,要进行分段传输。MSS的值一般为MTU值减去两个首部大小(需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes),所以如果用链路层以太网,MSS的值往往为1460。TCP报文段的分段与重组是在运输层完成的。
例如:TCP在建立连接时进行三次握手,前两个握手包中双方互相声明自己的MSS,客户端声明MSS=8960,服务器端声明了MSS=1460。三次握手之后,客户端的MTU值比服务器端大,如果发送一个9000字节的包过去可能被分片或丢弃。因此客户端会把自己的MSS也降到1460字节。
在高频量化交易场景下,传输的数据量较大,如果采用传统的串行拼包,虽然可以保证数据的完整性,但是处理速度较慢、效率较低并不符合实际应用场景。综上所述,如何快速地将TCP分片数据拼成完整的数据包并准确获取其中的信息也成为了一个重要问题。
专利文献CN105045763A(申请号:CN201510411844.X)公开了一种基于FPGA+多核DSP的PD雷达信号处理系统,它包括FPGA核心芯片及其外围最小系统电路、DSP芯片及其外围最小系统电路、千兆网络接口芯片、电源芯片和电平转换芯片;FPGA核心芯片接收数据采集芯片采集到的雷达直波和回波信号,下变频处理后存在内存中,接收数据之后通过FPGA核心芯片与DSP芯片之间的SRIO接口将数据传输到DSP芯片中的DDR3,然后DSP芯片进行脉冲压缩、相参积累和恒虚警率检测,得到目标点的信息,最后通过网口将目标信息上传到上位机;其并行实现方法,有六大步骤。
针对现有的TCP协议,在常见的应用场景下常使用Small Messages的网络的通信消息,大多数据长度小于或等于MTU。但是高频量化的交易场景下,常使用Large Messages的网络的通信消息,并且数据量级也较大,经常会出现TCP分片需要拼包的情况。
对于TCP协议,分片往往都是由于MSS限制导致的,且数据以满帧数据包居多,因此根据SEQ号的连续性以及计算规则,可以通过判断连续SEQ号的满帧+非满帧格式进行TCP拼包。传统采用串行拼包处理效率较低,如果采用并行处理方式,则可以快速的完成TCP拼包,满足高频交易业务需求。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于多并行度下数据流的TCP拼包方法和系统。
根据本发明提供的基于多并行度下数据流的TCP拼包方法,包括:
步骤S1:对于接入的交易数据流,将预设无意义范围内的数据包和非TCP协议数据包进行过滤,将过滤后数据传入预设拼包模块,并每间隔预设时间形成一个数据列表LIST;
步骤S2:采用并行的运算处理方式,将需要拼包的数据分配至同一个分区内;
步骤S3:对每个分区内的数据,根据TCP的SEQ号进行排序并去重;
步骤S4:对去重排序后的数据,判断当前是否有连续的SEQ序号的不同TCP报文,若存在则判断这些数据包是否符合都是满帧+非满帧的逻辑,当条件都符合时进行拼包,根据SEQ号将连续的数据包内容拼成一个完整的TCP内容。
优选的,TCP的连接建立要进行三次握手,需要通过发送SEQ和ACK号校验,其中SEQ和ACK号存在于TCP报文段的首部中,SEQ是序号,ACK是确认号,大小均为4字节;
在建立连接后,通信双方仍校验SEQ和ACK号,当数据接收端收到TCP报文后,将这次报文中的SEQ取出来,和最后一次发送的ACK对比,如果一致,则代表数据没有丢失,如果不一致则说明有丢包发生;网络链路在没有发生丢包现象时,TCP连接内每条TCP报文的SEQ号等于上一条TCP报文的SEQ+上条报文的数据长度;
在AB之间建立TCP连接,当从A向B发送一条长数据时,由于MSS限制被分成了4个TCP发送,此时第一条TCP的SEQ号为X,第二条TCP的SEQ号为X+MSS,第三条TCP的SEQ号为X+MSS+MSS,由此类推第四条TCP的SEQ号为X+MSS+MSS+MSS,并且此时如果A继续向B发送数据,第五条TCP的SEQ号为X+MSS+MSS+MSS+Y,其中Y为第四条TCP的数据长度,针对这种使用满帧+非满帧的拆包逻辑使用除MSS长度求余,余数相同的数据进入同一个分区。
优选的,根据每条数据报文内部携带的长度字段或者对指定的拥有特殊协议格式的数据,根据指定的数据报文格式,找到其中的关键字段,将这个完整的TCP消息切分为有实际意义的各个消息。
优选的,针对有连续的SEQ序号的不同TCP报文,但是不符合满帧+非满帧的逻辑的数据,将这些数据存入缓存,当下一次新数据到来时使用缓存中每组连续SEQ序号数据的最后一条的SEQ号去寻找SEQ号比它大MSS的数据,然后再次校验是否符合满帧+非满帧的逻辑,如此循环往复,直到数据成功拼包或者一直未等到数据但是达到了预设缓存时间后被清空。
优选的,针对没有连续的SEQ序号的单独TCP报文,若报文的帧长小于MSS,则判定不需要进行拼包操作,直接根据字段进行切包;若报文的帧长等于MSS,则同样需要存入缓存,与后来的数据进行再判断。
根据本发明提供的基于多并行度下数据流的TCP拼包系统,包括:
模块M1:对于接入的交易数据流,将预设无意义范围内的数据包和非TCP协议数据包进行过滤,将过滤后数据传入预设拼包模块,并每间隔预设时间形成一个数据列表LIST;
模块M2:采用并行的运算处理方式,将需要拼包的数据分配至同一个分区内;
模块M3:对每个分区内的数据,根据TCP的SEQ号进行排序并去重;
模块M4:对去重排序后的数据,判断当前是否有连续的SEQ序号的不同TCP报文,若存在则判断这些数据包是否符合都是满帧+非满帧的逻辑,当条件都符合时进行拼包,根据SEQ号将连续的数据包内容拼成一个完整的TCP内容。
优选的,TCP的连接建立要进行三次握手,需要通过发送SEQ和ACK号校验,其中SEQ和ACK号存在于TCP报文段的首部中,SEQ是序号,ACK是确认号,大小均为4字节;
在建立连接后,通信双方仍校验SEQ和ACK号,当数据接收端收到TCP报文后,将这次报文中的SEQ取出来,和最后一次发送的ACK对比,如果一致,则代表数据没有丢失,如果不一致则说明有丢包发生;网络链路在没有发生丢包现象时,TCP连接内每条TCP报文的SEQ号等于上一条TCP报文的SEQ+上条报文的数据长度;
若在AB之间建立TCP连接,当从A向B发送一条长数据时,由于MSS限制被分成了4个TCP发送,此时第一条TCP的SEQ号为X,第二条TCP的SEQ号为X+MSS,第三条TCP的SEQ号为X+MSS+MSS,由此类推第四条TCP的SEQ号为X+MSS+MSS+MSS,并且此时如果A继续向B发送数据,第五条TCP的SEQ号为X+MSS+MSS+MSS+Y,其中Y为第四条TCP的数据长度,针对这种使用满帧+非满帧的拆包逻辑使用除MSS长度求余,余数相同的数据进入同一个分区。
优选的,根据每条数据报文内部携带的长度字段或者对指定的拥有特殊协议格式的数据,根据指定的数据报文格式,找到其中的关键字段,将这个完整的TCP消息切分为有实际意义的各个消息。
优选的,针对有连续的SEQ序号的不同TCP报文,但是不符合满帧+非满帧的逻辑的数据,将这些数据存入缓存,当下一次新数据到来时使用缓存中每组连续SEQ序号数据的最后一条的SEQ号去寻找SEQ号比它大MSS的数据,然后再次校验是否符合满帧+非满帧的逻辑,如此循环往复,直到数据成功拼包或者一直未等到数据但是达到了预设缓存时间后被清空。
优选的,针对没有连续的SEQ序号的单独TCP报文,若报文的帧长小于MSS,则判定不需要进行拼包操作,直接根据字段进行切包;若报文的帧长等于MSS,则同样需要存入缓存,与后来的数据进行再判断。
与现有技术相比,本发明具有如下的有益效果:
1)本发明通过在大量数据流入时采用LIST方式来将数据流划分为更小的单元集进行处理,以达到完整接入处理数据的效果;
2)本发明采用多并行算法处理数据以达到能够在大流量数据中快速处理数据的能力;
3)本发明通过满帧非满帧的拼包逻辑以解决数据在网络链路传输中由于MSS限制导致的数据分片问题;
4)本发明通过在拼包前的排序去重,以及将分片的TCP数据报文拼包后再切包的处理,解决了由于大量数据造成的数据包乱序以及网络拥塞时导致的TCP粘包问题。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为数据流的分区结构示意图;
图2为排序流程示意图;
图3为拼包的流程示意图;
图4为拼包的流程示意图;
图5为本发明TCP拼包方法流程图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
实施例:
本发明通过将流式数据进行并行处理的方式,对TCP协议实现解封装,并将属于同一次发送的数据进行TCP拼包处理,以达到快速准确处理数据的目的,如图5,具体流程为:
步骤S1,数据预处理:对于接入的交易数据流,首先将无意义的数据包和非TCP协议数据包进行过滤,将过滤后数据传入拼包模块,并每间隔固定时间形成一个数据列表LIST,以便于并针对这固定时间内的所有数据再进行其他处理。
步骤S2,多并行分区:由于数据量级较大,为了快速处理数据采用并行的运算处理方式,需要通过算法使得需要拼包的数据进入到同一个分区内。
TCP的连接建立首先要进行三次握手,是需要通过发送SEQ和ACK号校验的,其中SEQ和ACK号存在于TCP报文段的首部中,SEQ是序号,ACK是确认号,大小均为4字节。
在建立连接后,通信双方仍然会去校验SEQ和ACK号。当数据接收端收到TCP报文后,将这次报文中的SEQ取出来,和最后一次发送的ACK对比,如果一致,则代表数据没有丢失,如果不一致就说明有丢包发生。假设网络链路在没有发生丢包现象时,那么TCP连接内每条TCP报文的SEQ号一定等于上一条TCP报文的SEQ+上条报文的数据长度。针对LargeMessages,链路MSS限制导致的TCP分片的场景,需要拼包的数据报文的SEQ号在除MSS长度求余后的数据都是一致的。
即假设AB之间建立了TCP连接后,当从A向B发送一条长数据时,由于MSS限制被分成了4个TCP发送,此时第一条TCP的SEQ号为X,第二条TCP的SEQ号为X+MSS,第三条TCP的SEQ号为X+MSS+MSS,由此类推第四条TCP的SEQ号为X+MSS+MSS+MSS。并且此时如果A继续向B发送数据,第五TCP的SEQ号为X+MSS+MSS+MSS+Y,其中Y为第四条TCP的数据长度。针对这种使用满帧+非满帧的拆包逻辑可以使用除MSS长度求余,余数相同的数据进入同一个分区。
步骤S3,排序去重:由于每次进入分区的数据是根据上述算法随机进入的不同分区,仅能保证需要拼包的TCP能够进入同一个分区,并没有把链路重传导致的重复数据以及大量数据快速流入在分区处理时可能导致的乱序问题去除。所以当数据均匀分散到各个分区后,针对每个分区内的数据首先要根据TCP的SEQ号进行排序并去重的操作。并且由于数据在进入分区前是将数据流分为多个LIST操作,所有对于分区内的每次排序其实是针对少量有限数据的操作。
步骤S4,TCP拼包与切包:针对去重排序后的数据,第一步进行判断当前是否有连续的SEQ序号的不同TCP报文,如果存在则进行第二步判断这些数据包是否符合都是满帧+非满帧的逻辑。
当这些条件都符合时进行拼包,根据SEQ号将连续的数据包内容拼成一个完整的TCP内容。由于TCP存在不同类型数据随机沾包现象,所以要根据每条数据报文内部携带的长度字段或者这对指定的拥有特殊协议格式的数据,根据指定的数据报文格式,找到其中的关键字段将这个完整的TCP消息切分为有实际意义的各个消息。
针对有连续的SEQ序号的不同TCP报文,但是不符合满帧+非满帧的逻辑的数据,那么需要将这些数据存入缓存,当下一次新数据到来时使用缓存中每组连续SEQ序号数据的最后一条的SEQ号去寻找SEQ号为比它大MSS的数据,然后再次校验是否符合满帧+非满帧的逻辑,如此循环往复,直到数据成功拼包或者一直未等到数据但是达到了缓存时间后被清空。
针对没有连续的SEQ序号的单独TCP报文。如果这条报文的帧长小于MSS,则认为不需要进行拼包操作,直接根据字段进行切包。如果这条报文的帧长等于MSS,则同样需要存入缓存,与后来的数据进行再判断。
利用本发明对一段时间的交易数据的处理,其中的具体流程可通过图1-图4的各个流程实现。由于本发明的应用场景时大数据量的流式数据,所以推荐使用流式处理的语言进行编程,具体的流程如下:
针对流入的数据首先进行数据筛选,只将TCP数据流入本系统。并且每间隔500毫秒形成一个LIST,如图1,针对图中的第二个LIST即为SEQ编号从1480到SEQ6769。
本次链路MTU为1500,MSS双方商定为1460(减去20Byte的IPv4头部,20Byte的TCP头部),针对这几条数据首先同时用他们的SEQ号分别除1460;即可发现SEQ序号为1480,4400,2940的数据包一定在同一分区内,其他数据则随机均匀进入不同分区。
随后对于所有分区数据根据SEQ序号升序排列,其中A分区中对于SEQ序号为1480,4400,2940的数据包,判断是否为两个1460长度的数据包与一个小于1460长度的数据包,发现满足要求后则直接进行拼包操作。对于分区B发现存在一个满帧数据包无法拼包,将这个满帧数据包存入缓存中等待下一次插入新数据后去寻找到了SEQ序号为6518的数据包进行拼包。对于分区C,D则不存在需要拼包的数据。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

Claims (10)

1.一种基于多并行度下数据流的TCP拼包方法,其特征在于,包括:
步骤S1:对于接入的交易数据流,将预设无意义范围内的数据包和非TCP协议数据包进行过滤,将过滤后数据传入预设拼包模块,并每间隔预设时间形成一个数据列表LIST;
步骤S2:采用并行的运算处理方式,将需要拼包的数据分配至同一个分区内;
步骤S3:对每个分区内的数据,根据TCP的SEQ号进行排序并去重;
步骤S4:对去重排序后的数据,判断当前是否有连续的SEQ序号的不同TCP报文,若存在则判断这些数据包是否符合都是满帧+非满帧的逻辑,当条件都符合时进行拼包,根据SEQ号将连续的数据包内容拼成一个完整的TCP内容。
2.根据权利要求1所述的基于多并行度下数据流的TCP拼包方法,其特征在于,TCP的连接建立要进行三次握手,需要通过发送SEQ和ACK号校验,其中SEQ和ACK号存在于TCP报文段的首部中,SEQ是序号,ACK是确认号,大小均为4字节;
在建立连接后,通信双方仍校验SEQ和ACK号,当数据接收端收到TCP报文后,将这次报文中的SEQ取出来,和最后一次发送的ACK对比,如果一致,则代表数据没有丢失,如果不一致则说明有丢包发生;网络链路在没有发生丢包现象时,TCP连接内每条TCP报文的SEQ号等于上一条TCP报文的SEQ+上条报文的数据长度;
在AB之间建立TCP连接,当从A向B发送一条长数据时,由于MSS限制被分成了4个TCP发送,此时第一条TCP的SEQ号为X,第二条TCP的SEQ号为X+MSS,第三条TCP的SEQ号为X+MSS+MSS,由此类推第四条TCP的SEQ号为X+MSS+MSS+MSS,并且此时如果A继续向B发送数据,第五条TCP的SEQ号为X+MSS+MSS+MSS+Y,其中Y为第四条TCP的数据长度,针对这种使用满帧+非满帧的拆包逻辑使用除MSS长度求余,余数相同的数据进入同一个分区。
3.根据权利要求1所述的基于多并行度下数据流的TCP拼包方法,其特征在于,根据每条数据报文内部携带的长度字段或者对指定的拥有特殊协议格式的数据,根据指定的数据报文格式,找到其中的关键字段,将这个完整的TCP消息切分为有实际意义的各个消息。
4.根据权利要求2所述的基于多并行度下数据流的TCP拼包方法,其特征在于,针对有连续的SEQ序号的不同TCP报文,但是不符合满帧+非满帧的逻辑的数据,将这些数据存入缓存,当下一次新数据到来时使用缓存中每组连续SEQ序号数据的最后一条的SEQ号去寻找SEQ号比它大MSS的数据,然后再次校验是否符合满帧+非满帧的逻辑,如此循环往复,直到数据成功拼包或者一直未等到数据但是达到了预设缓存时间后被清空。
5.根据权利要求4所述的基于多并行度下数据流的TCP拼包方法,其特征在于,针对没有连续的SEQ序号的单独TCP报文,若报文的帧长小于MSS,则判定不需要进行拼包操作,直接根据字段进行切包;若报文的帧长等于MSS,则同样需要存入缓存,与后来的数据进行再判断。
6.一种基于多并行度下数据流的TCP拼包系统,其特征在于,包括:
模块M1:对于接入的交易数据流,将预设无意义范围内的数据包和非TCP协议数据包进行过滤,将过滤后数据传入预设拼包模块,并每间隔预设时间形成一个数据列表LIST;
模块M2:采用并行的运算处理方式,将需要拼包的数据分配至同一个分区内;
模块M3:对每个分区内的数据,根据TCP的SEQ号进行排序并去重;
模块M4:对去重排序后的数据,判断当前是否有连续的SEQ序号的不同TCP报文,若存在则判断这些数据包是否符合都是满帧+非满帧的逻辑,当条件都符合时进行拼包,根据SEQ号将连续的数据包内容拼成一个完整的TCP内容。
7.根据权利要求6所述的基于多并行度下数据流的TCP拼包系统,其特征在于,TCP的连接建立要进行三次握手,需要通过发送SEQ和ACK号校验,其中SEQ和ACK号存在于TCP报文段的首部中,SEQ是序号,ACK是确认号,大小均为4字节;
在建立连接后,通信双方仍校验SEQ和ACK号,当数据接收端收到TCP报文后,将这次报文中的SEQ取出来,和最后一次发送的ACK对比,如果一致,则代表数据没有丢失,如果不一致则说明有丢包发生;网络链路在没有发生丢包现象时,TCP连接内每条TCP报文的SEQ号等于上一条TCP报文的SEQ+上条报文的数据长度;
若在AB之间建立TCP连接,当从A向B发送一条长数据时,由于MSS限制被分成了4个TCP发送,此时第一条TCP的SEQ号为X,第二条TCP的SEQ号为X+MSS,第三条TCP的SEQ号为X+MSS+MSS,由此类推第四条TCP的SEQ号为X+MSS+MSS+MSS,并且此时如果A继续向B发送数据,第五条TCP的SEQ号为X+MSS+MSS+MSS+Y,其中Y为第四条TCP的数据长度,针对这种使用满帧+非满帧的拆包逻辑使用除MSS长度求余,余数相同的数据进入同一个分区。
8.根据权利要求6所述的基于多并行度下数据流的TCP拼包系统,其特征在于,根据每条数据报文内部携带的长度字段或者对指定的拥有特殊协议格式的数据,根据指定的数据报文格式,找到其中的关键字段,将这个完整的TCP消息切分为有实际意义的各个消息。
9.根据权利要求7所述的基于多并行度下数据流的TCP拼包系统,其特征在于,针对有连续的SEQ序号的不同TCP报文,但是不符合满帧+非满帧的逻辑的数据,将这些数据存入缓存,当下一次新数据到来时使用缓存中每组连续SEQ序号数据的最后一条的SEQ号去寻找SEQ号比它大MSS的数据,然后再次校验是否符合满帧+非满帧的逻辑,如此循环往复,直到数据成功拼包或者一直未等到数据但是达到了预设缓存时间后被清空。
10.根据权利要求9所述的基于多并行度下数据流的TCP拼包系统,其特征在于,针对没有连续的SEQ序号的单独TCP报文,若报文的帧长小于MSS,则判定不需要进行拼包操作,直接根据字段进行切包;若报文的帧长等于MSS,则同样需要存入缓存,与后来的数据进行再判断。
CN202211226896.6A 2022-10-09 2022-10-09 基于多并行度下数据流的tcp拼包方法和系统 Pending CN115622944A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211226896.6A CN115622944A (zh) 2022-10-09 2022-10-09 基于多并行度下数据流的tcp拼包方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211226896.6A CN115622944A (zh) 2022-10-09 2022-10-09 基于多并行度下数据流的tcp拼包方法和系统

Publications (1)

Publication Number Publication Date
CN115622944A true CN115622944A (zh) 2023-01-17

Family

ID=84861344

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211226896.6A Pending CN115622944A (zh) 2022-10-09 2022-10-09 基于多并行度下数据流的tcp拼包方法和系统

Country Status (1)

Country Link
CN (1) CN115622944A (zh)

Similar Documents

Publication Publication Date Title
US20220394316A1 (en) Message sending method and device, readable medium and electronic device
US8311059B2 (en) Receive coalescing and automatic acknowledge in network interface controller
US10645145B2 (en) Method and apparatus for accelerating data transmission in a network communication system
EP2119171B1 (en) Improved data transfer method, system and protocol
US6438108B1 (en) System for improved transmission of acknowledgements within a packet data network
CN111769998B (zh) 一种网络时延状态的探测方法及装置
CN106612284B (zh) 一种流数据的传输方法和装置
US7953093B2 (en) TCP/IP reordering
CN109547162B (zh) 基于两套单向边界的数据通信方法
CN108924205B (zh) 数据传输方法、装置、电子设备、网闸适配器
CN117176486A (zh) 网络信息传输系统
CN114978433B (zh) 数据传输方法、装置、设备、存储介质及计算机程序产品
CN107508828B (zh) 一种超远程数据交互系统及方法
CN111522663B (zh) 一种基于分布式存储系统的数据传输方法、装置和系统
CN101908978A (zh) 一种实现大数据传输的方法和系统
CN104753813B (zh) Dma传送报文的方法
CN104580171B (zh) Tcp协议的传输方法、装置和系统
CN115622944A (zh) 基于多并行度下数据流的tcp拼包方法和系统
CN117082054A (zh) 一种数据传输方法、装置、系统和介质
CN115604052B (zh) 车辆通讯交互方法、系统及电子设备
CN115442000A (zh) 一种适用于低带宽、易损耗自组网络下的传输保障方法
WO2020087250A1 (zh) 一种数据发送方法、装置及FlexE交换系统
CN114338477B (zh) 一种通信链路监控方法、装置、设备及存储介质
CN111526137B (zh) 兼容服务器和客户端模式的网络加速器及数据处理方法
CN109714135B (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