网络协议学习-SNMP(一)基础知识

简单网络管理协议(Simple Network Management Protocol,SNMP)是由互联网工程任务组定义的一套网络管理协议。该协议是基于简单网关监视协议(Simple Gateway Monitor Protocol,SGMP)制定的。

SNMP 可以使网络管理员通过一台工作站完成对计算机、路由器和其他网络设备的远程管理和监视。利用 SNMP 协议可以更好地管理和监控网络。管理工作站可以远程管理所有支持该协议的网络设备,如监视网络状态、修改网络设备配置、接收网络事件警告等。

原来只能用telnet这种方法一台一台查看管理,一下子就变成了统一管理,果然懒才是社会进步的一大动力
在这里插入图片描述

1.目的

SNMP是一种简单的UDP协议,通常用来管理一些网络设备,例如路由器,交换机等设备;

SNMP的基本思想:为不同种类的设备、不同厂家生产的设备、不同型号的设备,定义为一个统一的接口和协议,使得管理员可以是使用统一的外观面对这些需要管理的网络设备进行管理。通过网络,管理员可以管理位于不同物理空间的设备,从而大大提高网络管理的效率,简化网络管理员的工作。

统一接口,统一定义,统一方式,秦始皇诚不我欺
在这里插入图片描述

2.组成

我们常接触到的分为两部分,管理者NMS和代理Agent,可以简单的认为就是服务端和客户端,另外还有一个关键概念:MIB;
在这里插入图片描述
NMS:运行在服务器上的服务,作为一个中心节点,负责收集维护各个SNMP元素的信息,并对这些信息进行处理,最后反馈给网络管理员;
SNMP代理:运行在各个被管理的网络节点之上的程序,负责统计该节点的各项信息,并且负责与NMS交互,接收并执行管理站的命令,上传各种本地的网络信息;
MIB(管理信息库):任何一个被管理的设备都表示成一个对象,并称为被管理的对象。而 MIB 就是被管理对象的集合。它定义了被管理对象的一系列属性,如对象的名称、对象的访问权限和对象的数据类型等。每个设备都有自己的 MIB。MIB 是一种树状数据库,MIB 管理的对象,就是树的端节点,每个节点都有唯一位置和唯一名字。

就像买东西一样,你我商量好,我说名字,你取实物给我,mib就是这种统一命名的对象。
在这里插入图片描述

3.通讯方法

常用的通讯方式和我们理解的客户端上报为主的方式不太一样,SNMP最常用的是NMS服务端下发命令,读取客户端数据,然后客户端偶尔会上报一些报警或者异常通知。
在这里插入图片描述

此处涉及到了两个关键端口,NMS服务端下发命令通过目的端口UDP161,客户端上报数据通过目的端口162。具体方法详见下一小节。
在这里插入图片描述

4.版本

SNMP协议目前在用的有3个版本,分别是V1,V2C,V3,主要差异在方法不同、安全性、消息封装格式、GET效率等方面。
SNMP V1方法:

  • Get(获取参数值,不能遍历table类型的参数组)
  • GetNext(可获取table类型的参数值,一组参数)
  • Set(设置参数值)
  • Trap(发送告警)
  • Response(GET操作的响应信息)

SNMPv1使用团体字(community)来作为身份认证信息。当Agent接收到与其一样的团体字的管理端消息后才会进行消息应答。V1整个消息采用明文传送,通过wireshark/tcpdump等抓包工具可看到明文。

SNMP V2C

  • Get(获取参数值,不能遍历table类型的参数组)
  • GetNext(可获取table类型的参数值,一组参数)
  • GetBulk(GetBulk操作所对应的基本操作是GetNext,通过对Non repeaters和Max repetitions参数的设定,高效率地从Agent获取大量管理对象数据,如果get-request中的参数有一个不存在,请求照样会被正常执行;而在SNMPv1种将收到一个错误消息)
  • Set(设置参数值)
  • Trap(发送告警)
  • inform(相当于Trap的升级版,但是Trap消息发出去之后不会收到响应消息,而inform消息在发出之后能收到响应消息)
  • Response(GET操作的响应信息)。
    V2C也采用团体字认证,整个消息采用明文传送。

SNMP V3

  • Get(获取参数值,不能遍历table类型的参数组)
  • GetNext(可获取table类型的参数值,一组参数)
  • GetBulk(GetBulk操作所对应的基本操作是GetNext,通过对Non repeaters和Max repetitions参数的设定,高效率地从Agent获取大量管理对象数据,如果get-request中的参数有一个不存在,请求照样会被正常执行;而在SNMPv1种将收到一个错误消息)
  • Set(设置参数值)
  • Trap(发送告警)
  • inform(相当于Trap的升级版,但是Trap消息发出去之后不会收到响应消息,而inform消息在发出之后能收到响应消息)
  • Response(GET操作的响应信息)
  • report(当消息不能解密时发送该消息)

V3采用了USM和VACM技术。USM提供了认证和加密功能,VACM确定用户是否允许访问特定的MIB对象以及访问方式。USM(基于用户的安全模型):Agent通过对管理端消息中携带的用户、密码(采用MD5或者SHA加密)、authkey(认证秘钥)以及engineid(agent的标识码)对消息进行鉴权和完整性验证,整个消息体采用DES进行加密。V3数据消息采用密文传送,通过wireshark/tcpdump等抓包工具不可见其实际的内容。

