【udp报文】udp报文未自动分片,报文过长被拦截问题定位

问题现象

某局点出现一个奇怪的现象,客户端给服务端发送消息,服务端仅能收到小部分消息,大部分消息从客户端发出后,服务端都未收到。

问题定位

  • 初步分析

    • 根据现象初步分析,有可能是网络原因导致消息到服务端不可达,但是又无法佐证,因为确实有部分消息是能够被服务端接收到的。
    • 服务端应用问题,通过某些渠道了解到,接收端是客户自己实现的一个程序,可能是程序存在bug,导致消息丢失。该原因定位较困难,客户表示可以接收其他发送端消息,拒绝从接收端应用开始排查。
  • 抓包

    • 根据初步分析的第一点猜测,我们决定进行抓包进行分析,由于发送端使用的是udp包,所以我们使用tcpdump工具,在发送端进行抓包,抓包后的结果是,所有的数据包均被tcpdump捕获
    • 根据第一步的结果可以得出结论,问题并非出在发送应用端,接着我们在接收端进行tcpdump抓包,结果发现,发送端发出来的包,在服务端并没有全部被抓取到。问题已经显而易见了。
  • 分析
    根据上述抓包结果,基本可以定界到中间的网络传输将数据包丢弃。而后排查网络问题,发现是网络中的防火墙将数据包大于1472字节的包拦截并丢弃了。而防火墙的这一行为为出厂时默认配置,目的是为了防止网络攻击。

问题根因

对于udp数据包,当数据包过大时,网卡会将其自动分片发送,而在这个案例中,udp报文里ip层的flag为0x02,即df(don’t fragment)位为1,表示不允许分片发送。

df = 1的情况有以下两种

  1. 操作系统配置/proc/sys/net/ipv4/ip_no_pmtu_disc参数值
    若上述参数值为0(默认),则表示可分片。
    若上述参数值为2,则强制不进行分片。
    更详细的用法可以百度查一下。
    这个案例中发送端机器参数为。

  2. 确认发送端网卡的mtu值是否大于1500
    这里为什么是1500呢?因为当udp数据包发出去后,会在报文中添加28字节的报文头,其中8字节的udp层,20字节的ip层,而1500 - 28 = 1472,所以防火墙会将大于1472字节的数据进行拦截。
    经过排查后发现发送端的机器的mtu值为8192,所以当从发送端将大于1472,小于8166的数据包发送出去时,报文中所携带的df值为1,后续经过的所有路由都没有进行分片,导致数据包到达防火墙后被过滤。

查询网卡mtu方法:ifconfig
网卡mtu值
正常情况下,该值都为1500,所以数据包能被正常分片在1472字节内。

解决方案

修改网卡mtu值,这个操作可以直接百度到了。
ifconfig 网卡名称 mtu 1500 up

vim /etc/sysconfig/network-scripts/对应网卡的ifcfg文件
新增一行MTU="1500"
保存后退出,并执行service network restart重启网卡服务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/767295.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AVR晶体管测试仪开源制作与验证

AVR晶体管测试仪开源制作与验证 📍原项目地址:https://www.mikrocontroller.net/articles/AVR_Transistortester github地址:https://github.com/Mikrocontroller-net/transistortester 🎈EasyEDA项目地址:https://osh…

华三多台交换机堆叠配置(环形组网)

