以在网交换机中TELNET的应用(丁夫 石冰心)
TELNET协议是当今Internet应用最广泛的协议之一,尤其在使用UNIX操作系统的计算机
上,它已成为不可或缺的一种工具。更重要的是,TELNET协议提供了在Internet上异质网之
间传递数据和控制信息的重要方法,具有很重要的实用价值和启发意义。在以太网交换机的
设计中,TELNET服务器是提供远程管理功能的必备部件,在其它各种网络产品中它也是必不
可缺的一部分。本文首先介绍了以太网交换机的基本结构和工作原理及TELNET服务器在其中
的地位和作用,然后介绍了TELNET协议的内容及其实现方法。
1以太网交换机基本结构及工作原理
交换芯片为ASIC芯片,主要完成在瑞口之间交换以太网帧的功能;另外还能提供对VLAN、
组播(Multicast)、生成树协议(STP,SPanning Tree Protocol)、RMON、SNMP MIB、流
量控制、三层交换等功能的支持。收发器负责将端口收到的以太网帧送到交换芯片,并将交
换芯片发出的帧送到端口上。10M/100M自适应端口还负责10M/100M以太网帧的自适应识别
上LED为指示端口状态的发光二极管。虚线框内为交换机的管理部分,为交换机提供智能功能,
是可选设备。CPU为RISC处理器芯片。CPU接口为符合特殊标准的数据总线和控制总线的接口
电路。串行接口(Serial,为标准的RS232接口。
交换机的管理部分硬件类似一台主机,由软件支持运行。为了达到实时性的要求,支撑
平台使用实时操作系统(如VxWorks),再辅之以各种应用程序构成了管理部分的软件部分。
其中设备驱动程序(DeviceDriver)负责通过CPU接口与交换芯片交换数据和控制信息,
如交换芯片的寄存器的读写、交换部分RAM的读写、中断的处理等等。用户管理界面(User
Interface给管理员提供多种反好的人机界面。Shell提供一个菜单式的命令行界面,可以通
过串日或TELNET服务端口提供管理服务。SNMP/Web为另外两种用户管理界面,它们更友好,
功能也更丰富,分别通过SNMP端口和Web页面管理交换机。这两种方式和TELNET方式提供了远
程管理的功能。
TELNET服务器(TELNETDaemon接收从TCP的23号端口远程登录的请求,并建立连接。这条
TCP连接作为Shell与远程登录者之间的通信链路,透明地传输两者之间的数据和控制信息。
2 TELNET协议介绍
TELNET协议提供了双向的、面向字符(8bit数据)的通信方式。最初它被用作终端与面
向终端的进程之间通信的标准,后来它也用于终端间的点时点通信以及在分布式环境下进程
间的通信。TELNET使用客户机/服务器模式。在本地系统运行TELNET客户机,而在远地主机
则运行TELNET服务器。TELNET协议在TCP/IP协议堆中属于应用层(Application Laver),
工作在TCP层之上;TELNET服务器程序工作在TCP的23号端口上。TELNET协议有三个基本概念:
网络虚拟终端、选项协商和对称性。
2.1网络虚拟终端
为了适应许多计算机和操作系统之间的差异,TELNET定义了所谓的网络虚拟终端(NVT)。
NVT包括键盘和打印机,分别对应于普通终端的键盘和显示器。在发送数据前先把要发送的字
符转换为NVT的字符,送给NVT键盘;把来自网络的数据(NVT字符)送给NVT打印机,经过NVT
打印机过滤的字符交给上层软件处理。
2.2选项协商
NVT并不能解决通信中所有的问题,TELNET定义了自己的一些控制命令。通过TELNET的选
项协商(Option Negotiation),客户机和服务器可以协商使用更多的终端功能。协商的对
话模式有四种:WILL;WONT;DO;DONT。
2.3对称性
由于进行选项协商的两端是平等的,任一端都有可能将对方的确认命令当成是请求命令
而再次发出响应命令,这样就会造成协商过程的无限循环。为了避免循环的发生,协商过程
应遵循下面三个规则:
a.只为选项的变化发出请求;
b.接收到的请求如果要求自己进入已经具有的状态,此请求将不被理睬;
C.当一端向另一端发送一个协商命令时(请求或响应),如果该选项的使用(接受)将
影响到对方对接收数据的处理,那么这个命令应该被插入到该选项开始起作用的数据流的首
部(建立这一规则是因为从请求命令的发出到接收到响应命令将会有一定的时延)。
3 TELNET协议的实现方法
虽然实现TELNET的应用程序有服务器和客户机之分,但如前所述,运用TELNET协议进行
通信的两方是完全对称的,就此而言是不分服务器和客户机的。这里仅描述其中一方的软件
实现,另一方的软件是完全相同的。
3.1概述
TELNET软件可由三大部分组成:NVT键盘、NVT打印机和命令解释执行体。
出流输出NVT键盘所允许的字符和命令。如果输出的是命令字符,调用命令执行体完成
相应功能;如果是普通字符,则可以将之发送到网络上。
NVT打印机的工作很简单:网络上输入的数据如果在所支持的95个字符内,直接交给上
层软件;如果输入的数据为前面所述的八个特殊字符(NUL、LF、CR、BEL、BS、HT、VT和FF),
把它们转换为本机所使用的相应字符再上传;对于其他字符,一律抛弃处理。
命令解释执行体将混杂在输入流中的TELNET命令分离出来,解释之后执行相应的操作。
它通过直接写SOCKET发送TELNET命令。此外,NVT键盘和打印机的工作方式(如回显、二进
制方式收发等)都要受到命令解释执行体的选项协商结果的影响,因此命令解释执行体还要
通过选项来影响它们的工作方式。
3.2命令解释执行体的实现
命令解释执行作要接收识别TELNET命令序列,具有较多的状态,是实现的难点。用有限
状态机(Finite State Machine)来记录状态问的变化转移,并执行相应的操作,可以大为
简化程序的设计、提高编程效率,更能增强源代码的可读性,是实现命令解释执行体的理想
方法。
4结果及结论
为了突出重点,这里所示的FSM只支持TELNET协议中回显、二进制发送和抑制GA等基本
选项,并且没有支持子协商选项(Sub-Negotiation)。但根据这里所使用的原理,其他的
选项协商和子协商的内容都可以很容易加入。
笔者按照上述原理和实现方法实现的TELNET服务器程序在VxWorks上运行正常,能够满足
从不同系统的登录连接。
|