CN113364790B - 数据传输方法及装置 - Google Patents

数据传输方法及装置 Download PDF

Info

Publication number
CN113364790B
CN113364790B CN202110657449.5A CN202110657449A CN113364790B CN 113364790 B CN113364790 B CN 113364790B CN 202110657449 A CN202110657449 A CN 202110657449A CN 113364790 B CN113364790 B CN 113364790B
Authority
CN
China
Prior art keywords
data
data packet
client
field
address
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.)
Active
Application number
CN202110657449.5A
Other languages
English (en)
Other versions
CN113364790A (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.)
Sichuan Hongmei Intelligent Technology Co Ltd
Original Assignee
Sichuan Hongmei Intelligent Technology 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 Sichuan Hongmei Intelligent Technology Co Ltd filed Critical Sichuan Hongmei Intelligent Technology Co Ltd
Priority to CN202110657449.5A priority Critical patent/CN113364790B/zh
Publication of CN113364790A publication Critical patent/CN113364790A/zh
Application granted granted Critical
Publication of CN113364790B publication Critical patent/CN113364790B/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
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/06Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
    • 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/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本说明书实施例提供一种数据传输方法及装置,该方法包括:对接收到客户端发送来的数据包时,对数据包进行解析,并将在数据包中解析出的数据包本体放入缓存队列中;在缓存队列中取出一个数据包本体,判断数据包本体对应的客户端IP地址字段中的客户端IP地址是否为预设配置集中的客户端IP地址,若是,则对数据包本体进行解析得到数据包本体中的数据流;确定是否已经解析出长度字段;若已经解析出长度字段,则判断在相同客户端IP地址的数据包本体中解析出的数据流的长度之和是否达到长度字段中待传输数据的总长度;若长度之和达到待传输数据的总长度,则接收完成。在发生拆包和粘包时,本申请可以更容易的解析出完整的数据流,减少数据解析的复杂度。

Description

