数据包传输方法技术

技术编号:39731855 阅读:10 留言:0更新日期:2023-12-17 23:35
本申请涉及一种数据包传输方法

【技术实现步骤摘要】
数据包传输方法、系统、装置及存储介质


[0001]本申请涉及数据传输
,具体涉及一种数据包传输方法

系统

装置及存储介质


技术介绍

[0002]随着网络技术的发展,网络通信技术的重要性也越专利技术显
。UDP
是一种常用的网络通信协议,它的特点是无连接不可靠

面向数据报文

在转发
UDP
报文时,过长的报文会被客户端按照自身设置的
MTU
进行分片形成多个报文分片包,每个报文分片包都会在原有的报文基础上封装一个新的头部,最后将各个报文分片包发送到网络中

但这样的方式占用系统内核进行分片和组包,会大大浪费内存空间及
CPU
处理效率,影响数据传输的效率


技术实现思路

[0003]为了解决如何提高数据包传输效率的技术问题,本申请提供了一种数据包传输方法

系统

装置及存储介质

[0004]第一方面,本申请提供了一种数据包传输方法,应用于发送端,所述方法包括:
[0005]获取第一数值,所述第一数值表示待传输的数据包的大小;
[0006]获取发送端的最大传输单元值;
[0007]若所述第一数值大于所述最大传输单元值,则在操作系统抽象层按照所述最大传输单元值对所述数据包进行分片,得到多个数据分片包;
[0008]为每个所述数据分片包分别配置传输包头,得到多个报文分片包,并将所有所述报文分片包添加到发送队列;
[0009]遍历所述发送队列,将各个所述报文分片包通过底层的调用接口发送至接收端

[0010]可选地,所述为每个所述数据分片包分别配置传输包头,得到多个报文分片包,包括:
[0011]为每个所述数据分片包动态分配目标内存块,其中,所述目标内存块的容量等于所述传输包头和所述数据分片包的大小之和;
[0012]将所述传输包头和所述数据分片包填充至所述目标内存块,将填充后的所述目标内存块作为所述报文分片包

[0013]可选地,所述遍历所述发送队列,将各个所述报文分片包通过底层调用接口发送至接收端之后,所述方法还包括:
[0014]释放所述发送队列中动态分配的所有所述目标内存块的内存资源

[0015]可选地,所述获取发送端的最大传输单元值,包括:
[0016]获取发送端的传输路径中的各个第一传输单元值;
[0017]确定所有所述第一传输单元值中的最小值作为所述发送端的所述最大传输单元值

[0018]第二方面,本申请提供了一种数据包传输方法,应用于接收端,所述方法包括:
[0019]获取发送端发送的各个报文分片包;其中,所述报文分片包在第一数值大于发送端的最大传输单元值时,由所述发送端在操作系统抽象层按照所述最大传输单元值对待传输的数据包进行分片,得到多个数据分片包,为每个所述数据分片包分别配置传输包头得到;所述第一数值表示待传输的数据包的大小;
[0020]解析所述报文分片包得到所述发送端的进程号

所述进程号发送的包数

发送端的源地址和端口号;
[0021]根据所述进程号

所述包数

所述源地址和所述端口号确定匹配的目标指令预取队列;
[0022]对所述目标指令预取队列中包含的所有所述报文分片包进行重组

[0023]可选地,所述根据所述进程号

所述包数

所述源地址和所述端口号确定匹配的指令预取队列,包括:
[0024]根据所述进程号

所述包数

所述源地址和所述端口号,通过哈希算法计算目标哈希值;
[0025]查找与所述目标哈希值匹配的头链;
[0026]在所述头链指向的链表中查找与所述进程号

所述包数

所述源地址和所述端口号都匹配的指令预取队列;
[0027]若查找到所述指令预取队列,将所述指令预取队列作为所述目标指令预取队列;
[0028]若未查找到所述指令预取队列,则创建第一指令预取队列,根据所述第一指令预取队列指向的链表创建分片节点,将所述报文分片包挂载到所述分片节点,并将所述第一指令预取队列作为所述目标指令预取队列

[0029]可选地,所述获取发送端发送的各个报文分片包,包括:
[0030]在接收端配置静态缓存区;
[0031]在所述静态缓存区中对接收的所述发送端的每一个所述报文分片包静态分配一个目标内存;
[0032]将所述报文分片包存储至所述目标内存

[0033]第三方面,本申请提供了一种数据包传输系统,包括发送端和接收端;
[0034]所述发送端,用于获取第一数值,所述第一数值表示待传输的数据包的大小;获取发送端的最大传输单元值;若所述第一数值大于所述最大传输单元值,则在操作系统抽象层按照所述最大传输单元值对所述数据包进行分片,得到多个数据分片包;为每个所述数据分片包分别配置传输包头,得到多个报文分片包,并将所有所述报文分片包添加到发送队列;遍历所述发送队列,将各个所述报文分片包通过底层的调用接口发送至接收端;
[0035]所述接收端,用于获取发送端发送的各个报文分片包;解析所述报文分片包得到所述发送端的进程号

