SNMP 请求响应报文传输分片定位
本文为博主原创,转载请注明出处:
在业务环境中,通过snmp轮询采集设备信息时,会偶遇 snmp 响应报文在解析过程中异常,于是采用tcpdump抓包进行报文分析。
1.分片报文
通过tcpdump 抓包,查看响应报文得内容如下:

有一段很关键得报文内容如下:
"6876","2025-10-16 15:56:25.677396","172.16.25.13","172.16.11.102","IPv4","1516","Fragmented IP protocol (proto=UDP 17, off=0, ID=007b)"
这段报文得主要内容:
| 字段 | 值 | 含义 |
|---|---|---|
| 序列号 | 6876 | 报文在捕获中的编号 |
| 时间戳 | 2025-10-16 15:56:25.677396 | 精确到微秒的捕获时间 |
| 源IP | 172.16.25.13 | 发送方IP地址 |
| 目的IP | 172.16.11.102 | 接收方IP地址 |
| 协议 | IPv4 | 网络层协议 |
| 长度 | 1516 bytes | 报文总长度 |
| 详细信息 | Fragmented IP protocol... | IP分片详情 |
2.分片参数详解
2.1 分片参数详解
Fragmented IP protocol (proto=UDP 17, off=0, ID=007b)
| 参数 | 值 | 含义 |
|---|---|---|
proto=UDP 17 |
UDP协议,协议号17 | 传输层协议类型 |
off=0 |
分片偏移量=0 | 这是第一个分片 |
ID=007b |
分片标识符=0x007b(123) | 同一数据包的所有分片共享此ID |
2.2 分片技术细节
IP分片头部字段:
总长度: 1516 bytes
标识: 0x007b (123)
分片标志: MF=1 (More Fragments,还有后续分片)
分片偏移: 0 (这是第一个分片)
3. 网络流量分析
3.1 通信方向
172.16.25.13 → 172.16.11.102
源: 172.16.25.13 (可能是客户端或服务请求方)
目的: 172.16.11.102 (可能是服务器或服务提供方)
3.2 分片原因分析
为什么需要分片:
MTU限制: 路径上某个链路的MTU小于1516字节
常见MTU值:
以太网: 1500字节
PPPoE: 1492字节
隧道协议: 更小值
计算:
原始UDP数据包:
[IP头20][UDP头8][数据1488] = 总长1516字节 分片后:
分片1: [IP头20][UDP头8][部分数据] + 分片标志MF=1, Offset=0
分片2: [IP头20][剩余数据] + 分片标志MF=0, Offset=1480/8=185
4.2 协议栈层次
应用层数据
↓
UDP头部 (8字节)
↓
IP头部 (20字节) + 分片信息
↓
网络传输
5. 可能的应用场景
5.1 常见的UDP大包应用
# DNS响应 (通常不会这么大)
# NTP协议
# SNMP Trap
# TFTP文件传输
# 视频流媒体
# 自定义UDP应用
5.2 网络诊断
# 检查路径MTU
ping -M do -s 1472 172.16.11.102 # 测试MTU # 使用traceroute检查路径
traceroute 172.16.11.102
6. 网络优化建议
6.1 避免分片的方法
# 调整应用层数据大小
应用程序设置: MTU - IP头 - UDP头 = 1500 - 20 - 8 = 1472字节 # 系统级MTU配置
ifconfig eth0 mtu 1500
6.2 监控建议
# 监控分片统计
netstat -s | grep -i fragment # 使用tcpdump持续监控
tcpdump -i any -n 'host 172.16.25.13 and host 172.16.11.102'
7. 解决方法
1.设置调整路由设备得mtu值
2. 设置snmp 采集轮询中每次walk数据量得大小;即设置 snmp 在 getBulk时得 MaxRepetition 参数,将这个参数调小,每次响应得数据变小,就可以正常响应了。
SNMP 请求响应报文传输分片定位的更多相关文章
- HTTP 请求/响应报文结构
请求报文和响应报文都是由以下4部分组成: 1.请求行/响应行 2.请求头/响应头 3.空行 4.消息主体(请求体/响应体) 请求报文结构 请求行 格式为:Method Request-URI HTTP ...
- HTTP请求响应报文&&相关状态码&&GET_POST请求方法 总结
HTTP请求报文: 一个HTTP请求报文由四个部分组成:请求行.请求头部.空行.请求数据 1.请求行 请求行由请求方法字段.URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔.比如 GE ...
- HTTP请求响应报文 - 相关状态码 - GET_POST请求方法
HTTP请求报文: 一个HTTP请求报文由四个部分组成:请求行.请求头部.空行.请求数据 1.请求行 请求行由请求方法字段.URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔.比如 GET ...
- HTTP请求/响应报文结构
HTTP协议版本有两种:HTTP1.0和HTTP1.1 它们俩的区别在于:HTTP1.0对于每个连接都只能传送一个请求和响应,请求后就会关闭,HTTP1.0没有Host字段:而HTTP1.1在同一个连 ...
- CXF Service Interceptor请求,响应报文之控制台输出
一:定义接口 @WebService(targetNamespace = "http://www.unionpay.com/client/appprovider", name = ...
- 浏览器与服务端请求响应流程与HTTP协议
浏览器与服务端请求响应流程图: 1.HTTP概要 1.1. 定义 HTTP(HyperText Transfer Protocol,超文本传输协议)最早就是计算机与计算机之间沟通的一种标准协议,这种 ...
- PHP-02.文件上传、php保存/转移上传的文件、常见的网络传输协议、请求报文及属性、响应报文及属性
关系数组 array("key"=>"value",...) ; get没有数据大小的限制 post上传大小没有限制 不指定上传方式,默认是get 文件上 ...
- HTTP 请求报文 响应报文
引言 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为了提供一种发 ...
- HTTP请求报文和HTTP响应报文
HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的.HTTP有两类报文:请求报文和响应报文. HTTP请求报文 一个HTTP请求报文由请求行(request ...
- HTTP请求报文和HTTP响应报文(转)
原文地址:http://blog.csdn.net/zhangliang_571/article/details/23508953 HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串, ...
随机推荐
- avalonia 部署wsl依赖库
主要安装包: sudo apt install libgdiplus sudo apt install libice6 sudo apt install libsm6 https://blog.51c ...
- Chrome 允许浏览器使用多达 80% 的总磁盘空间。一个来源最多可以使用总磁盘空间的 60%。
https://web.dev/storage-for-the-web/#check https://web.dev/storage-for-the-web/#:~:text=Chrome%20all ...
- P2P网络下分布式文件共享场景的测试
P2P网络介绍 P2P是Peer-to-Peer的缩写,"Peer"在英语里有"对等者.伙伴.对端"的意义.因此,从字面意思来看,P2P可以理解为对等网络.国内 ...
- Gitee引领2025中国代码托管市场:本土化优势助推生态发展
Gitee如何在中国代码托管市场构建不可替代的竞争优势 随着中国数字化转型进入深水区,代码托管平台正在成为企业研发体系的核心基础设施.作为中国领先的本土代码托管平台,Gitee凭借对本土市场的深刻理解 ...
- 基于LiveGBS修改实现一套自己的GB28181流媒体
方式一 :只修改logo.版权信息 livecms.ini中配置 livecms.ini > http > logo_text livecms.ini > http > log ...
- Typora自动上传gitee图床(知乎文章自动上传图片)
在我日常使用Typora的过程中,经常会想将文档分享给其他人或者想将文档上传到知乎或者其他博客. 但是,由于我编写的Markdown文件中的图片都位于本地,所以想将文档中的图片上传有两个选择: 将Ma ...
- UI自动化框架appium工作原理
一.框架组成 Appium由三个主要模块构成:Client端.Server端和移动端. Client端:就是发起command的一端,狭义可以理解为java/python编写的自动化测试脚本或者自 ...
- 开发 PHP 扩展新途径 通过 FrankenPHP 用 Go 语言编写 PHP 扩展
开发 PHP 扩展新途径 通过 FrankenPHP 用 Go 语言编写 PHP 扩展 在 PHPVerse 2025 大会上(JetBrains 为纪念 PHP 语言 30 周年而组织的会议),Fr ...
- CTFshow web174/175
web174 username != 'flag' 过滤 作用:排除username字段值为flag的记录 LIMIT 1 结果限制 作用:仅返回查询结果的第一条记录 这里如果返回数据中包含 flag ...
- javascript 去掉 url 中的不可打印字符串
最近遇到一个奇怪的问题,业务从邮件中拷贝出来的URL有问题,导致线上访问出现问题,一再分析,手打的url的地址没有问题,但是拷贝的就有问题,手打的和拷贝的肉眼看一模一样的. 于是怀疑是拷贝出来的URL ...