TCP/IP学习笔记——第七部分

一、SNMP:简单网络管理协议

基于TCP/IP的网络管理包括两部分:网络管理站(manager)和被管理的网络单元(被管设备)。这些被管设备的共同点就是都运行TCP/IP协 议。管理进程和代理进程之间的通信有两种方式,一种是管理进程向代理进程发出请求,询问参数值,另一种方式是代理进程主动向管理进程报告某些重要的事件。
基于TCP/IP的网络管理包含3个组成部分:
(1) 一个管理信息库(MIB)。管理信息库包含所有代理进程的所有可被查询和修改的参数。
(2) 关于MIB的公用结构和表示符号,叫做管理信息结构SMI。例如:SMI定义计数器是一个非负整数,它的计数范围是0-4294967295,当达到最大值后,又从0开始。
(3) 管理进程和代理进程之间的通信协议,叫做简单网络管理协议SNMP。SNMP包括数据交换的格式等,主要采用UDP协议。

1、协议:SNMP定义了5种报文:
(1) get-request操作:从代理进程处提取一个或多个参数值。
(2) get-next-request操作:从代理进程处提取一个或多个参数的下一个参数值。
(3) set-request操作:设置代理进程的一个或多个参数值。
(4) get-response操作:由代理进程发出的一个或多个参数值。它是3种的响应操作。
(5) trap操作:代理进程主动发出的报文,通知管理进程由事情发生。
前面3个操作是由管理进程向代理进程发出的,后两个是代理进程发给管理进程的。
说明:◆前4种操作是简单的请求-应答方式,由于采用UDP协议,因此一定要有超时和重传机制。
◆ 管理进程采用UDP的161端口,代理进程使用UDP的162端口,因此一个系统可以同时为管理进程和代理进程。
◆ 下面是UDP数据报5种操作的SNMP报文:

IP首部 UDP首部 版本0 共同体 PDU类型(0-3) 请求标识 差错状态(0-5) 差错索引 名称 名称
PDU类型4 企业 代理地址 Trap类型(0-6) 特定代码 时间戳 名称

(1) SNMP报文的长度取决域变量的类型和值。
(2) 版本字段为0,表示为SNMP V1。
(3) PDU为协议数据单元,即分组。

PDU类型 名称
0 Get-request
1 Get-next-request
2 Get-response
3 Set-request
4 Trap

(4) 共同体为一个字符串,这是管理进程和代理进程之间的口令,是明文格式,默认为public。
(5) 对于get、get-next和set操作,请求标识由管理进程设置,然后由代理进程在get-response中返回。这个字段的作用是使客户进程(目 前是管理进程)能够将服务器进程(即代理进程)发出的响应和客户进程发出的查询进行匹配。这个字段允许管理进程对一个或多个代理进程发出多个请求,并且从 返回的应答中分类。
(6) 差错状态字段是一个整数,由代理进程设置,指明有错误发生。

差错状态 名称 描述
0 NoError 没有错误
1 TooBig 代理进程无法把响应放在一个SNMP消息中发送
2 NoSuchName 操作一个不存在的变量
3 BadValue Set操作的值或语法有错误
4 ReadOnly 管理进程试图改变一个只读变量
5 genErr 其他错误

(7) 在get、get-next和set的请求数据报中,包含变量名称和变量值的表,对于get和get-next操作,变量值部分被忽略。

2、 管理信息结构SMI
(1) INTEGER:有些整形变量没有范围限制,有些整形变量定义为特殊的数值。
(2) OCTER STRING:0或多个8位字节,每个字节值在0-255之间。
(3) DisplayString:0或多个8位字节,每个字节必须是ASCII码,所有该类型的变量不能超过255个字符。
(4) OBJECT IDENTIFIER:
(5) NULL:相关变量还没有值。
(6) IPAddress:4字节的OCTER STRING,以网络序表示的IP地址,每个字节代表IP地址的一个字段。
(7) PhyAddress:OCTER STRING类型,代表物理地址。
(8) Counter:非负整数,范围为0-4294976295,达到最大后从0开始。
(9) Gauge:非负整数,范围为0-4294976295,或增或减,达到最大值后锁定,直到复位。
(10) TimeTicks:时间计数器,以0.01秒递增,但是不同的变量可以有不同的递增幅度,所以定义该类变量时必须指定递增幅度。
(11) SEQUENCE:类似于结构,包括0个或多个元素。
(12) SEQUENCE OF:向量,其所有元素具有相同的类型。

3、 对象标识符
对象标识是一种数据类型,它指明一种授权命名的对象。对象标识是一个整数序列,以点分隔。这些整数构成一个树型结构,类似于DNS和文件系统。对象标识从 顶部开始,顶部没有标识,以root表示。所有的MIB变量都从1.3.6.1.2.1这个标识开始。树上的每个节点还有文字名,例如 1.3.6.1.2.1就和iso.org.dod.internet.memt.mib对应。

