分片的发送方法、接收方法和对应装置

文档序号:195723 发布日期:2021-11-02 浏览:34次 >En<

阅读说明:本技术 分片的发送方法、接收方法和对应装置 (Fragment sending method, receiving method and corresponding devices ) 是由 谢磊 王晶晶 于 2021-09-28 设计创作,主要内容包括:本申请提供了一种分片的发送方法、接收方法和对应装置,其中,在分片的发送方法中,获取待发送报文的第一分片。然后向报文接收端发送待发送报文的第一分片。从第一分片之后的待发送报文,获取得到第一分片之后的每一个分片并发送每一个分片。利用本申请的方法,在发送报文时,从报文头的起始地址开始,获取一个预设分片长度的分片发送出去,然后发送后续的每一个分片时,都将前一个分片的的结束地址向前偏移预设分片头长度的报文修改为当前要发送的分片的分片头,再进行发送。这样就可以复用原始报文的内存空间发送每一个分片,不需要从原始报文拷贝需要发送的报文并添加报文头后再进行发送。(The application provides a fragment sending method, a fragment receiving method and a corresponding device, wherein in the fragment sending method, a first fragment of a message to be sent is obtained. And then sending the first fragment of the message to be sent to a message receiving end. And acquiring each fragment after the first fragment from the message to be sent after the first fragment and sending each fragment. When the method is used for sending the message, the fragment with the preset fragment length is obtained from the initial address of the message header and sent out, then when each subsequent fragment is sent, the message with the preset fragment header length and the forward deviation of the ending address of the previous fragment is modified into the fragment header of the current fragment to be sent, and then the message is sent. Therefore, each fragment can be transmitted by multiplexing the memory space of the original message without copying the message to be transmitted from the original message and adding the message header to the message to be transmitted.)

分片的发送方法、接收方法和对应装置

技术领域

本发明涉及报文处理技术领域,尤其涉及一种分片的发送方法、接收方法和对应装置。

背景技术

目前,在网络传输中,发送端发送大报文时,一般会对大报文进行分片,将分片发送出去,并在接收端接收到分片后进行重组恢复。

因为原始报文是连续内存段,分片报文需要添加额外分片头信息,所以在分片发送的时候,都需要针对每个分片,从原始报文拷贝一次信息并添加到报文头。同时,接收端为了重组报文,也需要将收到的分片去掉分片报文头,再拷贝到一段连续大内存中。

在报文传输过程中,发送端和接收端都需要对报文进行拷贝,这对传输性能有较大影响。

发明内容

有鉴于此,本申请提供一种分片的发送方法、接收方法和对应装置,以解决现有技术中在报文传输过程中发送端和接收端都需要对报文进行拷贝,对传输性能有较大影响的问题。

为实现上述目的,本申请提供如下技术方案:

本申请第一方面公开了一种分片的发送方法,应用于报文发送端,所述分片的发送方法,包括:

获取待发送报文的第一分片;其中,所述第一分片的起始地址为所述待发送报文的报文头地址,长度为预设分片长度;

向报文接收端发送所述待发送报文的第一分片;

从所述第一分片之后的待发送报文,获取得到所述第一分片之后的每一个分片,并向报文接收端发送所述每一个分片;其中,所述每一个分片的分片头为:前一分片的结束地址向前偏移预设分片头长度的报文,长度为所述预设分片头长度。

可选的,上述的方法,所述从第一分片之后的待发送报文,获取得到所述第一分片之后的每一个分片的方法,包括:

确定前一分片的结束地址向前偏移预设分片头长度的报文,并备份确定出的报文;

从所述第一分片之后的待发送报文中,获取起始地址为所述备份的报文的起始地址,长度为所述预设分片长度的报文。

可选的,上述的方法,在所述第一分片之后的每一个分片发送之后,还包括:

恢复所述备份的前一分片的结束地址向前偏移预设分片头长度的报文。

本申请第二方面公开了一种分片的接收方法,应用于报文接收端,所述分片的接收方法,包括:

接收到待接收报文的第一分片时,保存所述第一分片和所述第一分片的分片头;

在接收到所述第一分片之后的每一个分片时,备份前一个分片的结束地址向前偏移预设分片头长度的报文;

将接收到的所述第一分片之后的每一个分片,与前一分片进行拼接,并恢复所述备份的前一分片的结束地址向前偏移预设分片头长度的报文;其中,所述每一个分片与前一分片进行拼接的位置为:前一分片的结束地址向前偏移预设分片头长度的地址。