数据传输方法及装置
技术领域
本说明书一个或多个实施例涉及网络通信技术领域,尤其涉及一种数据传 输方法及装置。
背景技术
依据现有的TCP传输数据方式,对于无结构、无边界、无长度的字节流数 据的解析比较复杂,经常会出现拆包粘包的问题。例如,数据包M1和数据包 M2正常发送的情况如图1a所示,数据包M1和数据包M2发生粘包的情况如图 1b所示,数据包M1发生拆包的情况如图1c所示,数据包M2发生拆包的情况 如图1d所示。在发生拆包粘包时常常发生不能解析出完整数据流的情况。所以 目前需要一种数据传输方案,即便发生了拆包粘包也能够解析出完整的数据流。
发明内容
为了解决上述全部或者部分问题,本说明书一个或多个实施例描述了一 种数据传输方法及装置。
根据第一方面,提供了一种数据传输方法,包括:
S100、对接收到客户端发送来的数据包时,对所述数据包进行解析,并 将在所述数据包中解析出的数据包本体放入缓存队列中;其中,客户端按照 预设数据格式将待传输数据、待传输数据的总长度、名称和数据类型生成一 个文件对象,所述文件对象中包含长度字段、名称字段、类型字段和主体字 段,所述长度字段用于存储所述待传输数据的总长度,所述名称字段用于存 储所述名称,所述类型字段用于存储所述数据类型,所述主体字段用于存储 所述待传输数据;根据数据包长度限制将所述文件对象划分为多个数据包本体,所有数据包本体的所有字段中的内容构成所述文件对象;在每一个数据 包本体中添加客户端IP地址字段,将添加客户端IP地址字段的各个数据包 本体依次经过数据链路层和物理层的包装后得到数据包,并将各个数据包逐 个发送给服务端;
S200、在所述缓存队列中取出一个数据包本体,判断所述数据包本体对 应的所述客户端IP地址字段中的客户端IP地址是否为预设配置集中的客户 端IP地址,若是,则执行S300;
S300、按照所述预设数据格式对所述数据包本体进行解析得到所述数据 包本体中包含的各个字段中的内容;
S400、根据当前已经解析的相同客户端IP地址的数据包本体,确定是否 已经解析出长度字段;若已经解析出所述长度字段,则判断在相同客户端IP 地址的数据包本体中解析出的主体字段中的数据流的长度之和是否达到所述 长度字段中待传输数据的总长度;
S500、若所述长度之和达到所述待传输数据的总长度,则接收完成;
S600、若所述长度之和小于所述待传输数据的总长度,则在所述缓存队 列中取出下一个相同客户端IP地址的数据包本体,并返回S300。
根据第二方面,提供了一种数据传输装置,包括:
第一解析模块,用于对接收到客户端发送来的数据包时,对所述数据包 进行解析,并将在所述数据包中解析出的数据包本体放入缓存队列中;其中, 客户端按照预设数据格式将待传输数据、待传输数据的总长度、名称和数据 类型生成一个文件对象,所述文件对象中包含长度字段、名称字段、类型字 段和主体字段,所述长度字段用于存储所述待传输数据的总长度,所述名称 字段用于存储所述名称,所述类型字段用于存储所述数据类型,所述主体字 段用于存储所述待传输数据;根据数据包长度限制将所述文件对象划分为多 个数据包本体,所有数据包本体的所有字段中的内容构成所述文件对象;在 每一个数据包本体中添加客户端IP地址字段,将添加客户端IP地址字段的 各个数据包本体依次经过数据链路层和物理层的包装后得到数据包,并将各 个数据包逐个发送给服务端;
第一判断模块,用于在所述缓存队列中取出一个数据包本体,判断所述 数据包本体对应的所述客户端IP地址字段中的客户端IP地址是否为预设配 置集中的客户端IP地址,若是,则执行第二解析模块;
第二解析模块,用于按照所述预设数据格式对所述数据包本体进行解析 得到所述数据包本体中包含的各个字段中的内容;
第二判断模块,用于根据当前已经解析的相同客户端IP地址的数据包本 体,确定是否已经解析出长度字段;若已经解析出所述长度字段,则判断在 相同客户端IP地址的数据包本体中解析出的主体字段中的数据流的长度之 和是否达到所述长度字段中待传输数据的总长度;若所述长度之和达到所述 待传输数据的总长度,则接收完成;若所述长度之和小于所述待传输数据的 总长度,则在所述缓存队列中取出下一个相同客户端IP地址的数据包本体, 并返回所述第二解析模块。
本说明书实施例提供的数据传输方法及装置,由于文件对象为采用预设 数据格式定制而成,将将该文件对象对应的各个数据包进行传输,这样服务 端也可以按照预设数据格式进行解析,并依据长度字段可以判断是否解析出 完整的待传输数据,相对于现有技术中TCP传输字节流的无结构、没有边界、 首部无数据长度的方式,在发生拆包和粘包时,本申请可以更容易的解析出 完整的数据流,减少数据解析的复杂度和提高数据解析的效率。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对 实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下 面描述中的附图是本说明书的一些实施例,对于本领域普通技术人员来讲, 在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是背景技术中两个数据包正常发送的示意图;
图1b是背景技术中两个数据包发生粘包的示意图;
图1c是背景技术中数据包M1发生拆包的示意图;
图1d是背景技术中数据包M2发生拆包的示意图;
图2是本说明书一个实施例中数据传输方法的流程示意图;
图3a是本说明书一个实施例中一个文件对象形成的一个数据包本体的 结构示意图;
图3b是本说明书一个实施例中一个文件对象形成的两个数据包本体的 结构示意图;
图3c是本说明书一个实施例中一个文件对象形成的三个数据包本体的 结构示意图;
图4是本说明书中形成数据包的流程示意图。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
本发明实施例提供一种数据传输方法,该方法由服务端执行,如图2所示, 该方法包括如下步骤S100~S600:
S100、对接收到客户端发送来的数据包时,对所述数据包进行解析,并 将在所述数据包中解析出的数据包本体放入缓存队列中;
其中,客户端按照预设数据格式将待传输数据、待传输数据的总长度、 名称和数据类型生成一个文件对象,所述文件对象中包含长度字段、名称字 段、类型字段和主体字段,所述长度字段用于存储所述待传输数据的总长度, 所述名称字段用于存储所述名称,所述类型字段用于存储所述数据类型,所 述主体字段用于存储所述待传输数据;根据数据包长度限制将所述文件对象 划分为多个数据包本体,所有数据包本体的所有字段中的内容构成所述文件 对象;在每一个数据包本体中添加客户端IP地址字段,将添加客户端IP地址字段的各个数据包本体依次经过数据链路层和物理层的包装后得到数据包, 并将各个数据包逐个发送给服务端。
在具体实施时,服务端在接收到一个数据包时就进行解析,也就是说, 服务器一边接收数据包,一边解析数据包,这样可以提高解析效率。
可理解的是,数据包由客户端生成,如图4所示,具体生成过程包括: 在客户端的应用层将待传输数据、待传输数据的总长度、名称和数据类型这 些内容形成一个文件对象,将文件对象发送至TCP层。在这个文件对象中包 括多个字段:长度字段、名称字段、类型字段和主体字段,长度字段中的内 容是所述待传输数据的总长度,所述名称字段中的内容是所述名称,类型字 段中的内容是所述待传输数据,主体字段中的内容是待传输数据。但是由于 在数据传输时每一个数据包都有长度限制,如果待传输数据过大,在传输时 传输层(即客户端的TCP层)需要将文件对象进行分割,分割后发送至IP 层。由于长度字段、名称字段、类型字段这三个字段的长度通常分别为一个 字节,因此即便分割,这三个字段各自都是完整的,即长度字段、名称字段、 类型字段中的每个字段都不会被分割多个片段。所以主体字段实际上会被分 割为多段数据流。在分割后会得到多个数据包本体,每一个数据包本体会包 括一个或多个字段,用来存储相应字段的内容,所有数据包本地中的所有字 段构成了文件对象中的内容。在将数据包本体传输时,客户端的网络层(即 IP层)会在每一个数据包本体上添加客户端IP地址字段,客户端IP地址字 段中的内容是客户端IP地址。然后将添加客户端IP地址的多个数据包本体 经过数据链路层和物理层的包装后得到多个数据包,并将各个数据包逐个发 送给服务端。物理层通过二进制数形式把数据包传输到服务端的物理层。
在具体实施时,在客户端的传输层时,传输层在数据分割之后还会在每 一个数据包本体上添加TCP Header即TCP报头。然后将添加TCP报头的数 据包本地发送给IP层,IP层在每个数据包本地上添加客户端IP地址字段, 然后将添加客户端IP地址字段的数据包本体发送给数据链路层,数据链路层 会在数据包本地上添加数据链路报头和循环冗余校验字段,接着将数据包本 体发送给物理层,在物理层添加客户端的MAC地址、接收服务端的MAC 地址等,得到数据包。
在具体实施时,当服务器的物理层接收到数据包之后,会进行解析,得 到去掉MAC地址、接收服务端的MAC地址等的数据包本体,然后会将该数 据包本地发送给服务端的数据链路层,数据链路层会进行解析得到去掉数据 链路报头和循环冗余校验字段的数据包本体,并将数据包本地发送给IP层, IP层对数据包本体解析,得到客户端IP地址和去掉客户端IP地址字段的数 据包本体,再将该数据包本体发送给TCP层进行解析,得到去掉TCP报头 的数据包本体,然后将该数据包本体发送给服务端的应用层,应用层将该数 据包本地放入缓存队列中。
如图3a所示,为将一个文件对象形成一个数据包本体时该数据包本体的 示意图,如图3b所示,为将一个文件对象分割为两个数据包本体时两个数据 包本体的示意图;如图3c所示,为将一个文件对象分割为3个数据包本体时 两个数据包本体的示意图。
S200、在所述缓存队列中取出一个数据包本体,判断所述数据包本体对 应的所述客户端IP地址字段中的客户端IP地址是否为预设配置集中的客户 端IP地址,若是,则执行S300;
其中,预设配置集中包括一个客户端IP地址或者多个客户端IP地址, 也就是说只对预设配置集中的客户端IP地址对应的数据包本体进行后续的 操作,对于不属于预设配置集中的客户端IP地址对应的数据包本体不进行后 续操作,忽略这种数据包本体。
S300、按照所述预设数据格式对所述数据包本体进行解析得到所述数据 包本体中包含的各个字段中的内容;
虽然每一个数据包本体中并不一定会包含文件对象中的所有字段,但是 数据包本体中包含的字段全部来自于文件对象中的字段,是文件对象中的一 部分,因此在按照预设数据格式对数据包进行解析时,可以得到数据包中所 有字段的内容。
可理解的是,客户端和服务端预先约定好预设数据格式,所以两者都知 道预设数据格式,所以当客户端发送过来数据包后,服务端预设数据格式中 的各个字段可以快速的在数据包本体中匹配出该数据包本体包含的各个字段, 解析过程非常高效。
其中,在解析出的主体字段中的数据流为所述待传输数据的一部分,所 有数据包本体中所有主体字段中的数据流构成所述待传输数据。
可理解的是,对数据包本地的解析操作,即对数据包本体中各个字段的 解析,例如,对于图3a中的数据包本体,解析可以得到名称字段、长度字段、 类型字段和主体字段,该主体字段中包括完整的待传输数据。对于图3b中的 第一个数据包本体,解析可以得到名称字段、长度字段、类型字段以及主体 字段,主体字段中包含待传输数据的一部分;第二个数据包本体解析可以得 到主体字段,在主体字段包括待传输数据的另一部分。对图3c中的第一个数 据包本体解析后可以得到名称字段、长度字段;第二个数据包本体可以得到 类型字段和主体字段,在主体字段中包括待传输数据的一部分;第三个数据 包本体解析后可以得到主体字段,主体字段中包含待传输数据的另一部分。
在S300中是对一个数据包进行解析,解析完有可能得到数据流,也有 可能没有数据流,在解析得到数据流后计算解析到的数据流的长度。
可理解的是,本申请是在对一个数据包本体解析后,进入后续步骤判断 是否需要对下一个数据包进行解析,即逐个进行解析,而非将所有的数据包 本体一并解析完成。
S400、根据当前已经解析的相同客户端IP地址的数据包本体,确定是否 已经解析出长度字段;若已经解析出所述长度字段,则判断在相同客户端IP 地址的数据包本体中解析出的主体字段中的数据流的长度之和是否达到所述 长度字段中待传输数据的总长度;
也就是说,针对当前已经解析出的相同客户端IP地址的数据包本体,确 定是否解析出长度字段,如果解析出长度字段,就可以依据长度字段中的总 长度对已经解析得到的数据流的长度之和进行比较,如果已经解析出的数据 流的长度之和等于长度字段中的总长度,就认为已经解析得到完整的待传输 数据。如果已经解析出的数据流的长度之和小于长度字段中的总长度,就认 为还没有解析得到完整的待传输数据。
当然,如果没有解析出长度字段就说明当前还有数据包本体没有被解析, 此时需要在缓存队列中取下一个数据包本体进行解析。也就是说,S400中还 可以包括:若根据当前已经解析的相同客户端IP地址的数据包本体确定未解 析出所述长度字段,则在所述缓存队列中取出下一个相同客户端IP地址的数 据包本体,并返回S300。
S500、若所述长度之和达到所述待传输数据的总长度,则接收完成;
可理解的是,接收完成,即已经解析得到完整的待传输数据,此时可以 根据解析出的名称字段对所述待传输数据进行命名,进行保存或进行其它处 理。
S600、若所述长度之和小于所述待传输数据的总长度,则在所述缓存队 列中取出下一个相同客户端IP地址的数据包本体,并返回S300。
可理解的是,如果长度之和小于待传输数据的总长度,说明没有解析完 成,此时在缓存队列中取下一个相同客户端IP地址的数据包本体,回到S300 中重复执行上述过程,直到解析得到完整的待传输数据。
在具体实施时,在S300和S400之间,本申请提供的方法还可以包括如 下步骤:
S310、根据当前已经解析的相同客户端IP地址的数据包本体,确定是否 已经解析出数据类型字段;若已经解析出所述数据类型字段,则判断所述数 据类型字段中的数据类型是否为所述数据包本体的客户端IP地址字段中的 客户端IP地址在所述预设配置集中对应的数据类型;
其中,所述预设配置集中包括一个或多个客户端IP地址以及与每一个客 户端IP地址对应的数据类型。
也就是说,在预设配置集中不但有一个或多个客户端IP地址,还包括与 每一个客户端IP地址对应的数据类型。
其中,数据类型,例如,word、pdf、jpg等。
在具体实施时,如果依据当前已经解析的数据包本体,未解析出类型字 段,则在缓存队列中取出下一个数据包本体进行解析,直到能够解析出类型 字段,以对类型字段进行一致性对比判断。
也就是说,S310还可以包括:若根据当前已经解析的相同客户端IP地 址的数据包本体,确定未解析出数据类型字段,则在所述缓存队列中取出下 一个相同客户端IP地址的数据包本体,并返回S300。
S320、若所述数据包本体的所述数据类型字段中的数据类型是所述数据 包本体的客户端IP地址字段中的客户端IP地址在所述预设配置集中对应的 数据类型,则执行S400。
也就是说,服务端只对某个或某些客户端IP地址以及对应数据类型的数 据包本体进行后续步骤,而如果数据包本体中的类型字段中的数据类型与其 客户端IP地址字段中的客户端IP地址在预设配置集中对应的数据类型,则 不执行后续的步骤,即停止解析过程。即,在S300和S400之间,本申请提 供的方法还可以包括:
S330、若所述数据包本体的所述数据类型字段中的数据类型不是所述数 据包本体的客户端IP地址字段中的客户端IP地址在所述预设配置集中对应 的数据类型,则执行结束当前客户端IP地址的数据包本体的解析。
例如,服务端的预设配置集中包含客户端IP地址(10.3.5.100),那么服务 端在收到客户端IP地址为(10.3.5.100)的客户端发送的数据包后,就会将数 据包按照预设数据格式进行解析,服务端一边接收(10.3.5.100)发送的字节 流,一边进行解析处理,直到解析出来的内容符合预设数据格式规定的各个 字段,则一个文件对象的解析完成。
由于只对客户端IP地址字段中的客户端IP地址属于预设配置集的数据 包本体进行解析,对于客户端IP地址不属于预设配置集的数据包本体忽略。 当两个不同客户端IP地址的数据包在传输过程中发生粘包时,可以根据不同 的客户端IP地址进行拆分。当两个相同IP地址的数据包在传输过程中发生 粘包时,即同一个客户端先后发送两段待传输数据时,先发送的待传输数据 中的最后一个数据包和后发送的待传输数据中的第一个数据包发生粘包,可 以通过在先发送的待传输数据对应的数据包中解析出的长度字段将发生粘包 的两个数据包进行分割。
当一个数据包发生拆包时,例如,在图1c中,可以通过数据包M1的前 半部分p1中解析得到的长度字段对数据包M2和数据包的后半部分p2进行 分割。如果长度字段在数据包M1的后半部分,在数据包M1的前半部分p1 解析不到长度字段,则对数据包M2和数据包的后半部分p2进行解析,根据 最先解析到的长度字段对数据包M2和数据包的后半部分p2进行分割。
可见,本申请通过按照指定格式发送解析数据包,不会因数据的拆包和 粘包影响最后数据接收解析的完整性,即根据客户端发送过来的文件对象解 析是否完整来确定待传输数据是否接收成功,解决了传统TCP传输数据时遇 到拆包和粘包问题难以处理数据的瓶颈。本发明侧重于对于协议层的补充优 化,提供一个易用、高效的数据发送接收处理方式,降低解析数据处理的复 杂度,保证网络数据传输的正确性和高效性,这对于实现高效、稳定的网络 通信和高质量的软件开发都有非常重要的意义。
可理解的是,数据包本体为对按照预设数据格式所生成的文件对象进行 分割而得到,因此每一个数据包本体中包括文件对象中的一个或者多个字段, 所有的数据包本体中的所有字段中的内容构成了文件对象。长度字段存在于 某一个数据包本体中,当解析出长度字段后,便得知整个文件对象中完整的 待传输数据的总长度,然后根据当前解析出的数据流的长度之和与该总长度 进行比对,若两者一致,说明解析完成,否则继续取出下一个数据包本体进 行解析,直到两者一致。
由于文件对象为采用预设数据格式定制而成,将将该文件对象对应的各 个数据包进行传输,这样服务端也可以按照预设数据格式进行解析,并依据 长度字段可以判断是否解析出完整的待传输数据,相对于现有技术中TCP传 输字节流的无结构、没有边界、首部无数据长度的方式,在发生拆包和粘包 时,本申请可以更容易的解析出完整的数据流,减少数据解析的复杂度和提 高数据解析的效率。
而且,由于数据传输的多样性,现有技术不能高效解析每一种数据,由 于数据内容的不确定性导致在数据解析时需要匹配多种方式,非常复杂。而 本申请中对客户端IP地址和数据类型进行限定,只对预设配置集中存在的客 户端IP地址及其数据类型对应的数据包本体进行解析获取其数据流,对于其 它客户端IP地址和数据类型对应的数据包本体忽略,即对某些客户端发送来 的某些类型的数据包进行解析,这样服务端不需要匹配多种解析方式,只需 要按照预设数据格式进行解析即可,减少数据解析的复杂度,可以高效的解 析某些客户端发送来的某些类型的数据包。
第二方面,本申请提供一种数据传输装置,该装置可以为服务端,具体 可以是一台或者多台服务器形成的服务器集群,该装置包括:
第一解析模块,用于对接收到客户端发送来的数据包时,对所述数据包 进行解析,并将在所述数据包中解析出的数据包本体放入缓存队列中;其中, 客户端按照预设数据格式将待传输数据、待传输数据的总长度、名称和数据 类型生成一个文件对象,所述文件对象中包含长度字段、名称字段、类型字 段和主体字段,所述长度字段用于存储所述待传输数据的总长度,所述名称 字段用于存储所述名称,所述类型字段用于存储所述数据类型,所述主体字 段用于存储所述待传输数据;根据数据包长度限制将所述文件对象划分为多 个数据包本体,所有数据包本体的所有字段中的内容构成所述文件对象;在 每一个数据包本体中添加客户端IP地址字段,将添加客户端IP地址字段的 各个数据包本体依次经过数据链路层和物理层的包装后得到数据包,并将各 个数据包逐个发送给服务端;
第一判断模块,用于在所述缓存队列中取出一个数据包本体,判断所述 数据包本体对应的所述客户端IP地址字段中的客户端IP地址是否为预设配 置集中的客户端IP地址,若是,则执行第二解析模块;
第二解析模块,用于按照所述预设数据格式对所述数据包本体进行解析 得到所述数据包本体中包含的各个字段中的内容;
第二判断模块,用于根据当前已经解析的相同客户端IP地址的数据包本 体,确定是否已经解析出长度字段;若已经解析出所述长度字段,则判断在 相同客户端IP地址的数据包本体中解析出的主体字段中的数据流的长度之 和是否达到所述长度字段中待传输数据的总长度;若所述长度之和达到所述 待传输数据的总长度,则接收完成;若所述长度之和小于所述待传输数据的 总长度,则在所述缓存队列中取出下一个相同客户端IP地址的数据包本体, 并返回所述第二解析模块。
在一些实施例中,所述第二判断模块还用于:若根据当前已经解析的相 同客户端IP地址的数据包本体确定未解析出所述长度字段,则在所述缓存队 列中取出下一个相同客户端IP地址的数据包本体,并返回所述第二解析模块。
在一些实施例中,装置还包括在第二判断模块之前执行的第三判断模块, 用于根据当前已经解析的相同客户端IP地址的数据包本体,确定是否已经解 析出数据类型字段;若已经解析出所述数据类型字段,则判断所述数据类型 字段中的数据类型是否为所述数据包本体的客户端IP地址字段中的客户端 IP地址在所述预设配置集中对应的数据类型;所述预设配置集中包括一个或 多个客户端IP地址以及与每一个客户端IP地址对应的数据类型;若所述数 据包本体的所述数据类型字段中的数据类型是所述数据包本体的客户端IP 地址字段中的客户端IP地址在所述预设配置集中对应的数据类型,则执行所 述第二判断模块。
在一些实施例中,所述第三判断模块还用于:若所述数据包本体的所述 数据类型字段中的数据类型不是所述数据包本体的客户端IP地址字段中的 客户端IP地址在所述预设配置集中对应的数据类型,则执行结束当前客户端 IP地址的数据包本体的解析。
在一些实施例中,第三判断模块还用于:若根据当前已经解析的相同客 户端IP地址的数据包本体,确定未解析出数据类型字段,则在所述缓存队列 中取出下一个相同客户端IP地址的数据包本体,并返回第二解析模块。
在一些实施例中,第三判断模块还用于:根据解析出的名称字段对所述 待传输数据进行命名。
可理解的是,本发明实施例提供的装置,有关内容的解释、举例、有益 效果等部分可以参考上述方法中的相应部分,此处不再赘述。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同 相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同 之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描 述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所 描述的功能可以用硬件、软件、挂件或它们的任意组合来实现。当使用软件 实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质 上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行 了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而 已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上, 所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。

