SNMP从入门到开发:基础篇

简介: SNMP协议入门 1、引言 基于TCP/IP的网络管理包含3个组成部分: 1) 一个管理信息库MIB(Management Information Base)。

SNMP协议入门

1、引言

基于TCP/IP的网络管理包含3个组成部分:

1) 一个管理信息库MIBManagement Information Base)。管理信息库包含所有代理进程的所有可被查询和修改的参数。RFC 1213[McCloghrie and Rose 1991]定义了第二版的MIB,叫做MIB-II

2)  关于MIB的一套公用的结构和表示符号。叫做管理信息结构SMIStructure of Management Information)。这个在RFC 1155 [Rose and McCloghrie 1990] 中定义。例如:SMI定义计数器是一个非负整数,它的计数范围是 0~4294967295,当达到最大值时,又从0开始计数。

3) 管理进程代理进程之间的通信协议,叫做简单网络管理协议SNMPSimple Network Management Protocol)。在RFC 1157 [Case et al. 1990]中定义。SNMP包括数据报交换的格式等。尽管可以在传输层采用各种各样的协议,但是在SNMP中,用得最多的协议还是UDP

 

2SNMP协议概述

简单网络管理协议(SNMPSimple Network Management Protocol)是由互联网工程任务组(IETFInternet Engineering Task Force )定义的一套网络管理协议。该协议基于简单网关监视协议(SGMPSimple Gateway Monitor Protocol)。利用SNMP,一个管理工作站可以远程管理所有支持这种协议的网络设备,包括监视网络状态、修改网络设备配置、接收网络事件警告等。 虽然SNMP开始是面向基于IP的网络管理,但作为一个工业标准也被成功用于电话网络管理。

http://www.fjzzled.com/hzjdyyyyjs/95.html 

http://www.fjzzled.com/hzjdyyyyjs/94.html 

http://www.sjys365.com/smzl/2999.html 

http://www.sjys365.com/smzl/2998.html 

 

3SNMP的发展史

SNMP经过了一个相对较长的发展过程,到目前为止一共经历了三个版本。当下使用最广泛是SNMPv2

l  1989年发布了第一个版本的SNMP,称为SNMPv1

l  1991年发布SNMP的一个补充---RMON(Remote Network Monitoring,远程网络监视)RMON扩充了SNMP的功能,包括对LAN的管理以及对依附于这些网络设备的管理。注:RMON没有修改和增加SNMP协议本身以及SMI,只是增加了SNMP监视子网的能力,把整个子网当成一个个体来监视,提供了新的MIB库及相关的MIB行为。

l  1993SNMPv1的升级版被提出,SNMPv2

l  1995SNMPv2正式发布,v2增加了SNMPv1的功能,并规定了如何在基于OSI的网络中使用SNMP。同时RMON于本年度扩展为RMONv2

l  1998SNMPv3发布,一系列文档定义了SNMP的安全性,并定义了将来改进的总体结构。SNMPv3可以和v2v1一起使用。

 

4SNMP的工作原理

SNMP采用特殊的客户机/服务器模式,即代理/管理站模型。对网络的管理与维护是通过管理工作站与SNMP代理间的交互工作完成的。每个SNMP从代理负责回答SNMP管理工作站(主代理)关于MIB定义信息的各种查询。

SNMP的应用场景如图1所示:

img_e25d32697c9fdfb9cc118318f57091d3.jpg


 管理站和代理端使用MIB进行接口统一,MIB定义了设备中的被管理对象。管理站和代理都实现相应的MIB对象,使得双方可以识别对方的数据,实现通信。管理站向代理请求MIB中定义的数据,代理端识别后,将管理设备提供的相关状态或参数等数据转换成MIB定义的格式,最后将该信息返回给管理站,完成一次管理操作。

 

5SNMP的报文类型

SNMP中定义了五种消息类型:Get-RequestGet-ResponseGet-Next-RequestSet-RequestTrap 

(1)Get-Request Get-Next-RequestGet-Response

SNMP 管理站用Get-Request消息从拥有SNMP代理的网络设备中检索信息,而SNMP代理则用Get-Response消息响应。Get-Next- Request用于和Get-Request组合起来查询特定的表对象中的列元素。

