1. 程式人生 > >Telnet 和Rlogin:遠端登入

Telnet 和Rlogin:遠端登入

遠端登入(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的客戶和伺服器連線圖,我們可以畫得更加簡單)。

客戶-伺服器模式的Telnet簡圖


在這張圖中,有以下要點需要注意:
  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/Rlogin/客戶程序/伺服器程序的原始碼數量比較


  現在,不斷有新的Telnet選項被新增到Telnet中去,這就使得Telnet實現的原始碼數量大大增加,而Rlogin依然變化不大,還是比較簡單。
  遠端登入不是那種有大量資料報傳輸的應用。正如我們前面講到的一樣,客戶程序和伺服器程序互動的分組大多比較小。[Paxson1993]發現客戶程序發出的位元組數(使用者在終端上鍵入的資訊)和伺服器程序端發出的位元組數的數量之比是1:20。這是因為我們在終端上鍵入的一條短命令往往令伺服器程序端產生很多輸出。