Claims (8)

1.一种数据传输方法,其特征在于,包括:
S100、对接收到客户端发送来的数据包时,对所述数据包进行解析,并将在所述数据包中解析出的数据包本体放入缓存队列中;其中,客户端按照预设数据格式将待传输数据、待传输数据的总长度、名称和数据类型生成一个文件对象,所述文件对象中包含长度字段、名称字段、类型字段和主体字段,所述长度字段用于存储所述待传输数据的总长度,所述名称字段用于存储所述名称,所述类型字段用于存储所述数据类型,所述主体字段用于存储所述待传输数据;根据数据包长度限制将所述文件对象划分为多个数据包本体,所有数据包本体的所有字段中的内容构成所述文件对象;在每一个数据包本体中添加客户端IP地址字段,将添加客户端IP地址字段的各个数据包本体依次经过数据链路层和物理层的包装后得到数据包,并将各个数据包逐个发送给服务端;
S200、在所述缓存队列中取出一个数据包本体,判断所述数据包本体对应的所述客户端IP地址字段中的客户端IP地址是否为预设配置集中的客户端IP地址,若是,则执行S300;
S300、按照所述预设数据格式对所述数据包本体进行解析得到所述数据包本体中包含的各个字段中的内容;
S400、根据当前已经解析的相同客户端IP地址的数据包本体,确定是否已经解析出长度字段;若已经解析出所述长度字段,则判断在相同客户端IP地址的数据包本体中解析出的主体字段中的数据流的长度之和是否达到所述长度字段中待传输数据的总长度;
S500、若所述长度之和达到所述待传输数据的总长度,则接收完成;
S600、若所述长度之和小于所述待传输数据的总长度,则在所述缓存队列中取出下一个相同客户端IP地址的数据包本体,并返回S300;
S400之前,还包括:
根据当前已经解析的相同客户端IP地址的数据包本体,确定是否已经解析出数据类型字段;若已经解析出所述数据类型字段,则判断所述数据类型字段中的数据类型是否为所述数据包本体的客户端IP地址字段中的客户端IP地址在所述预设配置集中对应的数据类型;所述预设配置集中包括一个或多个客户端IP地址以及与每一个客户端IP地址对应的数据类型;
若所述数据包本体的所述数据类型字段中的数据类型是所述数据包本体的客户端IP地址字段中的客户端IP地址在所述预设配置集中对应的数据类型,则执行S400。
2.根据权利要求1所述的方法,其特征在于,S400中还包括:
若根据当前已经解析的相同客户端IP地址的数据包本体确定未解析出所述长度字段,则在所述缓存队列中取出下一个相同客户端IP地址的数据包本体,并返回S300。
3.根据权利要求1所述的方法,其特征在于,S400之前,还包括:
若所述数据包本体的所述数据类型字段中的数据类型不是所述数据包本体的客户端IP地址字段中的客户端IP地址在所述预设配置集中对应的数据类型,则执行结束当前客户端IP地址的数据包本体的解析。
4.根据权利要求1所述的方法,其特征在于,S400之前,还包括:若根据当前已经解析的相同客户端IP地址的数据包本体,确定未解析出数据类型字段,则在所述缓存队列中取出下一个相同客户端IP地址的数据包本体,并返回S300。
5.根据权利要求1所述的方法,其特征在于,S500还包括:根据解析出的名称字段对所述待传输数据进行命名。
6.一种数据传输装置,其特征在于,包括:
第一解析模块,用于对接收到客户端发送来的数据包时,对所述数据包进行解析,并将在所述数据包中解析出的数据包本体放入缓存队列中;其中,客户端按照预设数据格式将待传输数据、待传输数据的总长度、名称和数据类型生成一个文件对象,所述文件对象中包含长度字段、名称字段、类型字段和主体字段,所述长度字段用于存储所述待传输数据的总长度,所述名称字段用于存储所述名称,所述类型字段用于存储所述数据类型,所述主体字段用于存储所述待传输数据;根据数据包长度限制将所述文件对象划分为多个数据包本体,所有数据包本体的所有字段中的内容构成所述文件对象;在每一个数据包本体中添加客户端IP地址字段,将添加客户端IP地址字段的各个数据包本体依次经过数据链路层和物理层的包装后得到数据包,并将各个数据包逐个发送给服务端;
第一判断模块,用于在所述缓存队列中取出一个数据包本体,判断所述数据包本体对应的所述客户端IP地址字段中的客户端IP地址是否为预设配置集中的客户端IP地址,若是,则执行第二解析模块;
第二解析模块,用于按照所述预设数据格式对所述数据包本体进行解析得到所述数据包本体中包含的各个字段中的内容;
第二判断模块,用于根据当前已经解析的相同客户端IP地址的数据包本体,确定是否已经解析出长度字段;若已经解析出所述长度字段,则判断在相同客户端IP地址的数据包本体中解析出的主体字段中的数据流的长度之和是否达到所述长度字段中待传输数据的总长度;若所述长度之和达到所述待传输数据的总长度,则接收完成;若所述长度之和小于所述待传输数据的总长度,则在所述缓存队列中取出下一个相同客户端IP地址的数据包本体,并返回所述第二解析模块;
还包括在第二判断模块之前执行的第三判断模块,用于根据当前已经解析的相同客户端IP地址的数据包本体,确定是否已经解析出数据类型字段;若已经解析出所述数据类型字段,则判断所述数据类型字段中的数据类型是否为所述数据包本体的客户端IP地址字段中的客户端IP地址在所述预设配置集中对应的数据类型;所述预设配置集中包括一个或多个客户端IP地址以及与每一个客户端IP地址对应的数据类型;若所述数据包本体的所述数据类型字段中的数据类型是所述数据包本体的客户端IP地址字段中的客户端IP地址在所述预设配置集中对应的数据类型,则执行所述第二判断模块。
7.根据权利要求6所述的装置,其特征在于,所述第二判断模块还用于:若根据当前已经解析的相同客户端IP地址的数据包本体确定未解析出所述长度字段,则在所述缓存队列中取出下一个相同客户端IP地址的数据包本体,并返回所述第二解析模块。
8.根据权利要求6所述的装置,其特征在于,所述第三判断模块还用于:若所述数据包本体的所述数据类型字段中的数据类型不是所述数据包本体的客户端IP地址字段中的客户端IP地址在所述预设配置集中对应的数据类型,则执行结束当前客户端IP地址的数据包本体的解析。
CN202110657449.5A 2021-06-12 2021-06-12 数据传输方法及装置 Active CN113364790B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110657449.5A CN113364790B (zh) 2021-06-12 2021-06-12 数据传输方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110657449.5A CN113364790B (zh) 2021-06-12 2021-06-12 数据传输方法及装置