(2)Set-Request 

SNMP管理站用Set-Request 可以对网络设备进行远程配置(包括设备名、设备属性、删除设备或使某一个设备属性有效/无效等)。

(3)Trap 

SNMP代理使用TrapSNMP管理站发送非请求消息,一般用于描述某一事件的发生,如接口UP/DOWNIP地址更改等。

上面五种消息中Get-RequestGet-Next-RequestSet-Request是由管理站发送到代理侧的161端口的;后面两种Get-ResponseTrap 是由代理进程发给管理进程的,其中Trap消息被发送到管理进程的162端口,所有数据都是走UDP封装。SNMP工作流程如图2

img_b2ab669bc7e77ba6344b09b98910ea06.jpg


6SNMP的报文格式

SNMP代理和管理站通过SNMP协议中的标准消息进行通信,每个消息都是一个单独的数据报。SNMP使用UDP(用户数据报协议)作为第四层协议(传输协议),进行无连接操作。SNMP消息报文包含两个部分:SNMP报头和协议数据单元PDU

img_678237cdf6558ad8a9778a1207d5f58a.jpg


    在实际网络传输环境下,SNMP报文的长度取决于其所采用的编码方式。SNMP统一采用BER(Basic Encoding Rule)的编码规则,同时在正式SNMP规范中使用的是ASN.1语法,Abastract Syntax Notation v1,即抽象语法描述语言。这两个概念在后面实践环节再做进一步介绍,这里只要稍微了解一下即可,不妨碍我们对协议本身的分析。这里我们简单解释一下BER编码规则:

    BER作为ANS.1的基本编码规则,描述具体的ANS.1对象如何编码为比特流在网络上进行传输。BER编码规则由三部分组成:

img_dcb68991c7d1b52b61b9e6da3bd2a8d4.jpg


    SNMP中定义了几种基本的数据类型,其中v1v2版有些改动,具体参见相应的RFC文档。这里我们只介绍几种最常见的类型:

l  INTEGER:一个整数

l  OCTER STRING 0或多个8bit字节,每个字节在0~255之间取值

l  DisplayString0或多个8bit字节,每个字节必须是ASCII码。在MIB-II中,所有该类型变量不能超过255个字符(0个字符可以)

l  NULL:代表相关的变量没有值

l  IpAddress4字节长的OCTER STRING,以网络字节序表示IP地址

l  PhyAddress6字节长的OCTER STRING,代表物理地址

l  Counter:非负整数,可以从0递增到232-1()。达到最大值后归0

l  TimeTicks:时间计数器,以0.01秒为单位递增,不同的变量可以有不同的递增幅度。所以在定义这种类型的变量时需要制定递增幅度

l  SEQUENCE:与C语言中的结构体类似

l  SEQUENCE OF:一个向量,参见后面ANS.1语法详细介绍章节

SNMP报文在传输层是封装在UDP报文中的,而UDP又是基于IP网络的,因此,我们可以得到完整的报文描述结构,如下图所示:

img_e00bc2f2c8c0a7b205c463f853285131.jpg


    PDU类型其实包含两个字节,第一个字节表示真实的PDU的类型;第二个字节表示后面报文所占的字节总数。针对SNMPv1,这个字段取值如下:

1 PDU类型

PDU类型

  

   


img_4358b56fa3d002860e2d0e74f5cbf033.jpg


  


img_536f96028c21c8e6ec5bf3c2d692b6d9.jpg


  

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 


img_6745463c9ec61f62b1df30e47211f007.jpg


 

 

 

  

 

 

 

 

 

 

 

 







