首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >硬件中的OID是什么?SNMP如何通过OID获取信息?——用“图书馆”比喻彻底讲清底层原理-优雅草卓伊凡|小无

硬件中的OID是什么?SNMP如何通过OID获取信息?——用“图书馆”比喻彻底讲清底层原理-优雅草卓伊凡|小无

原创
作者头像
卓伊凡
发布2025-05-16 23:11:19
发布2025-05-16 23:11:19
79700
代码可运行
举报
文章被收录于专栏:其他相关技术其他相关技术
运行总次数:0
代码可运行

硬件中的OID是什么?SNMP如何通过OID获取信息?——用“图书馆”比喻彻底讲清底层原理-优雅草卓伊凡|小无

1. 终极比喻:OID是设备的“图书编码系统”

想象你走进一座巨型图书馆(这个图书馆就是一台网络设备,比如路由器),里面存放着海量书籍(这些书籍就是设备的各种数据,如CPU温度、内存使用量、端口状态等)。但如果没有分类规则,你根本无法找到想要的书。

  • OID(Object Identifier) 就是这座图书馆的全球唯一图书编码系统,比如:
    • 1.3.6.1.2.1.1.5.0 代表“设备名称”
    • 1.3.6.1.2.1.25.3.3.1.2.1 代表“CPU温度”
  • SNMP协议 则是图书管理员(Agent),当你用SNMP查询时,管理员会按照OID编码找到对应的书(数据)并交给你。

" class="reference-link">

2. OID与SNMP的关系:一问一答的精准定位

(1)SNMP的查询过程(比喻版)
  1. 你(管理端) 问图书管理员(SNMP Agent):“请问编号 1.3.6.1.2.1.1.5.0 的书在哪里?”
  2. 管理员 根据OID编号,在书架上精确找到《设备名称》这本书(数据),回答:“这本书的内容是Router-A。”
  3. 如果编号不存在,管理员会回答:“抱歉,没有这本书。”(SNMP返回错误)
(2)技术实现流程
代码语言:javascript
代码运行次数:0
运行
复制
管理端(NMS) --SNMP GET请求(OID)--> 设备(Agent)
设备(Agent) --返回OID对应数据--> 管理端(NMS)

3. OID的底层结构:像快递地址一样分层

OID是一个由点分隔的数字序列,每一层代表不同的分类(类似“国家-省-市-街道”):

  • 示例OID1.3.6.1.2.1.1.5.0(设备名称)
    • 1(ISO国际组织) → 3(ISO认定的组织) → 6(美国国防部) → 1(互联网) → 2(IETF管理的设备) → 1(MIB-2标准库) → 1(系统组) → 5(设备名称) → 0(实例编号)
常见OID示例(MIB-2标准库)

OID

描述

示例返回值

1.3.6.1.2.1.1.5.0

设备名称

“Router-A”

1.3.6.1.2.1.1.1.0

设备描述

“华为AR2200…”

1.3.6.1.2.1.2.2.1.10.1

端口1的入向流量

1024(字节)



4OIDs 是什么?——深入解析SNMP的“数据坐标系统”

1. 一句话定义

OIDs(Object Identifiers,对象标识符) 是SNMP协议中用于唯一标识被管理设备(如路由器、交换机、服务器等)上各类数据的层级化数字编码系统,相当于设备的“数据GPS坐标”。


2. 用“城市地址系统”类比OIDs

想象你要在全球找到一个具体位置:

  • 国家 → 省 → 市 → 区 → 街道 → 门牌号 这种层级结构就是OID的灵感来源。
  • 例如
    • 现实地址:中国.广东省.深圳市.南山区.科技园.腾讯大厦
    • SNMP OID:.1.3.6.1.2.1.1.5.0(设备名称)

每一级数字代表一个明确的分类,最终指向唯一数据点。


3. OIDs 的四大核心特性

(1)全球唯一性
  • 由国际标准化组织(ISO)和互联网工程任务组(IETF)统一分配,确保无冲突。
  • 示例:所有网络设备的CPU温度OID都是 .1.3.6.1.2.1.25.3.3.1.2(来自标准MIB库)。
(2)树状层级结构

OID的每一层数字都有明确含义(类似域名解析):

代码语言:javascript
代码运行次数:0
运行
复制
根(root)
├── 1 (ISO) 
│   ├── 3 (ISO-identified-orgs)
│   │   └── 6 (US DoD → 互联网的起源)
│   │       └── 1 (internet)
│   │           ├── 2 (mgmt → IETF管理的设备)
│   │           │   └── 1 (mib-2 → 最常用标准库)
│   │           │       ├── 1 (system组)
│   │           │       │   └── 5 (sysName → 设备名称)
│   │           │       └── 25 (hrDevice组 → 硬件信息)
(3)可扩展性
  • 厂商可申请私有分支添加自定义OID。
    • 华为私有OID示例.1.3.6.1.4.1.2011(华为企业编号为2011)。