组网架构 配置步骤 SW1的配置: irf member 1 priority 32 设置master的优先级为32 interfacec range Ten-GigabitEthernet1/0/49 to Ten-GigabitEthernet1/0/50 shutdown 关闭上述接口(将其加入到堆叠口之前需要关闭,否则无法加入&a…

性价比蓝牙耳机怎么选?百元高性价比蓝牙耳机推荐

在现代社会中,蓝牙耳机已经成为人们日常生活中必不可少的配件之一。对于许多消费者来说,找到一款高性价比且价格在百元左右的蓝牙耳机是非常重要的。市面上有许多价格不菲的蓝牙耳机,性价比蓝牙耳机怎么选?如何在有限预算下找到性…

数据结构 —— 二叉树

1.树的概念及结构 1.1树的概念 树是一种非线性的数据结构,它有着多分支,层次性的特点。 由于其形态类似于自然界中倒过来的数,所以我们将这种数据结构称为“树形结构” 注意: 树形结构中,子树之间不能有交集&#x…

SwiftUI 中 Grid 内多个 NavigationLink 同时发生导航之诡异问题的解决

问题现象 不知小伙伴们发现了没有?在 SwiftUI 中如果有多个 NavigationLink 视图嵌入在 Grid(包括 LazyVGrid 和 LazyHGrid)容器中,点击其中任意一个 NavigationLink 都会导致所有导航一起发生。 如上图所示,点击 Grid 中任何一个 NavigationLink,所有 NavigationLink 都…

[数据结构] --- 树

1 树的基本概念 1.1 树的定义 树是n(n>0)个结点的有限集。当 n 0 时,称为空树。在任意一棵树非空树中应满足: (1) 有且仅有一个特定的称为根 (root) 的结点; (2) 当 n > 1 时,其余结点可分为m(m>0)个互不相交的有限集…

bootloader原理介绍

bootloader解析 bootloader的引出 不知道你有没有想过这样一个问题,当你按下电源开关的那一瞬间,第一行代码是如何在芯片上运行起来的呢?我们都知道嵌入式软件代码,是需要通过一定的方式,烧录在硬件芯片中&#xff0c…

【Zotero】【国标csl调教(七)】导入专著M、学位论文D以及百度学术的问题

一、百度学术 百度学术导入的字段(期卷号、页码)等会有严重错误,不建议通过Baidu Scholar导入, 建议在文库编目字段自行查找修改 二、专著【M】以及学位论文【D】的出版地问题 国标对硕博论文【D】和专著【M】要求写上出版地 …

OpenSSL的一些使用案例

目录 一、介绍 二、基本使用 1、Shell (1)文件加解密 (2)生成密钥文件 2、API (1)md5sum (2)AES256加解密 一、介绍 本篇博客重点不是详细描述 OpenSSL 的用法,只…

昇思第7天

模型训练 模型训练一般分为四个步骤: 构建数据集。 定义神经网络模型。 定义超参、损失函数及优化器。 输入数据集进行训练与评估。 数据集加载 import mindspore from mindspore import nn # 从 MindSpore 数据集包中导入 vision 和 transforms 模块。 # visio…

使用DC/AC电源模块时需要注意的事项

BOSHIDA 使用DC/AC电源模块时需要注意的事项 1. 仔细阅读和理解产品说明书:在使用DC/AC电源模块之前,应该仔细阅读和理解产品说明书,了解其性能特点、技术要求和使用方法,以确保正确使用和避免潜在的安全风险。 2. 选择适当的电…

MySQL 9.0 发布了!

从昨晚开始,在DBA群里大家就在讨论MySQL 9.0发布的事情,但是Release Note和官方文档都没有更新,所以今天早上一上班就赶紧瞅了下具体更新了哪些内容? 整体看来,基本没什么创新。下面是9.0新增或废弃的一些特性。 &…

Power Platform功能管理实战概述

Power Platform功能管理实战概述 Microsoft Power Platform是一个强大的低代码开发平台,它使组织能够自动化商业流程、开发自定义应用程序,并加强与客户的连接。该平台由四个主要组件组成:Power Apps、Power Automate、Power BI和Power Virt…

【探索Linux】P.36(传输层 —— TCP协议段格式)

阅读导航 引言一、TCP段的基本格式二、控制位详细介绍三、16位接收窗口大小⭕窗口大小的作用⭕窗口大小的限制⭕窗口缩放选项⭕窗口大小的更新⭕窗口大小与拥塞控制 四、紧急指针温馨提示 引言 在上一篇文章中,我们深入探讨了一种无连接的UDP协议,它以其…

Searchsploit漏洞利用搜索工具的介绍及使用

目录 0x00 介绍0x01 常用参数0x02 使用1. 在线搜索2. 使用步骤3. 使用实例 0x00 介绍 kali自带的,Searchsploit会通过本地的Exploit-db查找软件漏洞信息。 Exploit Database(https://gitlab.com/exploit-database/exploitdb)存储了大量的漏洞…

33.哀家要长脑子了!

憋说了,感觉好不容易长出来的脑子又缩回去了。。。 1.539. 最小时间差 - 力扣(LeetCode) 把所有时间排好序,然后计算两两之间的分钟差就好,但是要注意加上最后一个和第一个的判断,因为这个时间是按字典序来…

AI研究的主要推动力会是什么?ChatGPT团队研究科学家:算力成本下降

AI 研究发展的主要推动力是什么?在最近的一次演讲中,OpenAI 研究科学家 Hyung Won Chung 给出了自己的答案。 近日,斯坦福大学《CS25: Transformers United V4》课程迎来了一位我们熟悉的技术牛人:Hyung Won Chung。 Chung 是 O…

Hadoop-03-Hadoop集群 免密登录 超详细 3节点公网云 分发脚本 踩坑笔记 SSH免密 服务互通 集群搭建 开启ROOT

章节内容 上一节完成: HDFS集群XML的配置MapReduce集群XML的配置Yarn集群XML的配置统一权限DNS统一配置 背景介绍 这里是三台公网云服务器,每台 2C4G,搭建一个Hadoop的学习环境,供我学习。 之前已经在 VM 虚拟机上搭建过一次&…

Spring容器生命周期中如前置运行程序和后置运行程序

在Spring容器加入一个实现了BeanPostProcessor接口bean实例,重写postProcessBeforeInitialization、postProcessAfterInitialization方法,在方法里面写具体的实现,从而达到Spring容器在初如化前或销毁时执行预定的程序,方法如下&a…