二、SNMP(UDP)

一、什么是SNMP协议

SNMP(Simple Network Management Protocol)是一种用于管理网络设备的协议。它允许网络管理员监控网络设备的性能和状态,以及进行故障排除和配置更改。SNMP通过在网络设备上运行的代理程序收集有关设备的信息,并将这些信息发送给网络管理系统。网络管理系统可以使用这些信息来了解网络设备的状态,以便及时发现和解决问题。SNMP还可以用于配置网络设备,例如更改设备的IP地址或路由表。

SNMP协议采用轮询机制,提供最基本的功能集,适合小型、快速、低价格的环境使用,而且snmp协议以用户数据报协议(UDP)报文为承载,因而受到绝大多数设备的支持,同时保证管理信息再任意两点传送,便于管理员在网络上的任何节点检索信息,进行故障排查。

二、SNMP的基本组件

SNMP基本组件包括网络管理系统NMS(Network Management System)、代理进程(Agent)、被管对象(Management Object)和管理信息库MIB(Management Information Base)。SNMP体系结构为:

2.1 NMS(管理站)

NMS:NMS在网络中扮演管理者的角色,是一个采用SNMP协议对网络设备进行管理、监视的系统,运行在NMS服务器上。

NMS可以向设备上的Agent发出请求,查询或修改一个或多个具体的参数值。
NMS可以接收设备上的Agent主动发送的Trap信息,以获知被管理设备当前的状态。

管理站是指通过SNMP协议来监控和管理网络设备的计算机或应用程序。管理站可以向代理发送请求消息,以获取代理的状态信息,并且可以向代理发送命令消息,以控制代理的行为。

2.2 Agent(代理)

Agent是被管理设备中的一个代理进程,用于维护被管理设备的信息数据并响应来自NMS的请求,把管理数据汇报发送请求的NMS。

Agent接收到NMS的请求信息后,通过MIB表完成相应指令后,并把操作结果响应给NMS。
当设备发生故障或者其他事件时,设备会通过Agent主动发送信息给NMS,向NMS报告设备当前的状态变化。

2.3 Managed Object

Managed Object指被管理对象。每一个设备可能包含多个被管理对象,被管理对象可以是设备中的某个硬件,也可以是在硬件、软件(如路由选择协议)上配置的参数集合。

2.4 MIB(管理信息库)

MIB是一个层次结构的数据库,用于存储网络设备的状态信息。MIB中包含了一系列的对象,每个对象都有一个唯一的标识符和一个值。管理站可以通过标识符来访问MIB中的对象,并获取对象的值。通过MIB,可以完成以下功能:

1. Agent通过查询MIB,可以获知设备当前的状态信息。
2. Agent通过修改MIB,可以设置设备的状态参数。
3. SNMP的MIB采用树型结构,它的根在最上面,根没有名字。

三、SNMP端口

SNMP端口是SNM[通信端点,SNMP消息传输通过UDP进行,通常使用UDP端口号161/162。有时也使用传输层安全性(TLS)或数据报传输层安全性(DTLS)协议,端口使用情况如下表所示:

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

四、SNMP协议工作原理

管理站是网络管理员使用的工具,它可以通过SNMP协议向网络设备发送请求,以获取设备的信息或更改设备的配置。管理站可以是一个软件应用程序,也可以是一个硬件设备,例如网络管理器。

代理是网络设备上运行的软件程序,它负责收集设备的信息并将其发送给管理站。代理还可以接受来自管理站的请求,并根据请求更改设备的配置。

当管理站需要获取设备的信息时,它会向设备发送一个SNMP请求。这个请求包含一个OID(Object Identifier),它指定了所需信息的类型。设备上的代理会收到这个请求,并查找与OID相关联的信息。代理将所需信息打包成一个SNMP响应,并将其发送回管理站。

当管理站需要更改设备的配置时,它会向设备发送一个SNMP SET请求。这个请求包含一个OID和一个新值,它指定了要更改的配置类型和新值。设备上的代理会收到这个请求,并根据请求更改设备的配置。

总的来说,SNMP协议的工作原理是基于管理站和代理之间的交互,通过发送请求和响应来实现网络设备的监控和管理。

操作类型描述备注
Get Get操作可以从Agent中提取一个或多个参数值。  
GetNext GetNext操作可以从Agent中按照字典序提取下一个参数值。  
Set Set操作可以设置Agent的一个或多个参数值。  
Response Resopnse操作可以返回一个或多个参数值。这个操作是由Agent发出的,它是GetRequest、GetNextRequest、SetRequest和GetBulkRequest四种操作的响应操作。Agent接收到来自NMS的Get/Set指令后,通过MIB完成相应的查询/修改操作,然后利用Response操作将信息回应给NMS。  
Trap Trap信息是Agent主动向NMS发出的信息,告知管理进程设备端出现的情况。  
GetBulk GetBulk操作实现了NMS对被管理设备放入信息群查询。 SNMPv1版本不支持GetBulk操作
Inform InformRequest也是被管理设备向NMS主动发送告警。与Trap告警不同的是,被管理设备发送Inform告警后,需要NMS回复InformResponse来进行确认。 SNMPv1版本不支持lnform操作

五、SNMP协议中PDU类型中数据OID计算规则

https://blog.csdn.net/qq446252221/article/details/125847450

六、SNMP协议结构体

6.1 部分参数介绍

SNMP协议头的结构体通常称为SNMP消息头,它包含了SNMP协议中重要的信息,如版本号、社区字符串、PDU类型等等。SNMP消息头的结构体通常由以下字段组成:

1. 版本号(version):指定SNMP协议的版本号,通常为1或2c。

2. 社区字符串(community):用来验证SNMP消息的合法性,只有拥有正确的社区字符串才能对SNMP代理进行读写操作。

3. PDU类型(PDU type):指定SNMP消息的类型,如GetRequest、GetNextRequest、GetResponse等。

4. 请求ID(request ID):用于唯一标识一个SNMP请求。

5. 错误状态(error status):用于指示SNMP请求的错误状态,如noError、tooBig、noSuchName等。

6. 错误索引(error index):用于指示SNMP请求中出错的变量的索引。

这些字段组成了SNMP消息头的结构体,它们共同描述了SNMP消息的基本信息,帮助SNMP代理和管理系统进行通信和管理网络设备。

6.2 get-request

 

 

6.3 get-response

 

 

七、SNMP与普通UDP的区别

1. 端口号不同:SNMP使用161号端口,而UDP没有固定的端口号。

2. 数据格式不同:SNMP使用ASN.1(Abstract Syntax Notation One)格式,而UDP没有固定的数据格式。

3. 功能不同:SNMP协议是一种网络管理协议,它可以用于收集和管理网络设备的信息,如路由器、交换机、服务器等;而UDP协议只是一种传输层协议,用于在网络上传输数据。

4. 安全性不同:SNMP协议提供了一些安全机制,如身份验证、访问控制等,以保证网络管理的安全性;而UDP协议没有提供这些安全机制,传输的数据容易被窃听或篡改。

5. 如果数据段的报文第一个字节是 0x30则代表就是SNMP协议

八、Python实现SNMP协议的Get/Response

https://www.cnblogs.com/wangyong123/articles/17015233.html#_label5

 

posted on 2023-03-30 13:39  软饭攻城狮  阅读(1168)  评论(0编辑  收藏  举报

导航