Publications (2)

Publication Number Publication Date
CN113364790A CN113364790A (zh) 2021-09-07
CN113364790B true CN113364790B (zh) 2022-10-18

Family

ID=77534072

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110657449.5A Active CN113364790B (zh) 2021-06-12 2021-06-12 数据传输方法及装置

Country Status (1)

Country Link
CN (1) CN113364790B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114422624B (zh) * 2022-01-25 2024-05-17 电信科学技术第五研究所有限公司 数据接收方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108111523A (zh) * 2017-12-28 2018-06-01 网易(杭州)网络有限公司 数据传输方法和装置
CN110933094A (zh) * 2019-12-04 2020-03-27 深信服科技股份有限公司 一种网络安全设备及其smb漏洞检测方法、装置和介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101252579B (zh) * 2008-02-22 2012-01-25 浙江大学 一种网络层的打包解包方法
CN102377631B (zh) * 2010-08-06 2015-08-05 北京乾唐视联网络科技有限公司 一种基于流量控制的数据传输方法及通信系统
CN102457986A (zh) * 2010-10-29 2012-05-16 联芯科技有限公司 终端的上行数据传输方法及终端
CN102404195A (zh) * 2011-09-02 2012-04-04 华为技术有限公司 数据传输方法、网关和网络系统
CN103973645B (zh) * 2013-01-30 2017-11-24 华为技术有限公司 一种数据传输方法和相关装置
CN109347825B (zh) * 2018-10-19 2020-01-14 海南易乐物联科技有限公司 一种基于tcp协议数据分包黏包的处理方法
US11165699B2 (en) * 2019-11-14 2021-11-02 Cisco Technology, Inc. Packet tracing mechanism in a network leveraging SRV6
CN112019575B (zh) * 2020-10-22 2021-01-29 腾讯科技(深圳)有限公司 数据包处理方法、装置、计算机设备以及存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108111523A (zh) * 2017-12-28 2018-06-01 网易(杭州)网络有限公司 数据传输方法和装置
CN110933094A (zh) * 2019-12-04 2020-03-27 深信服科技股份有限公司 一种网络安全设备及其smb漏洞检测方法、装置和介质

