CN103746945A - 一种数据传输装置及方法 - Google Patents
一种数据传输装置及方法 Download PDFInfo
- Publication number
- CN103746945A CN103746945A CN201310747064.3A CN201310747064A CN103746945A CN 103746945 A CN103746945 A CN 103746945A CN 201310747064 A CN201310747064 A CN 201310747064A CN 103746945 A CN103746945 A CN 103746945A
- Authority
- CN
- China
- Prior art keywords
- data
- field
- length
- packet
- encapsulation
- 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
Abstract
本申请提供了一种数据传输装置及方法。装置包括:第一获取单元,用于获取第一装置内部的程序生成的第一数据;第一数据长度确定单元,用于确定第一数据的长度;判断单元,用于判断长度是否小于预设阈值;第二获取单元,用于获取另外的数据;第二数据确定单元,用于从另外的数据中,确定第二数据;第一封装信息确定单元,用于确定第一封装信息;第二封装信息确定单元,用于确定第二封装信息;封装单元,用于将第一数据与第二数据封装为一个第三数据包;发送单元,用于将第三数据包发送至物理地址对应的第二装置。采用本申请的装置或方法,可以减小数据传输过程所消耗的数据流量,提高数据传输效率。
Description
技术领域
本申请涉及数据处理领域,特别是涉及一种数据传输装置及方法。
背景技术
设备与设备之间,经常需要进行数据的传输。在传输数据时,需要按照设备之间的数据传输协议执行数据传输过程。
现有技术中的数据传输协议,通常都规定了传输过程中每个数据包所必须满足的最小数据长度。例如,在以太网的数据传输协议中,采用CSMA/CD(Carrier Sense Multiple Access/Collision Detect,载波监听多路访问/冲突检测机制)方法进行数据传输。该方法要求数据包中的payload字段的最小长度为46字节。如果实际应用中,在单位时间内需要传输的数据在payload字段的长度不足46字节,则需要采用无意义的字节将payload字段填充至46字节后,再发送。
可以看出,现有技术中的数据传输方法,当单位时间内需要传输的数据长度小于数据传输协议中规定的最小长度时,需要在数据包中填充无意义的数据后,再发送。由于填充了无意义的数据,导致现有技术中的数据传输方法消耗的数据流量较大,数据传输效率也较低。
发明内容
本申请的目的是提供一种数据传输装置及方法,能够通过对数据长度较小的数据在链路层进行合并,解决现有技术中的数据传输方法消耗的数据流量较大,数据传输效率也较低的问题。
为实现上述目的,本申请提供了如下方案:
根据本申请的第一方面的第一种可能的实现方式,本申请提供一种数据传输装置,所述数据传输装置为第一装置,包括:
第一获取单元,用于获取所述第一装置内部的程序生成的第一数据;
第一数据长度确定单元,用于确定所述第一数据的长度;
判断单元,用于判断所述长度是否小于预设阈值,得到第一判断结果;
第二获取单元,用于当所述第一判断结果为是时,在预设时间内获取所述第一装置内部的程序生成的另外的数据;
第二数据确定单元,用于从所述另外的数据中,确定与所述第一数据在链路层中的下一跳的物理地址相同的第二数据;
第一封装信息确定单元,用于确定将所述第一数据封装为第一数据包所采用的第一封装信息;
第二封装信息确定单元,用于确定将所述第二数据封装为第二数据包所采用的第二封装信息;
封装单元,用于根据所述第一封装信息以及所述第二封装信息将所述第一数据与所述第二数据封装为一个第三数据包;
发送单元,用于将所述第三数据包发送至所述物理地址对应的第二装置。
结合第一方面的第二种可能的实现方式,所述第二获取单元,具体包括:
缓存子单元,用于缓存所述第一数据;
计时子单元,用于对所述第一数据的缓存时间进行计时;
获取子单元,用于获取另外的数据;
停止子单元,用于当计时时间达到预设时长时,停止获取另外的数据。
结合第一方面的第三种可能的实现方式,还包括:
能力信息获取单元,用于在确定所述第一数据的长度之前,获取所述第二装置的能力信息;
能力信息确定单元,用于确定所述能力信息表示所述第二装置支持从所述第三数据包中拆分出所述第一数据和所述第二数据。
结合第一方面的第三种可能的实现方式的第一种具体实现方式,所述能力信息获取单元,具体包括:
物理地址获取子单元,用于获取所述第一数据在链路层中的下一跳的物理地址;
能力信息查找子单元,用于在预先存储的能力信息记录中,查找所述物理地址对应的第二装置的能力信息。
结合第一方面的第四种可能的实现方式,还包括:
封装类型信息获取单元,用于在确定所述第一数据的长度之前,获取所述第一数据中的封装类型信息;
封装类型信息确定单元,用于确定所述信息表示所述第一数据需要与另外的数据合并封装。
结合第一方面的五种可能的实现方式中的任意一种,所述第一封装信息确定单元,具体包括:
第一封装信息确定子单元,用于确定将所述第一数据封装为第一数据包所采用的第一目的MAC地址字段、第一源MAC地址字段、第一长度或类型字段;
所述第二封装信息确定单元,具体包括:
第二封装信息确定子单元,用于确定将所述第二数据封装为第二数据包所采用的第二目的MAC地址字段、第二源MAC地址字段、第二长度或类型字段;
相应的,所述封装单元,具体包括:
第一确定子单元,用于确定所述第三数据包的前导码字段、帧开始符字段;
第二确定子单元,用于确定第一合并数据数目字段和第一长度指示字段,所述第一合并数据数目字段用于表示在所述第三数据包中添加的所述第二数据的数目,所述第一长度指示字段用于表示所述第一数据的长度;
第一添加子单元,用于将所述第一目的MAC地址字段、第一源MAC地址字段、第一长度或类型字段、第一合并数据数目字段、第一长度指示字段和所述第一数据添加在所述帧开始符字段之后;
第三确定子单元,用于确定第二合并数据数目字段和第二长度指示字段,所述第二合并数据数目字段用于表示在所述第二数据中添加的另外的数据的数目,所述第二长度指示字段用于表示所述第二数据的长度;
第二添加子单元,用于将所述第二目的MAC地址字段、第二源MAC地址字段、第二长度或类型字段、第二合并数据数目字段、第二长度指示字段和所述第二数据添加在所述第一数据之后;
帧校验序列字段生成子单元,用于根据所述前导码字段、帧开始符字段、第一目的MAC地址字段、第一源MAC地址字段、第一长度或类型字段、第一合并数据数目字段、第一长度指示字段、所述第一数据、第二目的MAC地址字段、第二源MAC地址字段、第二长度或类型字段、第二合并数据数目字段、第二长度指示字段和所述第二数据生成帧校验序列字段。
结合第一方面的第六种可能的实现方式,还包括:
数据包接收单元,用于在获取所述第一装置内部的程序生成的第一数据之前,接收外部装置传入的数据包;
所述第一获取单元,具体包括:
第一获取子单元,用于获取所述第一装置内部的数据包拆分程序从所述数据包中拆分出的所述第一数据。
根据本申请的第二方面的第一种可能的实现方式,本申请提供一种数据传输方法,包括:
第一装置获取所述第一装置内部的程序生成的第一数据;
确定所述第一数据的长度;
判断所述长度是否小于预设阈值,得到第一判断结果;
当所述第一判断结果为是时,在预设时间内获取所述第一装置内部的程序生成的另外的数据;
从所述另外的数据中,确定与所述第一数据在链路层中的下一跳的目的地址相同的第二数据;
确定将所述第一数据封装为第一数据包所采用的第一封装信息;
确定将所述第二数据封装为第二数据包所采用的第二封装信息;
根据所述第一封装信息以及所述第二封装信息将所述第一数据与所述第二数据封装为一个第三数据包;
将所述第三数据包发送至所述目的地址对应的第二装置。
结合第二方面的第二种可能的实现方式,所述在预设时间内获取另外的数据包,具体包括:
缓存所述第一数据;
对所述第一数据的缓存时间进行计时;
获取另外的数据;
当计时时间达到预设时长时,停止获取另外的数据。
结合第二方面的第三种可能的实现方式,所述确定所述第一数据的长度之前,还包括:
获取所述第二装置的能力信息;
确定所述能力信息表示所述第二装置支持从所述第三数据包中拆分出所述第一数据和所述第二数据。
结合第二方面的第三种可能的实现方式的第一种具体的实现方式,所述获取所述第二装置的能力信息,具体包括:
获取所述第一数据在链路层中的下一跳的目的地址;
在预先存储的能力信息记录中,查找所述目的地址对应的第二装置的能力信息。
结合第二方面的第四种可能的实现方式,所述确定所述第一数据的长度之前,还包括:
获取所述第一数据包中的封装类型信息;
确定所述封装类型信息表示所述第一数据需要与另外的数据合并封装。
结合第二方面的五种可能的实现方式中的任意一种,所述确定将所述第一数据封装为第一数据包所采用的第一封装信息,具体包括:
确定将所述第一数据封装为第一数据包所采用的第一目的MAC地址字段、第一源MAC地址字段、第一长度或类型字段;
所述确定将所述第二数据封装为第二数据包所采用的第二封装信息,具体包括:
确定将所述第二数据封装为第二数据包所采用的第二目的MAC地址字段、第二源MAC地址字段、第二长度或类型字段;
相应的,所述根据所述第一封装信息以及所述第二封装信息将所述第一数据与所述第二数据封装为一个第三数据包,具体包括:
确定所述第三数据包的前导码字段、帧开始符字段;
确定第一合并数据数目字段和第一长度指示字段,所述第一合并数据数目字段用于表示在所述第三数据包中添加的所述第二数据的数目,所述第一长度指示字段用于表示所述第一数据的长度;
将所述第一目的MAC地址字段、第一源MAC地址字段、第一长度或类型字段、第一合并数据数目字段、第一长度指示字段和所述第一数据添加在所述帧开始符字段之后;
确定第二合并数据数目字段和第二长度指示字段,所述第二合并数据数目字段用于表示在所述第二数据中添加的另外的数据的数目,所述第二长度指示字段用于表示所述第二数据的长度;
将所述第二目的MAC地址字段、第二源MAC地址字段、第二长度或类型字段、第二合并数据数目字段、第二长度指示字段和所述第二数据添加在所述第一数据之后;
根据所述前导码字段、帧开始符字段、第一目的MAC地址字段、第一源MAC地址字段、第一长度或类型字段、第一合并数据数目字段、第一长度指示字段、所述第一数据、第二目的MAC地址字段、第二源MAC地址字段、第二长度或类型字段、第二合并数据数目字段、第二长度指示字段和所述第二数据生成帧校验序列字段。
结合第二方面的第六种可能的实现方式,所述获取所述第一装置内部的程序生成的第一数据之前,还包括:
接收外部装置传入的数据包;
所述获取所述第一装置内部的程序生成的第一数据,具体包括:
获取所述第一装置内部的数据包拆分程序从所述数据包中拆分出的所述第一数据。
根据本申请提供的具体实施例,本申请公开了以下技术效果:
本申请公开的数据传输装置或方法,通过确定所述第一数据的长度;判断所述长度是否小于预设阈值,得到第一判断结果;当所述第一判断结果为是时,在预设时间内获取所述第一装置内部的程序生成的与所述第一数据在链路层中的下一跳的物理地址相同的第二数据,将所述第一数据与所述第二数据封装为一个第三数据包,可以在单位时间内需要传输的第一数据的长度小于数据传输协议中规定的最小长度时,将第一数据与第二数据封装在一个数据包中进行发送,从而可以减小数据传输过程所消耗的数据流量,提高数据传输效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请的数据传输装置实施例1的结构图;
图2为本申请的数据传输装置实施例2的结构图;
图3为现有技术中采用以太网帧格式的数据包的结构示意图;
图4为本发明实施例中提供的基于以太网帧格式的数据包的一种结构示意图;
图5为本发明实施例中的封装有第一数据和第二数据的数据包的一种结构示意图;
图6为本发明实施例中的封装有第一数据、第二数据和第三数据的数据包的一种结构示意图;
图7为本发明实施例中的一种数据传输过程的示意图;
图8为本申请的数据传输方法实施例的流程图;
图9为本申请的计算节点的结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
图1为本申请的数据传输装置实施例1的结构图。所述数据传输装置可以称为第一装置。所述数据传输装置,可以是具备本申请的数据传输方法的执行能力的逻辑电路,也可以是包含所述逻辑电路的芯片,还可以是包含所述芯片的电子设备。该电子设备可以是终端设备或者交换机等设备。所述数据传输装置可以是交换器件,也可以是终端器件。
如图1所示,该装置可以包括:
第一获取单元101,用于获取所述第一装置内部的程序生成的第一数据;
所述第一数据可以是第一装置内部运行的程序生成的。所述第一数据需要发送至所述第一装置外部的装置。
由于第一装置内部运行的程序生成的数据,不会受到装置之间的数据传输协议的限制。因此,所述第一数据的长度可能会小于所述数据传输协议中规定的最小长度。
第一数据长度确定单元102,用于确定所述第一数据的长度;
所述第一数据的长度可以用字节表示。
判断单元103,用于判断所述长度是否小于预设阈值,得到第一判断结果;
所述第一数据可以认为是数据包中的有效载荷。
在不同的数据传输协议下,对于传输的数据包中的有效载荷的最小长度有不同的要求。例如,在以太网的数据传输协议中,采用CSMA/CD方法进行数据传输时,要求数据包中的payload字段(即有效载荷)的最小长度为46字节。
所述预设阈值,可以根据装置之间的数据传输协议的要求进行设置。例如,采用以太网的数据传输协议时,所述预设阈值就可以设置为46字节。
当然,如果为了提高数据传输效率,所述预设阈值也可以大于数据传输协议中规定的最小数据长度。例如,采用以太网的数据传输协议时,所述预设阈值也可以设置为1000字节。
第二获取单元104,用于当所述第一判断结果为是时,在预设时间内获取所述第一装置内部的程序生成的另外的数据;
可以先将所述第一数据进行缓存。在预设时间长度内继续获取另外的数据。
第二数据确定单元105,用于从所述另外的数据中,确定与所述第一数据在链路层中的下一跳的物理地址相同的第二数据;
所述物理地址可以是介质访问控制(Media Access Control,MAC)地址。所述第一数据在链路层中的下一跳的物理地址可以表示所述第一数据需要发送至哪个装置。
例如,当所述第一装置为交换器件时,所述交换器件可以与多个终端器件或者其他交换器件相连,不同的终端器件或者同一交换器件的不同芯片具有不同的MAC地址。根据所述MAC地址,就可以确定所述第一数据需要发送至哪个装置。
需要说明的是,当所述第一装置为终端器件时,与所述终端器件在物理链路上直接相连的装置可能只有一个,则此时,所述终端器件内部的程序生成的第一数据,全部需要发送至那唯一一个与所述终端器件在物理链路上直接相连的装置。所以,在这种情况下,可以省略确定与所述第一数据在链路层中的下一跳的目的地址相同的第二数据的步骤,即,将全部的所述另外的数据,均确定为第二数据。
还需要说明的是,所述第一数据最终需要发送至的装置与所述第二数据最终需要发送至的装置可以是不同的,只要所述第一数据与所述第二数据在数据链路层上传输时,均需要从所述第一装置先发送至相同的第二装置,就可以将所述第一数据与所述第二数据封装在一个数据包中。
第一封装信息确定单元106,用于确定将所述第一数据封装为第一数据包所采用的第一封装信息;
在以太网的数据传输协议中,所述第一封装信息可以包括:将所述第一数据封装为第一数据包所采用的第一目的MAC地址字段、第一源MAC地址字段、第一长度或类型字段。
第二封装信息确定单元107,用于确定将所述第二数据封装为第二数据包所采用的第二封装信息;
在以太网的数据传输协议中,所述第二封装信息可以包括:将所述第二数据封装为第二数据包所采用的第二目的MAC地址字段、第二源MAC地址字段、第二长度或类型字段。
封装单元108,用于根据所述第一封装信息以及所述第二封装信息将所述第一数据与所述第二数据封装为一个第三数据包;
可以根据实际需要,采用不同的具体封装方式。只要封装后的第三数据包中,具有能够表明第一数据的第一源MAC地址,第一目的MAC地址,第一数据所在位置,第二数据的第二源MAC地址,第二目的MAC地址,第二数据所在位置的信息,使得接收装置可以从所述第三数据包中拆分出所述第一数据和所述第二数据,并且在需要对所述第一数据进行转发时能够确定所述第一数据的目的地址,在需要对所述第二数据进行转发时能够确定所述第二数据的目的地址即可。
发送单元109,用于将所述第三数据包发送至所述物理地址对应的第二装置。
综上所述,本实施例通过确定所述第一数据的长度;判断所述长度是否小于预设阈值,得到第一判断结果;当所述第一判断结果为是时,在预设时间内获取所述第一装置内部的程序生成的与所述第一数据在链路层中的下一跳的物理地址相同的第二数据,将所述第一数据与所述第二数据封装为一个第三数据包,可以在单位时间内需要传输的第一数据的长度小于数据传输协议中规定的最小长度时,将第一数据与第二数据封装在一个数据包中进行发送,从而减小数据传输过程所消耗的数据流量,提高数据传输效率。
实际应用中,为了保证第一数据能够被接收装置及时接收,所述预设时间不应设置地过久。具体的,所述第二获取单元104,具体可以包括:
缓存子单元,用于缓存所述第一数据;
计时子单元,用于对所述第一数据的缓存时间进行计时;
获取子单元,用于获取另外的数据;
停止子单元,用于当计时时间达到预设时长时,停止获取另外的数据。
实际应用中,为了确保合并封装在一起的第一数据和第二数据能够被接收装置从第三数据包中拆分出来,所述装置还可以包括:
能力信息获取单元,用于在确定所述第一数据的长度之前,获取所述第二装置的能力信息;
能力信息确定单元,用于确定所述能力信息表示所述第二装置支持从所述第三数据包中拆分出所述第一数据和所述第二数据。
具体的,所述能力信息获取单元,可以包括:
物理地址获取子单元,用于获取所述第一数据在链路层中的下一跳的物理地址;
能力信息查找子单元,用于在预先存储的能力信息记录中,查找所述物理地址对应的第二装置的能力信息。
或者,为了确保合并封装在一起的第一数据和第二数据能够被接收装置从第三数据包中拆分出来,所述装置还可以包括:
封装类型信息获取单元,用于在确定所述第一数据的长度之前,获取所述第一数据中的封装类型信息;
所述封装类型信息可以是所述第一装置内的程序生成的。所述程序可以查询第二装置的能力信息。当确定所述第二装置支持数据包拆分功能时,可以生成所述封装类型信息。
封装类型信息确定单元,用于确定所述信息表示所述第一数据需要与另外的数据合并封装。
图2为本申请的数据传输装置实施例2的结构图。本实施例中,采用以太网的数据传输协议进行说明。如图2所示,该装置可以包括:
第一获取单元101,用于获取所述第一装置内部的程序生成的第一数据;
第一数据长度确定单元102,用于确定所述第一数据的长度;
判断单元103,用于判断所述长度是否小于预设阈值,得到第一判断结果;
第二获取单元104,用于当所述第一判断结果为是时,在预设时间内获取所述第一装置内部的程序生成的另外的数据;
第二数据确定单元105,用于从所述另外的数据中,确定与所述第一数据在链路层中的下一跳的物理地址相同的第二数据;
第一封装信息确定子单元201,用于确定将所述第一数据封装为第一数据包所采用的第一目的MAC地址字段、第一源MAC地址字段、第一长度或类型字段;
在以太网的数据传输协议中,第一目的MAC地址字段、第一源MAC地址字段、第一长度或类型字段的定义和确定方法均为现有技术,此处不赘述。
第二封装信息确定子单元202,用于确定将所述第二数据封装为第二数据包所采用的第二目的MAC地址字段、第二源MAC地址字段、第二长度或类型字段;
同理,第二目的MAC地址字段、第二源MAC地址字段、第二长度或类型字段的定义和确定方法也为现有技术,不赘述。
第一确定子单元203,用于确定所述第三数据包的前导码字段、帧开始符字段;
前导码字段、帧开始符字段也是以太网数据传输协议中的帧格式中定义的字段。
第二确定子单元204,用于确定第一合并数据数目字段和第一长度指示字段,所述第一合并数据数目字段用于表示在所述第三数据包中添加的所述第二数据的数目,所述第一长度指示字段用于表示所述第一数据的长度;
第一合并数据数目字段和第一长度指示字段是本实施例中为了使接收装置能够从第三数据包中拆分出第一数据所新增的字段。
第一添加子单元205,用于将所述第一目的MAC地址字段、第一源MAC地址字段、第一长度或类型字段、第一合并数据数目字段、第一长度指示字段和所述第一数据添加在所述帧开始符字段之后;
第三确定子单元206,用于确定第二合并数据数目字段和第二长度指示字段,所述第二合并数据数目字段用于表示在所述第二数据中添加的另外的数据的数目,所述第二长度指示字段用于表示所述第二数据的长度;
第二合并数据数目字段和第二长度指示字段是本实施例中为了使接收装置能够从第三数据包中拆分出第二数据所新增的字段。
第二添加子单元207,用于将所述第二目的MAC地址字段、第二源MAC地址字段、第二长度或类型字段、第二合并数据数目字段、第二长度指示字段和所述第二数据添加在所述第一数据之后;
帧校验序列字段生成子单元208,用于根据所述前导码字段、帧开始符字段、第一目的MAC地址字段、第一源MAC地址字段、第一长度或类型字段、第一合并数据数目字段、第一长度指示字段、所述第一数据、第二目的MAC地址字段、第二源MAC地址字段、第二长度或类型字段、第二合并数据数目字段、第二长度指示字段和所述第二数据生成帧校验序列字段。
发送单元109,用于将所述第三数据包发送至所述物理地址对应的第二装置。
本实施例中,通过在以太网帧格式的基础上增加第一合并数据数目字段和第一长度指示字段和第二合并数据数目字段和第二长度指示字段,可以确保接收装置能够从第三数据包中拆分出第一数据和第二数据。
图3为现有技术中采用以太网帧格式的数据包的结构示意图。如图3所示,该格式的数据包包括:7个字节的前导码字段,1个字节的帧开始符字段,6个字节的目的MAC地址字段,6个字节的源MAC地址字段,2个字节的类型/长度字段,46至1500字节的数据和填充字段,4个字节的帧校验序列字段。
图4为本发明实施例中提供的基于以太网帧格式的数据包的一种结构示意图。如图4所示,本发明实施例在现有技术中的以太网帧格式的数据包结构中,增加了两个新的字段:合并数据数目字段和长度指示字段。合并数据数目字段用于表示在所述第三数据包中添加的所述第二数据的数目,所述长度指示字段用于表示位于所述长度指示字段后面的数据和填充字段中添加的首个数据的长度。在图4中,合并数据数目字段和长度指示字段各占2个字节,共占4个字节。这4个字节相当于占用的数据和填充字段的字节。在图4中,第二数据可以使用的字节数就可以是42至1496字节。
图5为本发明实施例中的封装有第一数据和第二数据的数据包的一种结构示意图。如图5所示,所述第一合并数据数目为1,表示所述数据包中添加有两个数据。所述第一长度指示字段所指示的长度,就是所述第一数据的长度。根据第一长度指示字段的值,可以使接收装置从所述数据包中拆分出所述第一数据。
所述第一数据后面添加有与第二数据相关的封装信息。与第二数据相关的封装信息,包括:第二目的MAC地址字段、第二源MAC地址字段、第二长度或类型字段、第二合并数据数目字段和第二长度指示字段。图5中,第二合并数据数目字段的值为0,表示后面没有再添加另外的数据,只添加了一个第二数据。所述第二长度指示字段所指示的长度,就是所述第二数据的长度。根据第二长度指示字段的值,可以使接收装置从所述数据包中拆分出所述第二数据。
本领域技术人员根据以上内容,可以知道,采用本发明的实施例,还可以在第三数据包中封装更多个数的数据。
图6为本发明实施例中的封装有第一数据、第二数据和第三数据的数据包的一种结构示意图。如图6所示,在第二数据的后面还可以添加第三目的MAC地址字段,第三源MAC地址字段、第三长度或类型字段、第三合并数据数目字段和第三长度指示字段。在第三长度指示字段的后面可以添加第三数据。
需要说明的是,在传输过程中,数据传输装置会将第三数据包中的第一个类型/长度字段与帧校验序列字段之间的数据均认定为以太网帧格式中的数据和填充字段所对应的数据。由于第一个类型/长度字段与帧校验序列字段之间添加了第二数据以及和第二数据有关的其他信息,所以第一个类型/长度字段与帧校验序列字段之间的数据长度,可以满足以太网帧格式中对于数据和填充字段的数据长度的要求。
图7为本发明实施例中的一种数据传输过程的示意图。如图7所示,图中有4个终端器件和1个交换器件。
终端器件1发送两个小包数据1->3(数据1->3表示该数据需要从终端器件1发送至终端器件3,下述数据后的数字表示的含义与此类似)和数据1->4,目的地分别为终端器件3和终端器件4;终端器件2发送两个小包数据2->3和数据2->4,目的地分别为终端器件3和终端器件4。
终端器件1发送的两个包虽然目的地不同,一个包是发给终端器件3,另一个包是给终端器件4,但从终端器件1到交换器件时经过相同的物理连接,在终端器件1发送时进行合并(即封装为一个第三数据包),在交换器件收到后解合并(即从第三数据包中拆分出第一数据和第二数据)。同样终端器件2发送的两个小包在与交换器件的连接中,也经过一次合并和解合并。
在交换器件发往终端器件3时会有两个小包,分别是数据1->3和数据2->3,这样交换器件发送时会将两个小包合并后发出,在终端器件3收到后,再进行一次解合并,恢复出原始包。同样交换器件发往终端器件4的小包也经过一次合并和解合并。
本申请还提供了一种数据传输方法。图8为本申请的数据传输方法实施例的流程图。如图8所示,该方法可以包括:
步骤801:第一装置获取所述第一装置内部的程序生成的第一数据;
步骤802:确定所述第一数据的长度;
步骤803:判断所述长度是否小于预设阈值,得到第一判断结果;
步骤804:当所述第一判断结果为是时,在预设时间内获取所述第一装置内部的程序生成的另外的数据;
步骤805:从所述另外的数据中,确定与所述第一数据在链路层中的下一跳的目的地址相同的第二数据;
步骤806:确定将所述第一数据封装为第一数据包所采用的第一封装信息;
步骤807:确定将所述第二数据封装为第二数据包所采用的第二封装信息;
步骤808:根据所述第一封装信息以及所述第二封装信息将所述第一数据与所述第二数据封装为一个第三数据包;
步骤809:将所述第三数据包发送至所述目的地址对应的第二装置。
综上所述,本实施例通过确定所述第一数据的长度;判断所述长度是否小于预设阈值,得到第一判断结果;当所述第一判断结果为是时,在预设时间内获取所述第一装置内部的程序生成的与所述第一数据在链路层中的下一跳的物理地址相同的第二数据,将所述第一数据与所述第二数据封装为一个第三数据包,可以在单位时间内需要传输的第一数据的长度小于数据传输协议中规定的最小长度时,将第一数据与第二数据封装在一个数据包中进行发送,从而减小数据传输过程所消耗的数据流量,提高数据传输效率。
实际应用中,所述在预设时间内获取另外的数据包,具体可以包括:
缓存所述第一数据;
对所述第一数据的缓存时间进行计时;
获取另外的数据;
当计时时间达到预设时长时,停止获取另外的数据。
实际应用中,所述确定所述第一数据的长度之前,还可以包括:
获取所述第二装置的能力信息;
确定所述能力信息表示所述第二装置支持从所述第三数据包中拆分出所述第一数据和所述第二数据。
实际应用中,所述获取所述第二装置的能力信息,具体可以包括:
获取所述第一数据在链路层中的下一跳的目的地址;
在预先存储的能力信息记录中,查找所述目的地址对应的第二装置的能力信息。
实际应用中,所述确定所述第一数据的长度之前,还可以包括:
获取所述第一数据包中的封装类型信息;
确定所述封装类型信息表示所述第一数据需要与另外的数据合并封装。
实际应用中,所述确定将所述第一数据封装为第一数据包所采用的第一封装信息,具体可以包括:
确定将所述第一数据封装为第一数据包所采用的第一目的MAC地址字段、第一源MAC地址字段、第一长度或类型字段;
所述确定将所述第二数据封装为第二数据包所采用的第二封装信息,具体包括:
确定将所述第二数据封装为第二数据包所采用的第二目的MAC地址字段、第二源MAC地址字段、第二长度或类型字段;
相应的,所述根据所述第一封装信息以及所述第二封装信息将所述第一数据与所述第二数据封装为一个第三数据包,具体包括:
确定所述第三数据包的前导码字段、帧开始符字段;
确定第一合并数据数目字段和第一长度指示字段,所述第一合并数据数目字段用于表示在所述第三数据包中添加的所述第二数据的数目,所述第一长度指示字段用于表示所述第一数据的长度;
将所述第一目的MAC地址字段、第一源MAC地址字段、第一长度或类型字段、第一合并数据数目字段、第一长度指示字段和所述第一数据添加在所述帧开始符字段之后;
确定第二合并数据数目字段和第二长度指示字段,所述第二合并数据数目字段用于表示在所述第二数据中添加的另外的数据的数目,所述第二长度指示字段用于表示所述第二数据的长度;
将所述第二目的MAC地址字段、第二源MAC地址字段、第二长度或类型字段、第二合并数据数目字段、第二长度指示字段和所述第二数据添加在所述第一数据之后;
根据所述前导码字段、帧开始符字段、第一目的MAC地址字段、第一源MAC地址字段、第一长度或类型字段、第一合并数据数目字段、第一长度指示字段、所述第一数据、第二目的MAC地址字段、第二源MAC地址字段、第二长度或类型字段、第二合并数据数目字段、第二长度指示字段和所述第二数据生成帧校验序列字段。
实际应用中,所述获取所述第一装置内部的程序生成的第一数据之前,还可以包括:
接收外部装置传入的数据包;
所述获取所述第一装置内部的程序生成的第一数据,具体包括:
获取所述第一装置内部的数据包拆分程序从所述数据包中拆分出的所述第一数据。
另外,本申请实施例还提供了一种计算节点,计算节点可能是包含计算能力的主机服务器,或者是个人计算机PC,或者是可携带的便携式计算机或终端等等,本申请具体实施例并不对计算节点的具体实现做限定。
图9为本申请的计算节点的结构图。如图9所示,计算节点700包括:
处理器(processor)710,通信接口(Communications Interface)720,存储器(memory)730,总线740。
处理器710,通信接口720,存储器730通过总线740完成相互间的通信。
处理器710,用于执行程序732。
具体地,程序732可以包括程序代码,所述程序代码包括计算机操作指令。
处理器710可能是一个中央处理器CPU,或者是特定集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本申请实施例的一个或多个集成电路。
存储器730,用于存放程序732。存储器730可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。程序732具体可以包括图1-图2所示实施例中的相应模块或单元,在此不赘述。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的方法而言,由于其与实施例公开的装置相对应,所以描述的比较简单,相关之处参见装置部分说明即可。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本申请的限制。
Claims (14)
1.一种数据传输装置,所述数据传输装置为第一装置,其特征在于,包括:
第一获取单元,用于获取所述第一装置内部的程序生成的第一数据;
第一数据长度确定单元,用于确定所述第一数据的长度;
判断单元,用于判断所述长度是否小于预设阈值,得到第一判断结果;
第二获取单元,用于当所述第一判断结果为是时,在预设时间内获取所述第一装置内部的程序生成的另外的数据;
第二数据确定单元,用于从所述另外的数据中,确定与所述第一数据在链路层中的下一跳的物理地址相同的第二数据;
第一封装信息确定单元,用于确定将所述第一数据封装为第一数据包所采用的第一封装信息;
第二封装信息确定单元,用于确定将所述第二数据封装为第二数据包所采用的第二封装信息;
封装单元,用于根据所述第一封装信息以及所述第二封装信息将所述第一数据与所述第二数据封装为一个第三数据包;
发送单元,用于将所述第三数据包发送至所述物理地址对应的第二装置。
2.根据权利要求1所述的装置,其特征在于,所述第二获取单元,具体包括:
缓存子单元,用于缓存所述第一数据;
计时子单元,用于对所述第一数据的缓存时间进行计时;
获取子单元,用于获取另外的数据;
停止子单元,用于当计时时间达到预设时长时,停止获取另外的数据。
3.根据权利要求1所述的装置,其特征在于,还包括:
能力信息获取单元,用于在确定所述第一数据的长度之前,获取所述第二装置的能力信息;
能力信息确定单元,用于确定所述能力信息表示所述第二装置支持从所述第三数据包中拆分出所述第一数据和所述第二数据。
4.根据权利要求3所述的装置,其特征在于,所述能力信息获取单元,具体包括:
物理地址获取子单元,用于获取所述第一数据在链路层中的下一跳的物理地址;
能力信息查找子单元,用于在预先存储的能力信息记录中,查找所述物理地址对应的第二装置的能力信息。
5.根据权利要求1所述的装置,其特征在于,还包括:
封装类型信息获取单元,用于在确定所述第一数据的长度之前,获取所述第一数据中的封装类型信息;
封装类型信息确定单元,用于确定所述信息表示所述第一数据需要与另外的数据合并封装。
6.根据权利要求1-5任一项所述的装置,其特征在于,所述第一封装信息确定单元,具体包括:
第一封装信息确定子单元,用于确定将所述第一数据封装为第一数据包所采用的第一目的MAC地址字段、第一源MAC地址字段、第一长度或类型字段;
所述第二封装信息确定单元,具体包括:
第二封装信息确定子单元,用于确定将所述第二数据封装为第二数据包所采用的第二目的MAC地址字段、第二源MAC地址字段、第二长度或类型字段;
相应的,所述封装单元,具体包括:
第一确定子单元,用于确定所述第三数据包的前导码字段、帧开始符字段;
第二确定子单元,用于确定第一合并数据数目字段和第一长度指示字段,所述第一合并数据数目字段用于表示在所述第三数据包中添加的所述第二数据的数目,所述第一长度指示字段用于表示所述第一数据的长度;
第一添加子单元,用于将所述第一目的MAC地址字段、第一源MAC地址字段、第一长度或类型字段、第一合并数据数目字段、第一长度指示字段和所述第一数据添加在所述帧开始符字段之后;
第三确定子单元,用于确定第二合并数据数目字段和第二长度指示字段,所述第二合并数据数目字段用于表示在所述第二数据中添加的另外的数据的数目,所述第二长度指示字段用于表示所述第二数据的长度;
第二添加子单元,用于将所述第二目的MAC地址字段、第二源MAC地址字段、第二长度或类型字段、第二合并数据数目字段、第二长度指示字段和所述第二数据添加在所述第一数据之后;
帧校验序列字段生成子单元,用于根据所述前导码字段、帧开始符字段、第一目的MAC地址字段、第一源MAC地址字段、第一长度或类型字段、第一合并数据数目字段、第一长度指示字段、所述第一数据、第二目的MAC地址字段、第二源MAC地址字段、第二长度或类型字段、第二合并数据数目字段、第二长度指示字段和所述第二数据生成帧校验序列字段。
7.根据权利要求1所述的装置,其特征在于,还包括:
数据包接收单元,用于在获取所述第一装置内部的程序生成的第一数据之前,接收外部装置传入的数据包;
所述第一获取单元,具体包括:
第一获取子单元,用于获取所述第一装置内部的数据包拆分程序从所述数据包中拆分出的所述第一数据。
8.一种数据传输方法,其特征在于,包括:
第一装置获取所述第一装置内部的程序生成的第一数据;
确定所述第一数据的长度;
判断所述长度是否小于预设阈值,得到第一判断结果;
当所述第一判断结果为是时,在预设时间内获取所述第一装置内部的程序生成的另外的数据;
从所述另外的数据中,确定与所述第一数据在链路层中的下一跳的目的地址相同的第二数据;
确定将所述第一数据封装为第一数据包所采用的第一封装信息;
确定将所述第二数据封装为第二数据包所采用的第二封装信息;
根据所述第一封装信息以及所述第二封装信息将所述第一数据与所述第二数据封装为一个第三数据包;
将所述第三数据包发送至所述目的地址对应的第二装置。
9.根据权利要求8所述的方法,其特征在于,所述在预设时间内获取另外的数据包,具体包括:
缓存所述第一数据;
对所述第一数据的缓存时间进行计时;
获取另外的数据;
当计时时间达到预设时长时,停止获取另外的数据。
10.根据权利要求8所述的方法,其特征在于,所述确定所述第一数据的长度之前,还包括:
获取所述第二装置的能力信息;
确定所述能力信息表示所述第二装置支持从所述第三数据包中拆分出所述第一数据和所述第二数据。
11.根据权利要求10所述的方法,其特征在于,所述获取所述第二装置的能力信息,具体包括:
获取所述第一数据在链路层中的下一跳的目的地址;
在预先存储的能力信息记录中,查找所述目的地址对应的第二装置的能力信息。
12.根据权利要求8所述的方法,其特征在于,所述确定所述第一数据的长度之前,还包括:
获取所述第一数据包中的封装类型信息;
确定所述封装类型信息表示所述第一数据需要与另外的数据合并封装。
13.根据权利要求8-12任一项所述的方法,其特征在于,所述确定将所述第一数据封装为第一数据包所采用的第一封装信息,具体包括:
确定将所述第一数据封装为第一数据包所采用的第一目的MAC地址字段、第一源MAC地址字段、第一长度或类型字段;
所述确定将所述第二数据封装为第二数据包所采用的第二封装信息,具体包括:
确定将所述第二数据封装为第二数据包所采用的第二目的MAC地址字段、第二源MAC地址字段、第二长度或类型字段;
相应的,所述根据所述第一封装信息以及所述第二封装信息将所述第一数据与所述第二数据封装为一个第三数据包,具体包括:
确定所述第三数据包的前导码字段、帧开始符字段;
确定第一合并数据数目字段和第一长度指示字段,所述第一合并数据数目字段用于表示在所述第三数据包中添加的所述第二数据的数目,所述第一长度指示字段用于表示所述第一数据的长度;
将所述第一目的MAC地址字段、第一源MAC地址字段、第一长度或类型字段、第一合并数据数目字段、第一长度指示字段和所述第一数据添加在所述帧开始符字段之后;
确定第二合并数据数目字段和第二长度指示字段,所述第二合并数据数目字段用于表示在所述第二数据中添加的另外的数据的数目,所述第二长度指示字段用于表示所述第二数据的长度;
将所述第二目的MAC地址字段、第二源MAC地址字段、第二长度或类型字段、第二合并数据数目字段、第二长度指示字段和所述第二数据添加在所述第一数据之后;
根据所述前导码字段、帧开始符字段、第一目的MAC地址字段、第一源MAC地址字段、第一长度或类型字段、第一合并数据数目字段、第一长度指示字段、所述第一数据、第二目的MAC地址字段、第二源MAC地址字段、第二长度或类型字段、第二合并数据数目字段、第二长度指示字段和所述第二数据生成帧校验序列字段。
14.根据权利要求8所述的方法,其特征在于,所述获取所述第一装置内部的程序生成的第一数据之前,还包括:
接收外部装置传入的数据包;
所述获取所述第一装置内部的程序生成的第一数据,具体包括:
获取所述第一装置内部的数据包拆分程序从所述数据包中拆分出的所述第一数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310747064.3A CN103746945B (zh) | 2013-12-30 | 2013-12-30 | 一种数据传输装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310747064.3A CN103746945B (zh) | 2013-12-30 | 2013-12-30 | 一种数据传输装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103746945A true CN103746945A (zh) | 2014-04-23 |
CN103746945B CN103746945B (zh) | 2017-06-27 |
Family
ID=50503934
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310747064.3A Active CN103746945B (zh) | 2013-12-30 | 2013-12-30 | 一种数据传输装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103746945B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016061985A1 (zh) * | 2014-10-24 | 2016-04-28 | 中兴通讯股份有限公司 | 报文处理方法、装置及系统 |
CN107294569A (zh) * | 2016-03-30 | 2017-10-24 | 景略半导体(上海)有限公司 | 多天线传输、单天线发射、及全方位无线接收系统和方法 |
CN107332860A (zh) * | 2017-08-10 | 2017-11-07 | 上海梁维贸易有限公司 | 一种数据传输方法及存储介质 |
CN107896211A (zh) * | 2017-11-15 | 2018-04-10 | 深圳市沃特沃德股份有限公司 | 数据生成方法和装置以及数据解析方法和装置 |
CN110856218A (zh) * | 2018-08-21 | 2020-02-28 | 联发科技股份有限公司 | 数据封装方法与通信装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1319300A (zh) * | 1999-05-27 | 2001-10-24 | 三星电子株式会社 | 移动通信系统中按照无线电链路协议发送可变长度数据的装置和方法 |
US20050163141A1 (en) * | 2003-01-20 | 2005-07-28 | Fujitsu Limited | Network switching device and method using shared buffer |
CN101150497A (zh) * | 2006-09-20 | 2008-03-26 | 华为技术有限公司 | 移动通信中多数据包传输的方法、系统及设备 |
CN101312428A (zh) * | 2007-05-25 | 2008-11-26 | 中国移动通信集团公司 | 语音包发送、接收方法、媒体网关及移动交换中心服务器 |
-
2013
- 2013-12-30 CN CN201310747064.3A patent/CN103746945B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1319300A (zh) * | 1999-05-27 | 2001-10-24 | 三星电子株式会社 | 移动通信系统中按照无线电链路协议发送可变长度数据的装置和方法 |
US20050163141A1 (en) * | 2003-01-20 | 2005-07-28 | Fujitsu Limited | Network switching device and method using shared buffer |
CN101150497A (zh) * | 2006-09-20 | 2008-03-26 | 华为技术有限公司 | 移动通信中多数据包传输的方法、系统及设备 |
CN101312428A (zh) * | 2007-05-25 | 2008-11-26 | 中国移动通信集团公司 | 语音包发送、接收方法、媒体网关及移动交换中心服务器 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016061985A1 (zh) * | 2014-10-24 | 2016-04-28 | 中兴通讯股份有限公司 | 报文处理方法、装置及系统 |
CN107294569A (zh) * | 2016-03-30 | 2017-10-24 | 景略半导体(上海)有限公司 | 多天线传输、单天线发射、及全方位无线接收系统和方法 |
CN107294569B (zh) * | 2016-03-30 | 2022-03-15 | 景略半导体(上海)有限公司 | 多天线传输、单天线发射、及全方位无线接收系统和方法 |
CN107332860A (zh) * | 2017-08-10 | 2017-11-07 | 上海梁维贸易有限公司 | 一种数据传输方法及存储介质 |
CN107332860B (zh) * | 2017-08-10 | 2020-08-28 | 上海梁维贸易有限公司 | 一种数据传输方法及存储介质 |
CN107896211A (zh) * | 2017-11-15 | 2018-04-10 | 深圳市沃特沃德股份有限公司 | 数据生成方法和装置以及数据解析方法和装置 |
CN110856218A (zh) * | 2018-08-21 | 2020-02-28 | 联发科技股份有限公司 | 数据封装方法与通信装置 |
CN110856218B (zh) * | 2018-08-21 | 2023-04-21 | 联发科技股份有限公司 | 数据封装方法与通信装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103746945B (zh) | 2017-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108965484B (zh) | 一种物联网数据的传输方法、系统及终端 | |
CN106664290B (zh) | 一种光电混合网络的数据传输方法及装置 | |
CN103746945A (zh) | 一种数据传输装置及方法 | |
CN102480462B (zh) | 通用协议适配方法及装置 | |
CN110061914B (zh) | 一种报文转发方法及装置 | |
CN106489136A (zh) | 用于在可扩展存储器系统协议中调节包传输的系统及方法 | |
CN111327687B (zh) | 一种数据传输方法、装置、电子设备及存储介质 | |
CN105721318A (zh) | 一种软件定义网络sdn中发现网络拓扑的方法和装置 | |
CN106878164A (zh) | 一种报文传输方法和装置 | |
CN113287329B (zh) | 一种数据传输的方法及装置 | |
CN102255800B (zh) | Can总线上ip数据包和can消息之间数据格式相互转换的方法 | |
CN104660462A (zh) | 一种万兆以太网测试设备的组包系统及方法 | |
CN105099919A (zh) | 报文处理方法及装置 | |
CN109995548B (zh) | 设备管理方法、系统和数据传输方法、系统及终端设备 | |
CN101042424A (zh) | 一种检测专用集成电路的方法及装置 | |
CN109286564B (zh) | 一种报文转发方法及装置 | |
CN104348728A (zh) | 生成转发信息的方法及设备 | |
CN112787955A (zh) | Mac层数据报文的处理方法、设备和存储介质 | |
CN106452695A (zh) | 冗余报文处理方法、装置及系统 | |
CN115550442A (zh) | 数据包传输方法、装置、电子设备及存储介质 | |
CN106230740A (zh) | 一种vxlan中的报文转发方法及装置 | |
CN106603415A (zh) | 数据处理方法及装置 | |
CN106850386B (zh) | 报文处理方法和设备 | |
CN115174439B (zh) | 多协议标签交换通道的验证方法、装置和存储介质 | |
CN103841209A (zh) | 数据发送处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |