3.2.1 Telnet协议基础
Telnet协议是个简单的远程登录协议,其服务过程可以分为如下3个步骤。
(1) 本地用户在本地终端上对远程系统进行登录。
(2) 将本地终端上的键盘输入逐键传到远端。
(3) 将远端的输出送回本地终端。
在上述过程中,输入/输出均对远端系统的内核透明,远程登录服务本身也对用户透明,本地用户感觉好像直接连在远端主机的键盘上操作,这种透明性是Telnet的重要特点。
Telnet提供了3种基本的服务。首先定义了一个网络虚拟终端(Network Virtual Terminal,NVT),为远程系统提供了一个标准接口。客户机程序不必详细了解所有可能的远程系统,它们只需要使用标准接口的程序。其次,它包括了一个客户机和服务器协商选项的机制,而且还提供了一组标准选项。最后它对等地处理连接的两端。即连接的双方都可以是程序,尤其是客户端不一定非是用户终端不可,允许任意程序作为客户。
当用户调用Telnet时,用户机器上的应用程序作为客户与远程的服务器建立一个TCP连接,在此连接上进行通信。此时,客户就从用户键盘接受键盘消息并送到服务器,同时它接收服务器发回的字符并显示在用户屏幕上。
服务器本身并不直接处理从客户传输来的消息,而是将这些消息送给操作系统处理,然后再将返回的数据再转交给客户。也就是说,此时的服务器,我们称之为"伪终端"(Pseudo Terminal),它允许像Telnet服务器一样的运行程序向操作系统转送字符,并且使得字符似乎是来自本地键盘一样。
为了提供在不同操作系统、不同种类计算机间的互操作性,Telnet专门提供了一种标准的键盘定义方式,称为网络虚拟终端(NVT)。客户程序把来自用户终端的按键和命令序列转换成NVT格式,并发给服务器。远程服务器程序把收到的数据和命令,从NVT格式转换为远程系统需要的格式。对于返回的数据,远程服务器将数据从远程机器的格式转换为NVT格式,并且本地客户将数据从NVT格式转换为本地机器的格式。
也就是说,在用户和远程系统两端,仍然采用自己原有的终端方式,而只在远程登录客户程序与服务器连接时才使用NVT格式。这样,不同终端方式的计算机就可以通过标准的NVT格式统一在一起,不仅使得远程登录客户程序的编写简单化了,也使得用户操作远程登录变得简单。在这里NVT的作用,类似于IP协议对底层不同物理网络的屏蔽作用,是TCP/IP协议的层次化思想的又一体现。