(4)实例化设计
  • 末尾数字区分同类对象的不同实例。
    • 例如
      • .1.3.6.1.2.1.2.2.1.10.1 → 端口1的入向流量
      • .1.3.6.1.2.1.2.2.1.10.2 → 端口2的入向流量

4. OIDs 与 SNMP 的协作流程

(1)SNMP查询的底层交互
代码语言:javascript
代码运行次数:0
运行
复制
sequenceDiagram
    管理端(NMS)->>设备Agent: SNMP GET请求(携带OID 1.3.6.1.2.1.1.5.0)
    设备Agent->>管理端(NMS): 返回数据 "Router-A"
(2)关键操作类型

SNMP操作

OID作用

类比

GET

精确查询单个OID的数据

问:“深圳市南山区人口是多少?”

GETNEXT

遍历OID树的下一个节点

问:“南山区之后是哪个区?”

WALK

递归获取整个OID子树的数据

获取“广东省所有城市列表”


5. 经典OIDs实例(MIB-II标准库)

OID

描述

数据类型

示例值

1.3.6.1.2.1.1.1.0

设备描述

STRING

“Huawei AR2200”

1.3.6.1.2.1.1.3.0

设备运行时间

Timeticks

123456 (秒)

1.3.6.1.2.1.2.2.1.10.1

端口1接收字节数

Counter32

1024000

1.3.6.1.2.1.25.3.3.1.2.1

CPU1温度

INTEGER

45 (℃)


6. 如何获取设备的OIDs列表?

(1)通过厂商MIB文件
  • 华为/思科等厂商会提供MIB(Management Information Base)文件,本质是OID的字典文档。
  • 示例命令(用snmptranslate解析MIB):
代码语言:javascript
代码运行次数:0
运行
复制
snmptranslate -On -IR sysName
# 输出:1.3.6.1.2.1.1.5
(2)SNMP扫描工具
  • 使用snmpwalk自动发现设备所有OID:
代码语言:javascript
代码运行次数:0
运行
复制
snmpwalk -v 2c -c public 192.168.1.1

7. OIDs 的常见问题

(1)为什么需要OID而不是直接用名字?
  • 效率:数字比字符串传输更快。
  • 兼容性:全球统一编码,避免语言冲突。
(2)OID会重复吗?
  • 不会:ISO严格分配顶级分支(如华为固定使用.1.3.6.1.4.1.2011)。
(3)如何知道某个功能的OID?

关键总结:OIDs是SNMP的基石,理解它就能精准控制任何支持SNMP的设备。


5. 实战:如何用SNMP工具查询OID?

以Linux的snmpwalk命令为例:

代码语言:javascript
代码运行次数:0
运行
复制
# 查询设备的所有系统信息(OID从1.3.6.1.2.1.1开始)
snmpwalk -v 2c -c public 192.168.1.1 1.3.6.1.2.1.1

输出示例:

代码语言:javascript
代码运行次数:0
运行
复制
1.3.6.1.2.1.1.5.0 = STRING: "Router-A"
1.3.6.1.2.1.1.6.0 = STRING: "机房A-3F"

6. 总结:OID是SNMP的“语言字典”

  • OID 是设备的唯一数据标识符,像图书馆的图书编码。
  • SNMP 通过OID实现精准数据查询,类似“按书号找书”。
  • 错误排查:如果SNMP获取不到数据,先检查OID是否存在(如设备厂商的MIB文件)。

下一步改进计划:在优雅草星云智控系统中,所有支持SNMP的设备均可通过OID自动发现和监控!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 硬件中的OID是什么?SNMP如何通过OID获取信息?——用“图书馆”比喻彻底讲清底层原理-优雅草卓伊凡|小无
    • 1. 终极比喻:OID是设备的“图书编码系统”
  • " class="reference-link">
    • 2. OID与SNMP的关系:一问一答的精准定位
      • (1)SNMP的查询过程(比喻版)
      • (2)技术实现流程
    • 3. OID的底层结构:像快递地址一样分层
      • 常见OID示例(MIB-2标准库)
  • 4OIDs 是什么?——深入解析SNMP的“数据坐标系统”
    • 1. 一句话定义
    • 2. 用“城市地址系统”类比OIDs
    • 3. OIDs 的四大核心特性
      • (1)全球唯一性
      • (2)树状层级结构
      • (3)可扩展性
      • (4)实例化设计
    • 4. OIDs 与 SNMP 的协作流程
      • (1)SNMP查询的底层交互
      • (2)关键操作类型
    • 5. 经典OIDs实例(MIB-II标准库)
    • 6. 如何获取设备的OIDs列表?
      • (1)通过厂商MIB文件
      • (2)SNMP扫描工具
    • 7. OIDs 的常见问题
      • (1)为什么需要OID而不是直接用名字?
      • (2)OID会重复吗?
      • (3)如何知道某个功能的OID?
    • 5. 实战:如何用SNMP工具查询OID?
    • 6. 总结:OID是SNMP的“语言字典”
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档