目录
相关文章
|
网络协议 Linux C++
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
500 0
|
数据采集 安全 前端开发
视频类音频了网站如何防止被盗
视频类音频了网站如何防止被盗
880 0
|
数据采集 数据可视化 Ubuntu
相机和livox激光雷达外参标定:ROS功能包---livox_camera_lidar_calibration 使用方法
该功能包提供了一个手动校准Livox雷达和相机之间外参的方法,已经在Mid-40,Horizon和Tele-15上进行了验证。其中包含了计算相机内参,获得标定数据,优化计算外参和雷达相机融合应用相关的代码。本方案中使用了标定板角点作为标定目标物,由于Livox雷达非重复性扫描的特点,点云的密度较大,比较易于找到雷达点云中角点的准确位置。相机雷达的标定和融合也可以得到不错的结果。
相机和livox激光雷达外参标定:ROS功能包---livox_camera_lidar_calibration 使用方法
|
8月前
|
JavaScript 安全 Java
基于springboot的摄影器材租赁回收系统
本系统基于Java、Spring Boot与Vue技术,构建摄影器材租赁回收平台,解决市场不规范、资源浪费等问题。支持在线预约、信用免押、智能评估等功能,提升器材利用率,降低用户成本,推动行业绿色可持续发展。
|
11月前
|
监控 Java 测试技术
2025 年 Java 核心技术从入门到精通实战指南
《2025年Java核心技术实战指南》全面覆盖Java开发的最新趋势与最佳实践。内容包括Java新特性(如模式匹配、文本块、记录类)、微服务架构(Spring Boot 3.0+、Spring Cloud)、响应式编程(Reactor、WebFlux)、容器化与云原生(Docker、Kubernetes)、数据访问技术(JPA、R2DBC)、函数式编程、单元测试与集成测试(JUnit 5、Mockito)、性能优化与监控等。通过实战案例,帮助开发者掌握构建高性能、高可用系统的技能。代码资源可从[链接](https://pan.quark.cn/s/14fcf913bae6)获取。
457 7
|
机器学习/深度学习 人工智能 自然语言处理
ModernBERT:英伟达开源的新一代编码器模型,性能超越 SOTA,通过去除填充和序列打包减少计算浪费,提高训练和推理的效率
ModernBERT 是由英伟达和 HuggingFace 等机构联合开源的新一代编码器模型,支持长上下文处理,性能超越 SOTA,适合多种自然语言处理任务。
643 7
ModernBERT:英伟达开源的新一代编码器模型,性能超越 SOTA,通过去除填充和序列打包减少计算浪费,提高训练和推理的效率
|
机器学习/深度学习 PyTorch 算法框架/工具
CNN中的注意力机制综合指南:从理论到Pytorch代码实现
注意力机制已成为深度学习模型的关键组件,尤其在卷积神经网络(CNN)中发挥了重要作用。通过使模型关注输入数据中最相关的部分,注意力机制显著提升了CNN在图像分类、目标检测和语义分割等任务中的表现。本文将详细介绍CNN中的注意力机制,包括其基本概念、不同类型(如通道注意力、空间注意力和混合注意力)以及实际实现方法。此外,还将探讨注意力机制在多个计算机视觉任务中的应用效果及其面临的挑战。无论是图像分类还是医学图像分析,注意力机制都能显著提升模型性能,并在不断发展的深度学习领域中扮演重要角色。
966 10
|
11月前
|
机器学习/深度学习 自然语言处理 并行计算
《深度揭秘:利用Hugging Face Transformer库打造独特混合专家(MoE)模型》
混合专家(MoE)模型是一种创新架构,通过融合多个“专家”子模型,针对不同任务提供更优解决方案。相比传统单一模型,MoE能更好地应对复杂多样的语言任务。借助Hugging Face Transformer库,可利用预训练模型定制专家,并设计门控网络协调任务分配。本文详细解析了MoE模型的设计、训练与优化方法,探讨其在智能客服、机器翻译等领域的应用潜力,以及未来推动自然语言处理技术发展的可能性。
450 1
|
数据采集 人工智能 分布式计算
MaxFrame:链接大数据与AI的高效分布式计算框架深度评测与实践!
阿里云推出的MaxFrame是链接大数据与AI的分布式Python计算框架,提供类似Pandas的操作接口和分布式处理能力。本文从部署、功能验证到实际场景全面评测MaxFrame,涵盖分布式Pandas操作、大语言模型数据预处理及企业级应用。结果显示,MaxFrame在处理大规模数据时性能显著提升,代码兼容性强,适合从数据清洗到训练数据生成的全链路场景...
846 5
MaxFrame:链接大数据与AI的高效分布式计算框架深度评测与实践!