二、SNMP(UDP)
SNMP(Simple Network Management Protocol)是一种用于管理网络设备的协议。它允许网络管理员监控网络设备的性能和状态,以及进行故障排除和配置更改。SNMP通过在网络设备上运行的代理程序收集有关设备的信息,并将这些信息发送给网络管理系统。网络管理系统可以使用这些信息来了解网络设备的状态,以便及时发现和解决问题。SNMP还可以用于配置网络设备,例如更改设备的IP地址或路由表。
SNMP协议采用轮询机制,提供最基本的功能集,适合小型、快速、低价格的环境使用,而且snmp协议以用户数据报协议(UDP)报文为承载,因而受到绝大多数设备的支持,同时保证管理信息再任意两点传送,便于管理员在网络上的任何节点检索信息,进行故障排查。
NMS:NMS在网络中扮演管理者的角色,是一个采用SNMP协议对网络设备进行管理、监视的系统,运行在NMS服务器上。
NMS可以向设备上的Agent发出请求,查询或修改一个或多个具体的参数值。
NMS可以接收设备上的Agent主动发送的Trap信息,以获知被管理设备当前的状态。管理站是指通过SNMP协议来监控和管理网络设备的计算机或应用程序。管理站可以向代理发送请求消息,以获取代理的状态信息,并且可以向代理发送命令消息,以控制代理的行为。
Agent是被管理设备中的一个代理进程,用于维护被管理设备的信息数据并响应来自NMS的请求,把管理数据汇报发送请求的NMS。
Agent接收到NMS的请求信息后,通过MIB表完成相应指令后,并把操作结果响应给NMS。
当设备发生故障或者其他事件时,设备会通过Agent主动发送信息给NMS,向NMS报告设备当前的状态变化。
MIB是一个层次结构的数据库,用于存储网络设备的状态信息。MIB中包含了一系列的对象,每个对象都有一个唯一的标识符和一个值。管理站可以通过标识符来访问MIB中的对象,并获取对象的值。通过MIB,可以完成以下功能:
1. Agent通过查询MIB,可以获知设备当前的状态信息。
2. Agent通过修改MIB,可以设置设备的状态参数。
3. SNMP的MIB采用树型结构,它的根在最上面,根没有名字。
过程 协议 端口号 代理进程接收请求信息 UDP协议 161 NMS与代理进程之间的通信 UDP协议 161 NMS接收通知信息 UDP协议 162 代理进程生成通知信息 任何可用的端口 接收请求信息 TLS/DTLS 10161 接收通知信息 TLS/DTLS 10162
管理站是网络管理员使用的工具,它可以通过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协议结构体
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代理和管理系统进行通信和管理网络设备。
1. 端口号不同:SNMP使用161号端口,而UDP没有固定的端口号。
2. 数据格式不同:SNMP使用ASN.1(Abstract Syntax Notation One)格式,而UDP没有固定的数据格式。
3. 功能不同:SNMP协议是一种网络管理协议,它可以用于收集和管理网络设备的信息,如路由器、交换机、服务器等;而UDP协议只是一种传输层协议,用于在网络上传输数据。
4. 安全性不同:SNMP协议提供了一些安全机制,如身份验证、访问控制等,以保证网络管理的安全性;而UDP协议没有提供这些安全机制,传输的数据容易被窃听或篡改。
5. 如果数据段的报文第一个字节是 0x30则代表就是SNMP协议