遠程登錄(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。這是因為我們在終端上鍵入的一條短命令往往令服務器進程端產生很多輸出。
新聞熱點
疑難解答