远程登录(RemoteLogin)是Internet上最广泛的应用之一。我们可以先登录(即注册)到一台主机然后再通过网络远程登录到任何其他一台网络主机上去,而不需要为每一台主机连接一个硬件终端(当然必须有登录帐号)。
在TCP/IP网络上,有两种应用提供远程登录功能。
1)Telnet是标准的提供远程登录功能的应用,几乎每个TCP/IP的实现都提供这个功能。它能够运行在不同操作系统的主机之间。Telnet通过客户进程和服务器进程之间的选项协商机制,从而确定通信双方可以提供的功能特性。
2)Rlogin起源于伯克利Unix,开始它只能工作在Unix系统之间,现在已经可以在其他操作系统上运行。在本章中,我们将介绍Telnet和Rlogin。首先介绍Rlogin,因为Rlogin比较简单。Telnet是一种最老的Internet应用,起源于1969年的ARPANET。它的名字是“电信网络协议(telecommunicationnetworkprotocol)”的缩写词。远程登录采用客户衿髂J健M26-1显示的是一个Telnet客户和服务器的典型连接图(对于Rlogin的客户和服务器连接图,我们可以画得更加简单)。
在这张图中,有以下要点需要注意:
1)Telnet客户进程同时和终端用户和TCP/IP协议模块进行交互。通常我们所键入的任何信息的传输是通过TCP连接,连接的任何返回信息都输出到终端上。
2)Telnet服务器进程经常要和一种叫做“伪终端设备”(pseudo-terminaldevice)打交道,至少在Unix系统下是这样的。这就使得对于登录外壳(shell)进程来讲,它是被Telnet服务器进程直接调用的,而且任何运行在登录外壳进程处的程序都感觉是直接和一个终端进行交互。对于像满屏编辑器这样的应用来讲,就像直接在和终端打交道一样。实际上,如何对服务器进程的登录外壳进程进行处理,使得它好像在直接和终端交互,往往是编写远程登录服务器进程程序中最困难的方面之一。
3)仅仅使用了一条TCP连接。由于客户进程必须多次和服务器进程进行通信(反之亦然),这就必然需要某些方法,来描绘在连接上传输的命令和用户数据。我们在后面的内容中会介绍Telnet和Rlogin是如何处理这个问题的。
4)注意在图26-1中,我们用虚线框把终端驱动进程和伪终端驱动进程框了起来。在TCP/IP实现中,虚线框的内容一般是操作系统内核的一部分。Telnet客户进程和服务器进程一般只是属于用户应用程序。
5)把服务器进程的登录外壳进程画出来的目的是为了说明:当我们想登录到系统的时候,必须要有一个帐号,Telnet和Rlogin都是如此。
对于Telnet和Rlogin,如果比较一下它们客户进程和服务器进程源代码的数量,就可以知道这两者的复杂程度。图26-2显示了伯克利不同版本的Telnet和Rlogin客户进程和服务器进程源代码的数量。
源程序代码行数
现在,不断有新的Telnet选项被添加到Telnet中去,这就使得Telnet实现的源代码数量大大增加,而Rlogin依然变化不大,还是比较简单。
远程登录不是那种有大量数据报传输的应用。正如我们前面讲到的一样,客户进程和服务器进程交互的分组大多比较小。[Paxson1993]发现客户进程发出的字节数(用户在终端上键入的信息)和服务器进程端发出的字节数的数量之比是1:20。这是因为我们在终端上键入的一条短命令往往令服务器进程端产生很多输出。
文章转载地址:http://www.cnpaf.net/Class/Telnet/0532918532531854.html