Also Published As

Publication number Publication date
CN113364790A (zh) 2021-09-07

Similar Documents

Publication Publication Date Title
US7080308B2 (en) Method and apparatus to perform error control
CN101341724B (zh) 用于传送消息的系统和方法
US20020191600A1 (en) Method and apparatus for communicating using labeled data packets in a network
US20030108044A1 (en) Stateless TCP/IP protocol
US8140709B2 (en) Two stage internet protocol header compression
CN112751845B (zh) 网络协议解析方法、系统及装置
US11271856B2 (en) Concept for segmenting an application buffer into data packets
US9614928B1 (en) System and method for communication between networked applications
CN109347825B (zh) 一种基于tcp协议数据分包黏包的处理方法
CN101860904A (zh) 基于数据包ip头压缩技术实现校验和计算的方法
CN113364790B (zh) 数据传输方法及装置
CN107508828B (zh) 一种超远程数据交互系统及方法
CN111371887A (zh) 物联网日志传输方法、客户端、服务端、设备及存储介质
US20040165585A1 (en) Packet transmission apparatus and packet transmission method
CN114301576A (zh) 用于在ieee 802.15.4网络中生成和发送应答帧的方法及通信装置
CN101047620B (zh) 快速处理报文的装置及方法
CN106878171B (zh) 一种用于多数据源的流式数据处理方法及装置
CN103873443A (zh) 信息处理方法、本地代理服务器和网络代理服务器
US20060224758A1 (en) System and method for file header operation in a peer-to-peer network providing streaming services
CN109756498B (zh) 通信设备上tcp协议的nat alg转换方法及系统
CN106302364B (zh) 代理方法、辅助代理方法与设备
US11196792B2 (en) Method, device and system for transmitting data
CN115150333B (zh) 拥塞控制方法、装置、计算机设备和存储介质
CN116132550A (zh) 一种数据传输方法、装置、电子设备及存储介质
WO2021036189A1 (zh) Rdma数据发送及接收方法、电子设备及可读存储介质

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