开发

前面都是些基础概念,知道就行,作为程序员,关键还得会用,
在这里插入图片描述

通常在开发过程中,有两种方式实现NMS,涉及到的开源软件就是Net snmp,既提供了命令行的操作,也提供了c语言的lib,还提供了Agent的功能。
在Centos上只需要简单的

yum install net-snmp-*

即可完成全部需要的(不需要的)软件安装。
在这里插入图片描述

C 语言

直接调用 API 进行 SNMP Trap 处理
所需要的头文件
为了使用 netsnmp 的 API,必须 include 以下这些头文件:
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>

命令行

命令功能
snmpget用来查询叶子节点
snmpbulkgetsnmpget 优化版
snmpgetnext通过父节点查询叶子节点
snmpwalk用来取得所有类识别代码 (OID, Object Identifier)
snmpbulkwalksnmpwalk优化版
snmptable用来查询表对象
snmpset修改数据
snmpinform向网管发送一个SNMP trap,并得到相应
snmptrap向网管发送一个SNMP trap

Agent

直接运行snmpd即可运行为Agent,然后调用一个模拟器即可进行数据获取。

具体的细节内容还很多,我就不一一细说了,因为我也不知道。
在这里插入图片描述

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
网络协议仿真教学系统(通用版)为高校相关专业讲授计算机网络,特别是TCP/IP协议族,提供了一套实践教学平台。通过对各种数据帧的灵活编辑、仿真发送、捕获解析和会话分析,学生可以深入地理解和掌握网络协议的内部原理和运行机制。借助此平台还可以学习网络程序设计、网络攻防和故障性能分析等相关知识。本系统编排的实验课程强调学生的动手实践和设计分析能力,着力培养创新型人才。 内容如下: ◆基础协议实验 实验 1 以太网帧的构成 实验 2 地址转换协议ARP 实验 3 网际协议IP 实验 4 Internet控制报文协议ICMP 实验 5 Internet组管理协议IGMP 实验 6 用户数据报协议UDP 实验 7 传输控制协议TCP 实验 8 简单网络管理协议SNMP 实验 9 动态主机配置协议DHCP 实验 10 域名服务协议DNS 实验 12 应用层协议-1:超文本传输协议HTTP 实验 13 应用层协议-2:TELNET与FTP 实验 14 应用层协议-3:邮件协议SMTP 、POP3 、IMAP 实验 15 应用层协议-4:NetBIOS应用及SMB/CIFS协议 实验 16 路由协议-1:路由信息协议RIP 实验 17 路由协议-2:开放式最短路径优先协议OSPF ◆网络攻防实验 实验 18 网络攻防-1:ARP地址欺骗 实验 19 网络攻防-2:ICMP重定向 实验 20 网络攻防-3:TCP与UDP端口扫描 实验 21 网络攻防-4:路由欺骗 ◆网络故障实验 实验 22 网络故障分析-1:冲突与网络广播风暴 实验 23 网络故障分析-2:路由环与网络回路 ◆网络编程实验 实验 25 网络程序设计-1:Ping实现(原始套接字) 实验 26 网络程序设计-2:聊天工具(套接字UDP) 实验 27 网络程序设计-3:文件传输工具(套接字TCP) 实验 28 网络程序设计-4:主机信息获取工具(Winsock/IP Help/WMI等) 实验 29 网络程序设计-5:下载客户端(WinInet) 实验 30 网络程序设计-6:邮件收发器(MAPI) 实验 31 网络程序设计-7:综合设计 ◆其他 实验 11 网络地址转换NAT 实验 24 综合实验
Net-SNMP是一个用于实现SNMP(Simple Network Management Protocol,简单网络管理协议)的工具包。学习Net-SNMP主要包括以下几个方面: 1. 编译和安装Net-SNMP:首先需要下载和解压Net-SNMP的源代码,然后通过命令行进行编译和安装。 2. 编写MIB文件:MIB(Management Information Base,管理信息库)文件用于定义被SNMP管理的对象。你可以使用文本编辑器编写MIB文件,其中包含了对象的标识符和相关信息。 3. 转换MIB文件:将MIB文件转换成.c和.h文件,这样可以在SNMP代理中使用。可以使用工具来进行这个转换过程。 4. Agent代理工程:Agent代理是一个运行在网络设备上的软件模块,它负责收集和提供设备的管理信息给SNMP管理系统。学习Net-SNMP还需要了解如何配置和运行Agent代理工程。 5. Trap机制:Trap是SNMP的一种机制,用于报告特殊事件的发生。学习Net-SNMP时需要了解如何配置Trap机制,以便及时获得网络资源的实时监控。 总之,学习Net-SNMP主要包括编译和安装Net-SNMP,编写和转换MIB文件,配置和运行Agent代理工程,以及理解Trap机制等方面。这些知识可以帮助你实现有效的网络管理软件。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [SNMP网管学习笔记](https://download.csdn.net/download/qiek/6674485)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [net-snmp学习笔记<一> — 介绍](https://blog.csdn.net/prochsh/article/details/49888141)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖哥王老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值