数据报文的转发方法和装置制造方法及图纸

技术编号:13953661 阅读:83 留言:0更新日期:2016-11-02 09:44
本申请公开了数据报文的转发方法和装置。所述方法的一具体实施方式包括:接收数据报文,同时读取所述数据报文的首行数据内容的长度值;判断所述长度值是否小于或者等于传输控制协议一次所能传输的最大报文段长度;响应于所述长度值小于或者等于所述传输控制协议一次所能传输的最大报文段长度,对所述数据报文的数据以分片段的形式读取;响应于所述长度值大于所述传输控制协议一次所能传输的最大报文段长度,对所述数据报文的数据以分行的形式读取;将读取的数据存放在用户缓存区中,当所述用户缓存区中的数据达到预设容量阈值,将所述用户缓存区中的数据发送给终端。该实施方式实现了快速、高效的转发数据报文。

【技术实现步骤摘要】

本申请涉及计算机
,具体涉及互联网
,尤其涉及数据报文的转发方法和和装置。
技术介绍
数据报文,是通过一定的技术标准或协议,在互联网中用于交换与传输的数据单元。数据报文中包含了将要发送的完整的数据信息,其长短不一致,长度不限且可变。数据报文的高效转发可提高数据的传输速度,合理利用资源。然而,现有的数据报文的转发方式通常是在将数据报文全部读取完毕后再进行转发,使得终端处于空闲等待的时间过长,同时在读取数据报文时,不能很好的根据传输控制协议的长度合理的分配数据一次传输的长度,造成资源浪费,读取速度慢的问题。
技术实现思路
本申请的目的在于提出一种改进的数据报文的转发方法和装置,来解决以上
技术介绍
部分提到的技术问题。第一方面,本申请提供了一种数据报文的转发方法,所述方法包括:接收数据报文,同时读取所述数据报文的首行数据内容的长度值;判断所述长度值是否小于或者等于传输控制协议一次所能传输的最大报文段长度;响应于所述长度值小于或者等于所述传输控制协议一次所能传输的最大报文段长度,对所述数据报文的数据以分片段的形式读取;响应于所述长度值大于所述传输控制协议一次所能传输的最大报文段长度,对所述数据报文的数据以分行的形式读取;将读取的数据存放在用户缓存区中,当所述用户缓存区中的数据达到预设容量阈值,将所述用户缓存区中的数据发送给终端。在一些实施例中,所述响应于所述长度值小于或者等于所述传输控制协议一次所能传输的最大报文段长度,对所述数据报文的数据以分片段的形式读取,包括:根据所述最大报文段长度,将所述数据报文封装成至少一个数据片段;将所述至少一个数据片段中的每一个数据片段通过数据拷贝的方式拷贝到用户空间;在所述至少一个数据片段全部拷贝到所述用户空间之后,对所述至少一个数据片段解封装。在一些实施例中,所述在所述至少一个数据片段全部拷贝到所述用户空间之后,对所述至少一个数据片段解封装,包括:从拷贝到所述用户空间的各个数据片段中按照拷贝时间从先到后的顺序依次确定每一个数据片段中各行的数据长度,其中,所述各行的数据长度是用于存放各行数据内容长度值的定长数据长度加上各行的数据内容长度;根据所述各行的数据长度,确定各行的数据内容。在一些实施例中,所述从拷贝到所述用户空间的各个数据片段中按照拷贝时间从先到后的顺序依次确定每一个数据片段中各行的数据长度,包括:读取所述定长数据长度;通过读取所述定长数据长度,确定各行数据内容的长度值;由所述各行数据内容的长度值,确定所述各行数据内容的长度。在一些实施例中,所述将所述至少一个数据片段中的每一个数据片段通过数据拷贝的方式拷贝到用户空间,包括:将所述数据片段通过直接存储器访问的方式从协议引擎拷贝到内核空间下的套接字缓冲区;将拷贝到套接字缓冲区中的数据片段拷贝到用户空间下的所述用户缓存区中。在一些实施例中,所述响应于所述长度值大于所述传输控制协议一次所能传输的最大报文段长度,对所述数据报文的数据以分行的形式读取,包括:按照行数从大到小的顺序依次读取所述数据报文的各行数据并存放在所述用户空间的用户缓存区中;根据读取到的所述各行的数据长度,确定各行的数据内容。在一些实施例中,所述将读取的数据存放在用户缓存区中,当所述用户缓存区中的数据达到预设容量阈值,将所述用户缓存区中的数据发送给终端,包括:将读取的所述数据报文的数据长度值进行累加,直到达到所述用户缓存区的预设容量阈值;将达到所述预设容量阈值时读取的各行数据发送至终端,同时重置所述用户缓存区;继续读取所述数据报文中未读取完的数据,并存放在重置后的用户缓存区中。第二方面,本申请提供了一种数据报文的转发装置,所述装置包括:接收单元,配置用于接收数据报文,同时读取所述数据报文的首行数据内容的长度值;判断单元,配置用于判断所述长度值是否小于或者等于传输控制协议一次所能传输的最大报文段长度;片段读取单元,配置用于响应于所述长度值小于或者等于所述传输控制协议一次所能传输的最大报文段长度,对所述数据报文的数据以分片段的形式读取;行读取单元,配置用于响应于所述长度值大于所述传输控制协议一次所能传输的最大报文段长度,对所述数据报文的数据以分行的形式读取;发送单元,配置用于将读取的数据存放在用户缓存区中,当所述用户缓存区中的数据达到预设容量阈值,将所述用户缓存区中的数据发送给终端。在一些实施例中,所述片段读取单元包括:封装子单元,配置用于根据所述最大报文段长度,将所述数据报文封装成至少一个数据片段;拷贝子单元,配置用于将所述至少一个数据片段中的每一个数据片段通过数据拷贝的方式拷贝到用户空间;解封装子单元,配置用于在所述至少一个数据片段全部拷贝到所述用户空间之后,对所述至少一个数据片段解封装。在一些实施例中,所述解封装子单元包括:数据长度确定模块,配置用于从拷贝到所述用户空间的各个数据片段中按照拷贝时间从先到后的顺序依次确定单个数据片段中各行的数据长度,其中,所述各行的数据长度是用于存放各行数据内容长度值的定长数据长度加上各行的数据内容长度;数据内容确定模块,配置用于根据所述各行的数据长度,确定各行的数据内容。在一些实施例中,所述数据长度确定模块配置进一步用于:读取所述定长数据长度;通过读取所述定长数据长度,确定各行数据内容的长度值;由所述各行数据内容的长度值,确定所述各行数据内容的长度。在一些实施例中,所述拷贝子单元配置进一步用于:将所述数据片段通过直接存储器访问的方式从协议引擎拷贝到内核空间下的套接字缓冲区;将拷贝到套接字缓冲区中的数据片段拷贝到用户空间下的所述用户缓存区中。在一些实施例中,所述行读取单元配置进一步用于:按照行数从小到大的顺序依次读取所述数据报文的各行数据并存放在所述用户空间的用户缓存区中;根据读取到的所述各行的数据长度,确定各行的数据内容。在一些实施例中,所述发送单元包括:累加子单元,配置用于将读取的数据长度值进行累加,直到达到所述用户缓存区的预设容量阈值;发送子单元,配置用于将达到所述预设容量阈值时读取的各行数据发送至终端,同时重置所述用户缓存区;读取子单元,配置用于继续读取所述数据报文中未读取完的数据,并存放在重置后的用户缓存区中。本申请提供的数据报文的转发方法和装置,通过读取数据报文的首行数据内容的长度值,与传输控制协议依次所能传输的最大报文段长度进行比较,当数据报文的首行数据内容的长度值小于或者等于传输控制协议所能传输的最大报文长度时,对数据报文以分片段的形式读取;当数据报文的首行数据内容的长度值大于传输控制协议所能传输的最大报文段长度时,对数据报文以分行的形式读取,最后将读取的报文存放在用户缓存区中,当用户缓存区中的数据达到预设阈值时,将数据发送给终端,从而有效的利用了传输控制协议的资源,降低终端空闲等待的时间,实现了高效的对数据报文的转发。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:图1是本申请可以应用于其中的示例性系统架构图;图2是根据本申请的数据报文的转发方法的一个实施例的流程图;图3a和图3b是根据本申请的数据报文的转发方法的应用场景的示意图;图4是根据本申请的数据报文的转发方法的又一个实施例的流程图;图5是根据本申请的数据报文的转发装置的本文档来自技高网...