可选的,上述的方法,所述接收到第一分片之后,还包括:

读取所述第一分片的分片头的数据,确定所述第一分片对应的完整报文的大小,并分配可储存所述完整报文的内存空间。

本申请第三方面公开了一种分片的发送装置,包括:

第一获取单元,用于获取待发送报文的第一分片;其中,所述第一分片的起始地址为所述待发送报文的报文头地址,长度为预设分片长度;

第一发送单元,用于发送所述待发送报文的第一分片;

第二获取单元,用于从所述第一分片之后的待发送报文,获取得到所述第一分片之后的每一个分片;其中,所述每一个分片的分片头为:前一分片的结束地址向前偏移预设分片头长度的报文,长度为所述预设分片头长度;

第二发送单元,用于发送所述第二获取单元获取得到的每一个分片。

可选的,上述的装置,所述第二获取单元,包括:

确定子单元,用于确定前一分片的结束地址向前偏移预设分片头长度的报文,并备份确定出的报文;

获取子单元,用于从所述第一分片之后的待发送报文中,获取起始地址为所述备份的报文的起始地址,长度为所述预设分片长度的报文。

可选的,上述的装置,还包括:

恢复单元,用于恢复所述备份的前一分片的结束地址向前偏移预设分片头长度的报文。

本申请第四方面公开了一种分片的接收装置,包括:

存储单元,用于接收到待接收报文的第一分片时,保存所述第一分片和所述第一分片的分片头;

备份单元,用于在接收到所述第一分片之后的每一个分片时,备份前一个分片的结束地址向前偏移预设分片头长度的报文;

拼接单元,用于将接收到的所述第一分片之后的每一个分片,与前一分片进行拼接,并恢复所述备份的前一分片的结束地址向前偏移预设分片头长度的报文;其中,所述每一个分片与前一分片进行拼接的位置为:前一分片的结束地址向前偏移预设分片头长度的地址。

可选的,上述的装置,还包括:

分配单元,用于读取所述第一分片的分片头的数据,确定所述第一分片对应的完整报文的大小,并分配可储存所述完整报文的内存空间。

本申请第五方面公开了一种电子设备,包括:

一个或多个处理器;

存储装置,其上存储有一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如第一方面和第二方面中任意一项所述的方法。

本申请第六方面公开了一种计算机存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如第一方面和第二方面中任意一项所述的方法。

从上述技术方案可以看出,本申请提供的一种分片的发送方法中,获取待发送报文的第一分片;其中,第一分片的起始地址为待发送报文的报文头地址,长度为预设分片长度。然后向报文接收端发送待发送报文的第一分片。从第一分片之后的待发送报文,获取得到第一分片之后的每一个分片并发送每一个分片。其中,每一个分片的分片头为:前一分片的结束地址向前偏移预设分片头长度的报文,长度为预设分片头长度。由此可知,利用本申请的方法,在发送报文时,从报文头的起始地址开始,获取一个预设分片长度的分片发送出去,然后发送后续的每一个分片时,都将前一个分片的的结束地址向前偏移预设分片头长度的报文修改为当前要发送的分片的分片头,再进行发送。这样就可以复用原始报文的内存空间发送每一个分片,不需要从原始报文拷贝需要发送的报文并添加报文头后再进行发送,并且分片头直接采用结构体赋值,从而实现了分片报文的零拷贝。解决了现有技术中在报文传输过程中需要对报文进行拷贝,对传输性能有较大影响的问题。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例公开的一种分片的发送方法的方法流程图;

图2为本申请另一实施例公开的报文发送的示意图;

图3为本申请另一实施例公开的一种分片的接收方法的方法流程图;

图4为本申请另一实施例公开的报文接收的示意图;

图5为本申请另一实施例公开的一种分片的发送装置的示意图;

图6为本申请另一实施例公开的一种分片的接收装置的示意图;

图7为本申请另一实施例公开的一种电子设备的示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

并且,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。

由背景技术可知,因为原始报文是连续内存段,分片报文需要添加额外分片头信息,所以在分片发送的时候,都需要针对每个分片,从原始报文拷贝一次信息并添加到报文头。同时,接收端为了重组报文,也需要将收到的分片去掉分片报文头,再拷贝到一段连续大内存中。因此在报文传输过程中,发送端和接收端都需要对报文进行拷贝,这对传输性能有较大影响。

