首页 > 编程知识 正文

网络管理协议的作用(snmp端口号)

时间:2023-05-06 18:48:20 阅读:76834 作者:1512

1 .引言

基于TCP/IP的网络管理包括两个:网络管理工作站(也称为管理进程、管理器)和受管网络单元(也称为受管设备)。 管理的设备类型包括:路由器、x终端、终端服务器和打印机等。 这些被管理设备的共同点是正在运行TCP/IP协议。 与被管理设备端相关的软件称为代理(agent )或代理进程。 管理站通常可以在具有颜色监视器的工作站上显示所有被管理设备的状态(例如,连接是否断开、各种连接上的通信量状况等)。

管理进程和代理进程之间的通信有两种方法。 一种方式是,管理进程向代理进程发出请求并查询特定的参数值。 例如,有多少个ICMP端口无法访问: 请参阅。 另一种方法是代理进程主动报告管理进程发生了某些重要事件。 例如,接口已断开。 当然,管理进程可以向代理进程查询特定的参数值,也可以根据需要修改代理进程的参数值。 例如,将默认IP TTL值更改为64。

基于TCP/IP的网络管理包括三个组件:

1 )基于管理信息库的管理信息库(MIB )。 管理资料档案库包含可以查询和修改所有代理进程的所有参数。 RFC 1213 [McCloghrie and Rose 1991]定义了称为MIB-II的第二版MIB。

2 )关于MIB的一组通用结构和表示符号。 称为管理信息结构的结构管理信息(SMI )。 这在RFC 1155[Rose and McCloghrie]中定义。 例如,SMI定义计数器是非负整数,其计数范围为0到0~4 294 967 295,达到最大值后又从0开始计数。

3 )管理和代理进程之间的通信协议称为简单网络管理协议SNMP (简单网络管理协议)。 在RFC 1157[Case et a1. 1990]中定义。 SNMP包括数据报交换的格式等。 传输层可以采用各种协议,而SNMP中使用最多的协议是UDP。

上述RFC中定义的SNMP称为SNMP v1或SNMP。 到1993年,发布了有关SNMP的新RFC。 这些RFC定义的SNMP称为版本2的SNMP(SNMPv2 )。

2 .协议

对于管理进程和代理进程之间的交互信息,SNMP定义了五种类型的消息:

1 )获取请求操作)从代理进程中提取一个或多个参数值。

2 ) get-next-request操作)从代理进程中提取一个或多个参数的下一个参数值(“下一个”的含义将在后面描述)。

3 )设置请求操作)设置代理进程的一个或多个参数值。

4 )获取响应操作)返回的一个或多个参数值。 此操作由代理进程完成。 这是对前面三个操作的响应操作。

5 )捕获操作)代理进程主动发送消息,通知管理进程发生了什么事。

前面三个操作由管理进程向代理进程发出。 以下两个是代理进程向管理进程发出的(为了简化,前面的三个操作今后称为get、get-next、set操作)。 图1显示了这五个操作。

图1

这些操作中的前四个操作是简单的请求响应方法,而且SNMP经常使用UDP协议,因此管理进程和代理进程之间可能会发生丢包。 因此,需要超时和重发机制。

管理流程发行的前三个操作采用UDP的161端口。 代理进程使用UDP上的162个端口发出Trap操作。 由于使用不同的端口号进行发送和接收,因此一个系统可以同时管理管理进程和代理进程

图2是封装在UDP数据报中的五个操作的SNMP消息格式。

图2 SNMP消息的格式

在图中,只标记了IP和UDP的开头长度。 这是因为,由于SNMP消息的代码采用了ASN.1和BER,所以消息的长度取决于变量的类型和值。 ASN.1和BER的内容将在后面叙述。 这里介绍各个字段的内容和作用。

图3显示了与每个PDU对应的值。 PDU是协议数据单元,也就是分组。

图3 SNMP消息的PDU类型

共同体字段是字符串。 这是管理进程和代理进程之间的密码,以明文形式。 默认值为公共。