【技术保护点】
一种数据报文的转发方法,其特征在于,所述方法包括:接收数据报文,同时读取所述数据报文的首行数据内容的长度值;判断所述长度值是否小于或者等于传输控制协议一次所能传输的最大报文段长度;响应于所述长度值小于或者等于所述传输控制协议一次所能传输的最大报文段长度,对所述数据报文的数据以分片段的形式读取;响应于所述长度值大于所述传输控制协议一次所能传输的最大报文段长度,对所述数据报文的数据以分行的形式读取;将读取的数据存放在用户缓存区中,当所述用户缓存区中的数据达到预设容量阈值,将所述用户缓存区中的数据发送给终端。

【技术特征摘要】
1.一种数据报文的转发方法,其特征在于,所述方法包括:接收数据报文,同时读取所述数据报文的首行数据内容的长度值;判断所述长度值是否小于或者等于传输控制协议一次所能传输的最大报文段长度;响应于所述长度值小于或者等于所述传输控制协议一次所能传输的最大报文段长度,对所述数据报文的数据以分片段的形式读取;响应于所述长度值大于所述传输控制协议一次所能传输的最大报文段长度,对所述数据报文的数据以分行的形式读取;将读取的数据存放在用户缓存区中,当所述用户缓存区中的数据达到预设容量阈值,将所述用户缓存区中的数据发送给终端。2.根据权利要求1所述的方法,其特征在于,所述响应于所述长度值小于或者等于所述传输控制协议一次所能传输的最大报文段长度,对所述数据报文的数据以分片段的形式读取,包括:根据所述最大报文段长度,将所述数据报文封装成至少一个数据片段;将所述至少一个数据片段中的每一个数据片段通过数据拷贝的方式拷贝到用户空间;在所述至少一个数据片段全部拷贝到所述用户空间之后,对所述至少一个数据片段解封装。3.根据权利要求2所述的方法,其特征在于,所述在所述至少一个数据片段全部拷贝到所述用户空间之后,对所述至少一个数据片段解封装,包括:从拷贝到所述用户空间的各个数据片段中按照拷贝时间从先到后的顺序依次确定每一个数据片段中各行的数据长度,其中,所述各行的数据长度是用于存放各行数据内容长度值的定长数据长度加上各行的数据内容长度;根据所述各行的数据长度,确定各行的数据内容。4.根据权利要求3所述的方法,其特征在于,所述从拷贝到所述用户空间的各个数据片段中按照拷贝时间从先到后的顺序依次确定每一个数据片段中各行的数据长度,包括:读取所述定长数据长度;通过读取所述定长数据长度,确定各行数据内容的长度值;由所述各行数据内容的长度值,确定所述各行数据内容的长度。5.根据权利要求2所述的方法,其特征在于,所述将所述至少一个数据片段中的每一个数据片段通过数据拷贝的方式拷贝到用户空间,包括:将所述数据片段通过直接存储器访问的方式从协议引擎拷贝到内核空间下的套接字缓冲区;将拷贝到套接字缓冲区中的数据片段拷贝到用户空间下的所述用户缓存区中。6.根据权利要求1所述的方法,其特征在于,所述响应于所述长度值大于所述传输控制协议一次所能传输的最大报文段长度,对所述数据报文的数据以分行的形式读取,包括:按照行数从大到小的顺序依次读取所述数据报文的各行数据并存放在所述用户空间的用户缓存区中;根据读取到的所述各行的数据长度,确定各行的数据内容。7.根据权利要求1所述的方法,其特征在于,所述将读取的数据存放在用户缓存区中,当所述用户缓存区中的数据达到预设容量阈值,将所述用户缓存区中的数据发送给终端,包括:将读取的所述数据报文的数据长度值进行累加,直到达到所述用户缓存区的预设容量阈值;将达到所述预设容量阈值时读取的各行数据发送至...

【专利技术属性】
技术研发人员:王天宇
申请(专利权)人:北京百度网讯科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1