⬜⬜⬜ 🐰🟧🟨🟩🟦🟪(*^▽^*)欢迎光临 🟧🟨🟩🟦🟪🐰⬜⬜⬜
✏️write in front✏️
📝个人主页:陈丹宇jmu
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝
🙉联系作者🙈by QQ:813942269🐧
🌈致亲爱的读者:很高兴你能看到我的文章,希望我的文章可以帮助到你,祝万事顺意🏳️🌈
✉️少年不惧岁月长,彼方尚有荣光在 🏆
一、 实验目的
捕获SNMP报文,通过报文分析进一步理解SNMP的报文结构、MIB-2树的结构、理解管理信息结构SMI及其规定的ASN.1。
二、实验内容与设计思想
实验内容:编写代码,测试
1、自行挑选两个网管对象,分别使用get,get-next取其值。
2、使用抓包软件抓取数据包。
3、分析并验证SNMP协议数据:
1)SNMP协议的工作过程;
2)SNMP协议数据单元的格式;
3)MIB-2树的结构;
4)管理信息结构SMI及其规定的ASN.1。
三、实验要求
1、管理站与代理为不同机器。共有4个数据包:2个对象(分别用get、get-next)*2个包(request,response)=4个。
2、要分析其SNMP结构,指出语法定义、编码依据。对于后面的数据包,只要对新出现的结构类型进行分析即可,不需要重复分析。
3、独立完成分析工作。
4、撰写实验报告,给出实验小结,问题分析。实验课后5天提交。
目录
🎯验证SNMP协议的工作过程
📖分析SNMP数据单元的格式
🎯验证SNMP协议的工作过程
使用WireShark抓包工具抓取SNMP协议的报文。结果如下图所示:
管理代码:
snmputil get 192.168.43.143 72.21.10.173 public .1.3.6.1.2.1.1.1.0
snmputil walk 172.21.10.210 public .1.3.6.1.2.1.4.20.1.1
可以明显地看出,SNMP 是基于请求/响应模型进行工作的,客户端发送一个请求,服务器对请求的内容进行回应。
查看SNMP协议传输层报文分析SNMP协议的工作过程:
如下所示,管理站向代理系统发出的get—request报文在传输层是通过UDP发出的,发送到代理系统的161目的端口。
而代理系统在接收到管理站发出的请求报文后,会对该报文进行相应,代理系统向管理站发送get—respone响应报文,该报文通过代理系统的161端口发出。
通过进一步的学习,我知道,UDP端口号161用于SNMP代理向SNMP管理程序发送信息,也称为SNMP读端口,SNMP管理程序通过该端口获取被管理设备的状态信息;UDP端口号162用于SNMP管理程序向SNMP代理发送信息,也称为SNMP写端口,SNMP管理程序通过该端口向被管理设备发送控制和配置信息。
需要注意的是,SNMP协议使用的是UDP协议,不同于TCP协议,因此设计的端口号不同,其目的是使SNMP通信更加高效,减少网络传输的负担。
使用netstat -an查看代理站TCP/UDP连接表
如下图所示,系统的161端口处在活动状态。
对于表项的理解:
SNMP协议是基于UDP协议传输的,而UDP协议是无连接的,只是监听,并没有因为数据包的发送就成登记一条连接。
以下是SNMP协议工作的基本过程:
管理器系统向被管理设备发送请求,以获取所需的信息,如系统配置、设备状态或运行指标等。
被管理设备或代理收到请求后,会根据请求中的OID值来查找相应的MIB(Management Information Base)对象,这些对象保存了设备性能和状态数据。
如果找到所需的MIB对象,设备或代理将该对象的值作为响应返回给管理器。
如果未找到所需的MIB对象,则设备或代理将错误信息或其他相关的信息返回给管理器。
管理器系统接收到响应信息后,可以对其进行处理,例如显示在UI界面上或将其保存到文件中等。
总体而言,SNMP协议的工作过程可以概括为“请求-响应”模式。SNMP管理器向SNMP代理设备发送请求,代理设备将响应返回给管理器,管理器再进行相应的处理。这种通信方式使得管理员可以轻松地管理网络设备,并能够快速响应设备的状态和性能问题。
总结一下,SNMP协议的工作过程包括管理器向代理发送请求,代理响应请求并返回相应的值,管理器接收响应并进行相应的处理。
📖分析SNMP数据单元的格式
注明:下面所示的是SNMPv1版本的报文格式:
报文中每个字段的含义如下:
- 版本(version):版本字段,写入版本字段的是版本号减1。例如,SNMP(即 SNMPv1)应写入 0。
- 共同体(community):字符串形式,作为网络管理站 NMS 和 SNMP 代理之间的明文口令,默认为 public。
- PDU 类型:SNMP 协议的操作类型。
- 值为 0,表示 get-request 操作;
- 值为 1,表示 get-next-request 操作;
- 值为 2,表示 get-response 操作;
- 值为 3,表示 set-request 操作;
- 值为 7,表示 informRequest 操作。
- 请求标识(request-id):管理站 NMS 设置的一个整数值。SNMP 代理在发送 get-response 报文时也要返回此请求标识符。
- 差错状态(error status):整数,由 SNMP 代理进行标注,指明有错误发生。可用的值及含义如下表所示。
- 差错索引(error-index):当出现 noSuchName、badValue 或 readOnly 的错误时,由代理进程在回答时设置的一个整数。该数值指明引起错误的变量在变量列表中的偏移位置。
- 名称(Object name):MIB 管理信息库中的OID。
- 值(Value):OID对应的值。
如上图可以看出GetRequest PDU, GetNextRequest PDU,SetRequest PDU,GetResponse PDU的格式是相同的。