4、 管理信息库MIB
管理信息库就是所有代理进程包含的,并且能够被管理进程进行查询和设置的信息的集合。UDP组中包含几个变量和一个表格。变量 为:udpInDatagram(1)、udpNoPorts(2)、udpInErrors(3)、udpOutDatagram(4),表格为 udpTable(5)。

名称 数据类型 R/W 描述
udpInDatagram Counter R UDP数据报输入数
udpNoPorts Counter R 没有发送到有效端口的UDP数据报个数
udpInErrors Counter R 接收到的有错误的UDP数据报个数
udpOutDatagram Counter R UDP数据报输出数

在udpTable中有2个变量:

UDP监听表,索引=<udpLocalAddress>.<udpLocalPort>
名称 数据类型 R/W 描述
udpLocalAddress IpAddress R 监听进程的本地IP地址,0.0.0.0代表接收任何接口的数据报
udpLocalPort [0..65535] R 监听进程的本地端口号

5、 实例标识
对MIB变量进行操作,必须对MIB的每个变量进行标识。只有叶子节点是可操作的SNMP没法处理表格的一整行或一整列。
(1) 简单变量:
对于简单变量的处理是通过在其对象标识后面添加”.0″处理。例如对象标识是        1.3.6.1.2.1.7.1,则实例标识是1.3.6.1.2.1.7.1.0。
(2) 表格
每个MIB中的索引都包含一个以上的索引。对于UDP监听表来说,MIB定义了包含两个变量的联合索引。假定UDP监听表中有3行具体成员:
0.0.0.0 67
0.0.0.0 161
0.0.0.0 520
这表明系统将从端口67、161和520接收来自任何接口的UDP数据报。这三行数据处理后为:

对象标识 简称
1 1.3.6.1.2.1.7.5.1.1.0.0.0.0.67
1.3.6.1.2.1.7.5.1.2.0.0.0.0.67
UdpLocalAddress.0.0.0.0.67
UdpLocalPort.0.0.0.67
0.0.0.0
67
2 1.3.6.1.2.1.7.5.1.1.0.0.0.0. 161
1.3.6.1.2.1.7.5.1.2.0.0.0.0. 161
UdpLocalAddress.0.0.0.0. 161
UdpLocalPort.0.0.0. 161
0.0.0.0
161
3 1.3.6.1.2.1.7.5.1.1.0.0.0.0. 520
1.3.6.1.2.1.7.5.1.2.0.0.0.0. 520
UdpLocalAddress.0.0.0.0. 520
UdpLocalPort.0.0.0. 520
0.0.0.0
520

(3) 字典式排序
MIB中按照对象标识进行排序有一个隐含规则,MIB表格是根据其对象标识按照字典的顺序进行排序的。上面表格排序后如下所示:

对象标识 简称
1 1.3.6.1.2.1.7.5.1.1.0.0.0.0.67
1.3.6.1.2.1.7.5.1.1.0.0.0.0.161
1.3.6.1.2.1.7.5.1.1.0.0.0.0.520
UdpLocalAddress.0.0.0.0.67
UdpLocalAddress.0.0.0.0.161
UdpLocalAddress.0.0.0.0.520
0.0.0.0
0.0.0.0
0.0.0.0
2 1.3.6.1.2.1.7.5.1.2.0.0.0.0. 67
1.3.6.1.2.1.7.5.1.2.0.0.0.0. 161
1.3.6.1.2.1.7.5.1.2.0.0.0.0. 520
UdpLocalPort.0.0.0. 67
UdpLocalPort.0.0.0. 161
UdpLocalPort.0.0.0. 520
67
161
520

在表格中,一个给定变量的所有实例都在下个变量的所有实例之前显示。这意味表格的操作顺序是先行后列的。
表格中对行的排序和表格中索引的值有关。

6、 管理信息库MIB(2)
(1) system组:
system组包含7个变量,没有表格,分别是:sysDescr、sysObjectID、sysUpTime、sysContact、sysName、sysLocation、sysServices。
(2) interface组
interface组只定义了一个简单变量,是系统的接口数量。该组还有一个表格变量,有22列。
(3) at 组
at组是地址转换组,在该组中仅有一个由3列组成的表格变量。
(4) ip组
ip组定义了很多简单变量和3个表格变量(地址表、路由表、地址转换表)。
(5) icmp组
icmp组包含4个普通计数器变量(ICMP报文的输出和输入数量以及ICMP差错报文的输入和输出数量)和22个其他ICMP报文数量的计数器,11个输出计数器,11个输入计数器。
(6) tcp组
tcp组包含14个简单变量,主要为TCP状态。还包含1个表格变量,即TCP连接表。

7、 Trap:
一共有6中trap PDU的格式,第7中类型是供应商自己定义的特殊类型。