鉴于此,本申请提供一种分片的发送方法、接收方法和对应装置,以解决现有技术中在报文传输过程中发送端和接收端都需要对报文进行拷贝,对传输性能有较大影响的问题。

本申请实施例公开了一种分片的发送方法,应用于报文发送端,如图1所示,具体包括:

S101、获取待发送报文的第一分片;其中,第一分片的起始地址为待发送报文的报文头地址,长度为预设分片长度。

需要说明的是,在对待发送报文进行分片发送时,首先获取待发送报文的第一分片,其中,该第一分片的起始地址为待发送报文的报文头地址,长度为预设的分片长度。具体获取分片的过程可参考图2,根据预设的分片长度,从待发送报文的报文头的起始地址开始,向后截取预设分片长度的报文,即为第一分片。

S102、向报文接收端发送待发送报文的第一分片。

需要说明的是,在获取到待发送报文的第一分片之后,则直接在待发送报文的内存空间的基础上向报文接收端发送待发送报文的第一分片。

S103、从第一分片之后的待发送报文,获取得到第一分片之后的每一个分片,并向报文接收端发送每一个分片;其中,每一个分片的分片头为:前一分片的结束地址向前偏移预设分片头长度的报文,长度为预设分片头长度。

需要说明的是,在发送待发送报文的第一个分片之后,继续从待发送报文中获取第一分片之后的每一个分片,首先确定每一个分片的分片头,具体的,每一个分片的分片头为:前一分片的结束地址向前偏移预设分片头长度的报文,长度为预设分片头长度。因为分片头一般不到32字节,直接采用结构体赋值,从而实现了分片报文的零拷贝。确定出每一个分片的分片头之后,从每一个分片的分片头的起始地址开始,获取预设分片长度的报文,生成新的分片,由此获取得到第一分片之后的每一个分片。并且,在每获取到一个分片之后,则直接在待发送报文的内存空间的基础上将获取到的每一个分片向报文接收端进行发送。

因此,利用本申请的方法可直接复用原始报文内存空间进行分片发送,不需要拷贝待发送报文的数据,再添加分片头信息才生成各个分片头,再对各个分片头进行发送。

可选的,在本申请另一实施例中,步骤S103中从第一分片之后的待发送报文,获取得到第一分片之后的每一个分片的方法的一种实施方式,可以包括:

确定前一分片的结束地址向前偏移预设分片头长度的报文,并备份确定出的报文。

从第一分片之后的待发送报文中,获取起始地址为备份的报文的起始地址,长度为预设分片长度的报文。

需要说明的是,其从第一分片之后的待发送报文,获取得到第一分片之后的每一个分片的具体过程同样参考图2,首先确定前一个分片的结束地址,然后在前一个分片的结束地址的基础上向前偏移一个预设分片头的长度,即报文头的长度,确定出该部分的报文,并备份该部分的报文,以便保存待发送报文的原始数据。然后将该部分的报文修改为当前分片的分片头的数据,生成当前分片的分片头。从每一个分片的分片头的起始地址开始,获取预设分片长度的报文,从而第一分片之后的每一个分片。

可选的,在本申请另一实施例中,在将第一分片之后的每一个分片发送之后,还可以包括:

恢复备份的前一分片的结束地址向前偏移预设分片头长度的报文。

需要说明的是,在将第一分片之后的每一个分片向报文接收端进行发送之后,则将已经备份的当前发送的分片的前一分片的结束地址向前偏移预设分片头长度的报文进行数据恢复,还原待发送报文的原始数据。

本申请实施例提供的一种分片的发送方法中,获取待发送报文的第一分片;其中,第一分片的起始地址为待发送报文的报文头地址,长度为预设分片长度。然后向报文接收端发送待发送报文的第一分片。从第一分片之后的待发送报文,获取得到第一分片之后的每一个分片并发送每一个分片。其中,每一个分片的分片头为:前一分片的结束地址向前偏移预设分片头长度的报文,长度为预设分片头长度。由此可知,利用本申请的方法,在发送报文时,从报文头的起始地址开始,获取一个预设分片长度的分片发送出去,然后发送后续的每一个分片时,都将前一个分片的的结束地址向前偏移预设分片头长度的报文修改为当前要发送的分片的分片头,再进行发送。这样就可以复用原始报文的内存空间发送每一个分片,不需要从原始报文拷贝需要发送的报文并添加报文头后再进行发送,并且分片头直接采用结构体赋值,从而实现了分片报文的零拷贝。解决了现有技术中在报文发送过程中需要对报文进行拷贝,对传输性能有较大影响的问题。

