第26章 Telnet和Rlogin:远程登录
26.4 Telnet协议
Te l n e t协议可以工作在任何主机(例如,任何操作系统)或任何终端之间。 RFC 854[Postel 和Reynolds 1983a]定义了该协议的规范,其中还定义了一种通用字符终端叫做网络虚拟终端N V T(Network Virtual Te r m i n a l)。N V T是虚拟设备,连接的双方,即客户机和服务器,都必须把它们的物理终端和 N V T进行相互转换。也就是说,不管客户进程终端是什么类型,操作系统必须把它转换为 N V T格式。同时,不管服务器进程的终端是什么类型,操作系统必须能够把N V T格式转换为终端所能够支持的格式。
N V T是带有键盘和打印机的字符设备。用户击键产生的数据被发送到服务器进程,服务器进程回送的响应则输出到打印机上。默认情况下,用户击键产生的数据是发送到打印机上的,但是我们可以看到这个选项是可以改变的。
26.4.1 NVT ASCII
术语NVT ASCII代表7比特的A S C I I字符集,网间网协议族都使用 NVT ASCII。每个7比特的字符都以8比特格式发送,最高位比特为 0。
行结束符以两个字符 C R(回车)和紧接着的 L F(换行)这样的序列表示。以 r n来表示。单独的一个 C R也是以两个字符序列来表示,它们是 C R和紧接着的 N U L(字节 0),以 r 0表示。
在下面的章节中可以看到, F T P, SMTP, Finger和W h o i s协议都以NVT ASCII来描述客户命令和服务器的响应。
26.4.2 Telnet命令
Te l n e t通信的两个方向都采用带内信令方式。字节 0 x ff(十进制的 2 5 5)叫做 I A C(interpret as command,意思是“作为命令来解释”)。该字节后面的一个字节才是命令字节。
如果要发送数据 2 5 5,就必须发送两个连续的字节 2 5 5(在前面一节中我们讲到数据流是 N V T A S C I I,它们都是 7 b i t的格式,这就暗示着 2 5 5这个数据字节不能在 Te l n e t上传输。其实在Te l n e t中有一个二进制选项,在 R F C 8 5 6 [ P o s t e l和Reynolds 1983b]中有定义,关于这点我们没有讨论,该选项允许数据以 8 b i t进行传输)。图2 6 - 8列出了所有的Te l n e t命令。
由于这些命令中很多命令很少用到,所以对于一些重要的命令,如果在下面章节的例子或叙述中遇到,我们再做解释。