二、Telnet:远程登陆

Telnet是标准的提供远程登陆功能的应用。它能够运行在不同的操作系统的主机之间。Telnet通过客户进程和服务器进程之间的选项协商机制,从而确定通信双方可以提供的功能特性。
(1) Telnet客户进程同时和终端客户及TCP/IP协议模块进行交互。通常我们所键入的任何信息的传输是通过TCP连接,连接的任何返回信息都输出到终端上。
(2) Telnet服务器进程经常要和”伪终端设备”打交道。
(3) 仅仅使用了一条TCP连接。
1、 协议介绍:
一种通用字符终端叫网络虚拟终端NVT,连接的客户机和服务器,都必须把他们的物理终端和NVT进行相互转换。不管客户进程终端是什么类型,操作系统必须 把它转换NVT格式,同时,不管服务器进程的终端是什么类型,操作系统必须能够将NVT格式转换为终端所能够接收的格式。
(1) NVT ASCII:
NVT ASCII代表7位的ASCII字符集,网间协议族都使用NVT ASCII ,每个7位的字符都以8位格式发送,最高位为0。行结束符以两个字符CR(回车)和紧接着的LF(换行)这样的序列表示以\r\n表示。单独的一个CR表示为\r\0。
(2)Telnet命令:
命令以字节0xff开头,后面的一个字节是命令字节。如果要发送数据255,就必须连续发送两个255(设置选项才可以发送)。

名称 代码(10进制) 描述
EOF 236 文件结束符
SUSP 237 挂起当前进程
ABORT 238 异常终止进程
EOR 239 记录结束符
SE 240 子选项结束
NOP 241 无操作
DM 242 数据标志
BRK 243 中断
IP 244 中断进程
AO 245 异常终止输出
AYT 246 对方是否还在运行
EC 247 转义字符
EL 248 删除行
GA 249 继续进行
SB 250 子选项开始
WILL 251 选项协商
WONT 252 选项协商
DO 253 选项协商
DONT 254 选项协商
IAC 255 数据字节255

(4) 协商选项
Telnet连接双方首先进行交互的信息是选项协商数据。选项协商是对称的,也就是说任何一方都可以主动发送选项协商请求给对方。
◆ WILL:发送方将激活enable选项。
◆ DO:发送方想叫接收端激活选项
◆ WONT:发送方本身想禁止选项
◆ DON”T:发送方想让接收端去禁止选项。
对于激活选项请求,有权同意或不同意。而对于使选项失效请求,必须同意。
选项协商需要3个字节,一个IAC字节(0xff),接着一个字节是 WILL、DO、WONT、DON”T四者之一,最后一个ID字节指明激活或禁止选项。

选项标识(10进制) 名称
1 回显
3 抑制继续进行
5 状态
6 定时标记
24 终端类型
31 窗口大小
32 终端速率
33 远程流量控制
34 行方式
36 环境变量

(5) 子选项协商
以指定终端类型为例。首先连接的一方发送3个字节的字符序列来请求激活该选项:<IAC,WILL,24>,如果收端同意,那么响应数据就 是<IAC,DO,24>,然后服务器进程再发送如下字符串<IAC,SB,24,1,IAC,SE>,该字符串询问客户进程的 终端类型。SB是子选项协商的其实命令标记,24表示这是终端类型选项的子选项,1表示发送你的终端类型,子选项协商的结束命令标记也是IAC SE。如果终端类型是ibmpc,客户的响应将是<IAC,SB,24,0, ”I”,”B”,”M”,”P”,”C”,IAC,SE>,其中0表示我的终端类型是。
(6) 半双工、一次一字符、一次一行或行方式
◆ 半双工:NVT默认是一个半双工设备,在接收用户输入之前,它必须从服务器进程获得GA命令。用户的输入在本地回显,方向是从NVT键到NVT打印机,所以客户进程到服务器进程只能发送整行的数据。
◆ 一次一字符:每一个键入的字符都单独发送到服务器进程,服务器进程回显大多数的字符。
◆ 一次一行:准行方式,带远程回显的一次一个字符。
◆ 行方式:客户进程和服务器进程协商确定。
(7) 同步信号
Telnet以Data Mark(DM)命令作为同步信号,该同步信号是以TCP紧急数据形式发送的。DM命令是随数据流传输的同步标记,它告诉收端回到正常的处理进程上来。当 一端收到随访已进入紧急方式的通知后,它将开始读数据,一边读一边丢弃数据,直到读到Telnet命令紧急数据的最后一个字节就是DM字节。
(8) 客户的转义符号
Telnet客户进程也可以使客户直接和客户进程进行交互,而不是发送到服务器进程。通常客户的转义字符是Ctrl+],这使得客户显示它的提示符,通常是telnet>。

发表评论

电子邮件地址不会被公开。 必填项已用*标注