什么是SNMP协议

SNMP(Simple Network Management Protocol)简单网络管理协议是一种基于TCP/IP协议的网络管理协议。它是用于管理网络设备(如路由器、交换机、服务器、打印机等)的标准协议。
snmp协议有三个版本:SNMPv1、SNMPv2c和SNMPv3,我们可以根据情况选择配置一个或多个版本。

为什么要用SNMP

简单易用:SNMP协议的设计非常简单,易于实现和使用。

跨平台:SNMP协议是跨平台的,可以在不同的操作系统和硬件平台上使用。

实时监控:SNMP协议可以实时监控网络设备的状态和性能,包括CPU利用率、内存使用率、网络流量等。

远程管理:SNMP协议可以通过网络远程管理网络设备,包括配置、监控和故障排除等。

自动化管理:SNMP协议可以与其他管理工具集成,实现自动化管理,减少人工干预。

SNMP协议是网络工程师必备的一种协议,它可以帮助网络工程师更好地管理和维护网络设备,提高网络的可靠性和性能。

SNMP的工作过程

管理站发出请求:管理站(通常是网络管理员)向被管理设备(如路由器、交换机、服务器等)发出SNMP请求,请求获取设备的状态信息或执行某些操作。

被管理设备响应请求:被管理设备接收到SNMP请求后,根据请求的类型和内容,生成相应的SNMP响应,并将响应发送回管理站。

SNMP协议传输数据:SNMP协议使用UDP协议传输数据,因此SNMP请求和响应都是通过UDP数据包进行传输的。

SNMP协议版本:SNMP协议有多个版本,包括SNMPv1、SNMPv2c和SNMPv3等。不同版本的SNMP协议支持的功能和安全性不同,因此在使用SNMP协议时需要选择适合的版本。

SNMP协议消息格式:SNMP协议消息由头部和数据部分组成。头部包含版本号、社区名等信息,数据部分包含请求或响应的具体内容。

SNMP协议管理信息库:SNMP协议管理信息库(MIB)是一种用于描述网络设备状态和性能的标准格式。SNMP协议使用MIB来组织和管理设备的状态信息。

SNMP协议消息

SNMP请求消息

SNMP请求消息主要有以下几种:

  1. GetRequest:用于请求一个或多个MIB对象的值。
  2. GetNextRequest:用于请求下一个MIB对象的值。
  3. GetBulkRequest:用于请求多个MIB对象的值,可以一次性获取多个MIB对象的值。
  4. SetRequest:用于设置一个或多个MIB对象的值。
  5. Trap:用于向管理站发送一个事件通知,例如设备故障或警告。
    其中GetRequest、GetNextRequest和GetBulkRequest用于获取MIB对象的值,SetRequest用于设置MIB对象的值,Trap用于向管理站发送事件通知。在实际应用中,根据需要选择合适的SNMP请求消息类型进行操作。

    SNMP响应消息

    SNMP响应消息主要包括以下内容:
  6. SNMP版本号:响应消息中包含了SNMP协议的版本号,用于标识响应消息所使用的SNMP协议版本。
  7. 消息ID:响应消息中包含了请求消息的消息ID,用于标识响应消息是对哪个请求消息进行响应的。
  8. 错误状态码:响应消息中包含了错误状态码,用于标识响应消息中是否存在错误。如果错误状态码为0,则表示响应消息中没有错误。
  9. 错误状态描述:响应消息中包含了错误状态描述,用于描述错误状态码所表示的错误信息。
  10. 数据部分:响应消息中包含了请求消息所请求的数据,例如设备的状态信息、性能指标等。
  11. SNMPv3安全模型相关信息:如果使用了SNMPv3安全模型,则响应消息中还会包含安全相关的信息,例如安全级别、认证信息、加密信息等。
    需要注意的是,SNMP响应消息是对SNMP请求消息的响应,因此响应消息的内容和格式与请求消息的内容和格式是相对应的。

    Trap消息

    Trap消息是SNMP协议中的一种消息类型,用于向管理站发送设备的事件通知。当被管理设备发生某些特定的事件(如硬件故障、网络异常等)时,它会向管理站发送Trap消息,以便管理员及时了解设备的状态并采取相应的措施。
    Trap消息由被管理设备主动发送,不需要管理站发出请求
  • authPriv(认证并加密)
  • authNoPriv(认证但是不加密)
  • noAuthNoPriv (不认证也不加密)

SNMP的基本组件

SNMP基本组件包括网络管理系统NMS(Network Management System)、代理进程(Agent)、被管对象(Managed Object)和管理信息库MIB(Management Information Base)。如图所示他们共同构成SNMP的管理模型,在SNMP的体系结构中都起着至关重要的作用。

image-20230403232337701

SNMP版本

SNMP版本
SNMP有三种版本:SNMPv1,SNMPv2c和SNMPv3。
SNMPv1:SNMP的第一个版本,它提供了一种监控和管理计算机网络的系统方法,它基于团体名认证,安全性较差,且返回报文的错误码也较少。它在RFC 1155和RFC 1157中定义。
SNMPv2c:第二个版本SNMPv2c引入了GetBulk和Inform操作,支持更多的标准错误码信息,支持更多的数据类型。它在RFC 1901,RFC 1905和RFC 1906中定义。
SNMPv3:鉴于SNMPv2c在安全性方面没有得到改善,IETF颁布了SNMPv3版本,提供了基于USM(User Security Module)的认证加密和基于VACM(View-based Access Control Model)的访问控制,是迄今为止最安全的版本。SNMPv3在RFC 1905,RFC 1906,RFC 2571,RFC 2572,RFC 2574和RFC 2575中定义。

SNMP使用的端口

过程 协议 端口号
代理进程接收请求信息 UDP协议 161
NMS与代理进程之间的通信 UDP协议 161
NMS接收通知信息 UDP协议 162
代理进程生成通知信息 / 任何可用的端口
接收请求信息 TLS/DTLS 10161
接收通知信息 TLS/DTLS 10162