所述进程号发送的包数

发送端的源地址和端口号;根据所述进程号

所述包数

所述源地址和所述端口号确定匹配的目标指令预取队列;对所述目标指令预取队列中包含的所有所述报文分片包进行重组

[0036]第四方面,本申请提供了一种数据包传输装置,应用于发送端,所述装置包括:
[0037]第一获取模块,用于获取第一数值,所述第一数值表示待传输的数据包的大小;
[0038]第二获取模块,用于获取发送端的最大传输单元值;
[0039]分片模块,用于若所述第一数值大于所述最大传输单元值,则在操作系统抽象层
按照所述最大传输单元值对所述数据包进行分片,得到多个数据分片包;
[0040]配置模块,用于为每个所述数据分片包分别配置传输包头,得到多个报文分片包,并将所有所述报文分片包添加到发送队列;
[0041]发送模块,用于遍历所述发送队列,将各个所述报文分片包通过底层的调用接口发送至接收端

[0042]第五方面,本申请提供了一种数据包传输装置,应用于接收端,所述装置包括:
[0043]第三获取模块,用于获取发送端发送的各个报文分片包;其中,所述报文分片包在第一数值大于发送端的最大传输单元值时,由所述发送端在操作本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种数据包传输方法,其特征在于,应用于发送端,所述方法包括:获取第一数值,所述第一数值表示待传输的数据包的大小;获取发送端的最大传输单元值;若所述第一数值大于所述最大传输单元值,则在操作系统抽象层按照所述最大传输单元值对所述数据包进行分片,得到多个数据分片包;为每个所述数据分片包分别配置传输包头,得到多个报文分片包,并将所有所述报文分片包添加到发送队列;遍历所述发送队列,将各个所述报文分片包通过底层的调用接口发送至接收端
。2.
根据权利要求1所述的方法,其特征在于,所述为每个所述数据分片包分别配置传输包头,得到多个报文分片包,包括:为每个所述数据分片包动态分配目标内存块,其中,所述目标内存块的容量等于所述传输包头和所述数据分片包的大小之和;将所述传输包头和所述数据分片包填充至所述目标内存块,将填充后的所述目标内存块作为所述报文分片包
。3.
根据权利要求2所述的方法,其特征在于,所述遍历所述发送队列,将各个所述报文分片包通过底层调用接口发送至接收端之后,所述方法还包括:释放所述发送队列中动态分配的所有所述目标内存块的内存资源
。4.
根据权利要求1所述的方法,其特征在于,所述获取发送端的最大传输单元值,包括:获取发送端的传输路径中的各个第一传输单元值;确定所有所述第一传输单元值中的最小值作为所述发送端的所述最大传输单元值
。5.
一种数据包传输方法,其特征在于,应用于接收端,所述方法包括:获取发送端发送的各个报文分片包;其中,所述报文分片包在第一数值大于发送端的最大传输单元值时,由所述发送端在操作系统抽象层按照所述最大传输单元值对待传输的数据包进行分片,得到多个数据分片包,为每个所述数据分片包分别配置传输包头得到;所述第一数值表示待传输的数据包的大小;解析所述报文分片包得到所述发送端的进程号

所述进程号发送的包数

发送端的源地址和端口号;根据所述进程号

所述包数

所述源地址和所述端口号确定匹配的目标指令预取队列;对所述目标指令预取队列中包含的所有所述报文分片包进行重组
。6.
根据权利要求5所述的方法,其特征在于,所述根据所述进程号

所述包数

所述源地址和所述端口号确定匹配的指令预取队列,包括:根据所述进程号

所述包数

所述源地址和所述端口号,通过哈希算法计算目标哈希值;查找与所述目标哈希值匹配的头链;在所述头链指向的链表中查找与所述进程号

所述包数

所述源地址和所述端口号都匹配的指令预取队列;若查找到所述指令预取队列,将所述指令预取队列作为所述目标指令预取队列;若未查找到所述指令预取队列,则创建第一指令预取队列,根据所述第一指令预取队列指向的链表创建分片节点,将所述报文分片包挂载到所述分片节点,并将所述第一指令
预取队列作为所述目标指令预取队列
。7.
根据权利要求5所述的方法,其特征在于,所述获取发送端发送的各个报文分片包,包括:...

【专利技术属性】
技术研发人员:徐瀚文叶欢
申请(专利权)人:重庆长安汽车股份有限公司
类型:发明
国别省市:

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

1