对于get、get-next和set操作,请求id由管理进程设置,代理进程返回给get-response。 我在其他UDP APP应用程序中见过这种类型的字段。 此字段的作用是:客户端进程(当前情况下为管理进程)将服务器进程(或代理进程)的响应与客户端进程的呼叫相匹配。 此字段允许管理进程向一个或多个代理进程发出多个请求,并根据返回的许多响应对其进行分类。

错误状态字段由代理进程标记,是一个整数,指示发生了错误。 图4是参数值、名称、说明的对应关系。

图4 SNMP错误状态的值

错误索引字段是一个整数偏移量,指示发生错误时发生错误的参数。 由代理进程标记的,noSuchName、readOnly和

badValue差错时才进行标注。

在get、get-next和set的请求数据报中,包含变量名称和变量值的一张表。对于get和get-next操作,变量值部分被忽略,也就是不需要填写。

对于trap操作符(PDU类型是4),SNMP报文格式有所变化。


3.管理信息结构

 SNMP中,数据类型并不多。在本节,我们就讨论这些数据类型,而不关心这些数据类型在实际中是如何编码的。

INTEGER。一个变量虽然定义为整型,但也有多种形式。有些整型变量没有范围限制,有些整型变量定义为特定的值(例如,IP的转发标志就只有允许转发时的1或者不允许转发时的2这两种),有些整型变量定义为一个特定的范围(例如,UDP和TCP的端口号就从0到65535)。OCTER STRING 0或多个8 bit字节,每个字节值在0~255之间。对于这种数据类型和下一种数据类型的BER编码,字符串的字节个数要超过字符串本身的长度。这些字符串不是以NULL结尾的字符串。OBJECT IDENTIFIER 将在下一节中介绍。NULL。代表相关的变量没有值。例如,在get和get-next操作中,变量的值就是NULL,因为这些值还有待到代理进程处去取。IpAddress。4字节长度的OCTER STRING,以网络序表示的IP地址。每个字节代表IP地址的一个字段。PhysAddress。OCTER STRING类型,代表物理地址(例如以太网物理地址为6字节长度)。Counter。非负的整数,可从0递增到232-1(4 294 976 295)。达到最大值后归0。Gauge。非负的整数,取之范围为从0到4 294 976 295(或增或减)。达到最大值后锁定,直到复位。例如,MIB中的tcpCurrEstab就是类型的变量的一个例子,它代表目前在ESTABLISHED或CLOSE_WAIT状态的TCP连接数。TimeTicks。时间计数器,以0.01秒为单位递增,但是不同的变量可以有不同的递增幅度。所以在定义这种类型的变量的时候,必须指定递增幅度。例如,MIB中的sysUpTime变量就是这种类型的变量,代表代理进程从启动开始的时间长度,以多少个百分之一秒的数目来表示。SEQUENCE。这一数据类型与C程序设计语言中的"structure"类似。一个SEQUENCE包括0个或多个元素,每一个元素又是另一个ASN.1数据类型。例如,MIB中的UdpEntry就是这种类型的变量。它代表在代理进程侧目前"激活"的UDP数量("激活"表示目前被应用程序所用)。在这个变量中包含两个元素: 1)IpAddress类型中的updLocalAddress,表示IP地址。 2)INTEGER类型中的udpLocalPort,从0到65535,表示端口号。 SEQUENDE OF。这是一个向量的定义,其所有元素具有相同的类型。如果每一个元素都具有简单的数据类型,例如是整数类型,那么我们就得到一个简单的向量(一个一维向量)。但是我们将看到,SNMP在使用这个数据类型时,其向量中的每一个元素是一个SEQUENCE(结构)。因而可以将它看成为一个二维数组或表。 例如,名为udpTable的UDP监听表(listener)就是这种类型的变量。它是一个二元的SEQUENCE变量。每个二元组就是一个UdpEntry。如图5所示。 图5 表格形式的udpTable 变量 在SNMP,对于这种类型的表格并没有标注它的列数。但在7节中,我们将看到get-next操作是如何判断已经操作到最后一列的情况。同时,在6节中我们还将介绍管理进程如何表示它对某一行数据进行get或set操作。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。