本申请另一实施例还提供了一种分片的接收方法,应用于报文接收端,具体如图3所示,包括:

S301、接收到待接收报文的第一分片时,保存第一分片和第一分片的分片头。

需要说明的是,结合图4,在接收到待接收报文的第一分片时,则保存第一分片和第一分片的分片头,其中,将第一个分片的分片头保存为该第一分片对应的完整报文的报文头。

可选的,在本申请的另一实施例中,执行步骤S301之后,还可以包括:

读取第一分片的分片头的数据,确定第一分片对应的完整报文的大小,并分配可储存完整报文的内存空间。

需要说明的是,在接收到待接收报文的第一分片时,则读取第一分片的分片头的数据,从而确定第一分片对应的完整报文的大小,然后通过内存分配器分配一个可储存待接收报文的完整报文的内存空间,用于存储待接收报文。

S302、在接收到第一分片之后的每一个分片时,备份前一个分片的结束地址向前偏移预设分片头长度的报文。

需要说明的是,在接收到第一分片之后的每一个分片时,则备份前一个分片的结束地址向前偏移预设分片头长度的报文,以便在进行分片重组时恢复分片对应的完整报文的原始数据。

S303、将接收到的第一分片之后的每一个分片,与前一分片进行拼接,并恢复备份的前一分片的结束地址向前偏移预设分片头长度的报文;其中,每一个分片与前一分片进行拼接的位置为:前一分片的结束地址向前偏移预设分片头长度的地址。

需要说明的是,在接收第一分片之后的每一个分片时,都需要将接收到分片与前一分片进行拼接重组,每一个分片与前一分片进行拼接的位置为:前一分片的结束地址向前偏移预设分片头长度的地址。在拼接完成后,则在分片拼接的位置恢复已经备份的前一分片的结束地址向前偏移预设分片头长度的报文。直到接收到的每一个分片拼接完成并回复备份的报文之后,就可以得到待接收报文的完整报文。

本申请实施例提供的一种分片的接收方法中,接收到待接收报文的第一分片时,保存第一分片和第一分片的分片头。然后在接收到第一分片之后的每一个分片时,备份前一个分片的结束地址向前偏移预设分片头长度的报文。最后将接收到的第一分片之后的每一个分片,与前一分片进行拼接,并恢复备份的前一分片的结束地址向前偏移预设分片头长度的报文;其中,每一个分片与前一分片进行拼接的位置为:前一分片的结束地址向前偏移预设分片头长度的地址。由此可知,利用本申请的方法,在接收报文时,将接收到的第一分片的分片头作为整个对接收报文的报文头,并在接收第一分片之后每一个分片时,都备份前一分片的的结束地址向前偏移预设分片头长度的报文。然后在进行分片拼接后就恢复已备份的报文,最后重组得到完整报文。因为接收报文直接用重组报文的内存空间,且分片头直接采用结构体赋值,从而实现了零拷贝。解决了现有技术中在报文接收过程中需要对报文进行拷贝,对传输性能有较大影响的问题。

在本申请的另一实施例还公开了一种分片的发送装置,如图5所示,包括:

第一获取单元501,用于获取待发送报文的第一分片;其中,第一分片的起始地址为待发送报文的报文头地址,长度为预设分片长度;

第一发送单元502,用于发送待发送报文的第一分片。

第二获取单元503,用于从第一分片之后的待发送报文,获取得到第一分片之后的每一个分片;其中,每一个分片的分片头为:前一分片的结束地址向前偏移预设分片头长度的报文,长度为预设分片头长度。

第二发送单元504,用于发送第二获取单元获取得到的每一个分片。

本实施例中,第一获取单元501、第一发送单元502、第二获取单元503以及第二发送单元504的具体执行过程,可参见对应图1的方法实施例内容,此处不再赘述。

本申请实施例提供的一种分片的发送装置中,第一获取单元501获取待发送报文的第一分片;其中,第一分片的起始地址为待发送报文的报文头地址,长度为预设分片长度。然后第一发送单元502向报文接收端发送待发送报文的第一分片。从第一分片之后的待发送报文,第二获取单元503获取得到第一分片之后的每一个分,第二发送单元504发送每一个分片。其中,每一个分片的分片头为:前一分片的结束地址向前偏移预设分片头长度的报文,长度为预设分片头长度。由此可知,利用本申请的方法,在发送报文时,从报文头的起始地址开始,获取一个预设分片长度的分片发送出去,然后发送后续的每一个分片时,都将前一个分片的的结束地址向前偏移预设分片头长度的报文修改为当前要发送的分片的分片头,再进行发送。这样就可以复用原始报文的内存空间发送每一个分片,不需要从原始报文拷贝需要发送的报文并添加报文头后再进行发送,并且分片头直接采用结构体赋值,从而实现了分片报文的零拷贝。解决了现有技术中在报文发送过程中需要对报文进行拷贝,对传输性能有较大影响的问题。

可选的,在本申请的另一实施例中,第二获取单元503的一种实施方式,包括:

确定子单元,用于确定前一分片的结束地址向前偏移预设分片头长度的报文,并备份确定出的报文。

获取子单元,用于从第一分片之后的待发送报文中,获取起始地址为备份的报文的起始地址,长度为预设分片长度的报文。

本实施例中,确定子单元、获取子单元的具体执行过程,可参见上述对应的方法实施例内容,此处不再赘述。

可选的,在本申请的另一实施例中,上述分片的发送装置,还可以包括:

恢复单元,用于恢复备份的前一分片的结束地址向前偏移预设分片头长度的报文。

本实施例中,恢复单元的具体执行过程,可参见上述对应的方法实施例内容,此处不再赘述。

在本申请的另一实施例还公开了一种分片的接收装置,如图6所示,包括:

存储单元601,用于接收到待接收报文的第一分片时,保存第一分片和第一分片的分片头。

备份单元602,用于在接收到第一分片之后的每一个分片时,备份前一个分片的结束地址向前偏移预设分片头长度的报文。

拼接单元603,用于将接收到的第一分片之后的每一个分片,与前一分片进行拼接,并恢复备份的前一分片的结束地址向前偏移预设分片头长度的报文;其中,每一个分片与前一分片进行拼接的位置为:前一分片的结束地址向前偏移预设分片头长度的地址。

本实施例中,存储单元601、备份单元602以及拼接单元603的具体执行过程,可参见对应图3的方法实施例内容,此处不再赘述。

本申请实施例提供的一种分片的接收装置中,存储单元601接收到待接收报文的第一分片时,保存第一分片和第一分片的分片头。然后备份单元602在接收到第一分片之后的每一个分片时,备份前一个分片的结束地址向前偏移预设分片头长度的报文。最后拼接单元603将接收到的第一分片之后的每一个分片,与前一分片进行拼接,并恢复备份的前一分片的结束地址向前偏移预设分片头长度的报文;其中,每一个分片与前一分片进行拼接的位置为:前一分片的结束地址向前偏移预设分片头长度的地址。由此可知,利用本申请的方法,在接收报文时,将接收到的第一分片的分片头作为整个对接收报文的报文头,并在接收第一分片之后每一个分片时,都备份前一分片的的结束地址向前偏移预设分片头长度的报文。然后在进行分片拼接后就恢复已备份的报文,最后重组得到完整报文。因为接收报文直接用重组报文的内存空间,且分片头直接采用结构体赋值,从而实现了零拷贝。解决了现有技术中在报文接收过程中需要对报文进行拷贝,对传输性能有较大影响的问题。

可选的,在本申请的另一实施例中,上述分片的接收装置,还可以包括:

分配单元,用于读取第一分片的分片头的数据,确定第一分片对应的完整报文的大小,并分配可储存完整报文的内存空间。

本实施例中,分配单元的具体执行过程,可参见上述对应的方法实施例内容,此处不再赘述。

本申请另一实施例还提供了一种电子设备,如图7所示,具体包括:

一个或多个处理器701。

存储装置702,其上存储有一个或多个程序。

当一个或多个程序被一个或多个处理器701执行时,使得一个或多个处理器1301实现如上述实施例中任意一项方法。

本申请另一实施例还提供了计算机存储介质,其上存储有计算机程序,其中,计算机程序被处理器执行时实现如上述实施例中任意一项方法。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

14页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:深度学习的压缩感知大规模MIMO信道估计方法及系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!