我們可以先構(gòu)想一個(gè)提供遠(yuǎn)程文字編輯的服務(wù),這個(gè)服務(wù)的實(shí)現(xiàn)需要一個(gè)接受編輯文件請(qǐng)求和數(shù)據(jù)的服務(wù)器以及一個(gè)發(fā)送此請(qǐng)求的客戶機(jī)??蛻魴C(jī)將建立一個(gè)從本地機(jī)到服務(wù)器的TCP連接,當(dāng)然這需要服務(wù)器的應(yīng)答,然后向服務(wù)器發(fā)送鍵入的信息(文件編輯信息),并讀取從服務(wù)器返回的輸出。以上便是一個(gè)標(biāo)準(zhǔn)而普通的客戶機(jī)/服務(wù)器模型的服務(wù)。 似乎有了客戶機(jī)/服務(wù)器模型的服務(wù),一切遠(yuǎn)程問題都可以解決了。然而實(shí)際并非你想象的那樣簡(jiǎn)單,如果我們僅需要遠(yuǎn)程編輯文件,那么剛才所構(gòu)想的服務(wù)完全可以勝任,但假如我們的要求并不是這么簡(jiǎn)單,我們還想實(shí)現(xiàn)遠(yuǎn)程用戶管理,遠(yuǎn)程數(shù)據(jù)錄入,遠(yuǎn)程系統(tǒng)維護(hù),想實(shí)現(xiàn)一切可以在遠(yuǎn)程主機(jī)上實(shí)現(xiàn)的操作,那么我們將需要大量專用的服務(wù)器程序并為每一個(gè)可計(jì)算服務(wù)都使用一個(gè)服務(wù)器進(jìn)程,隨之而來的問題是:遠(yuǎn)程機(jī)器會(huì)很快對(duì)服務(wù)器進(jìn)程應(yīng)接不暇,并淹沒在進(jìn)程的海洋里(我們?cè)谶@里排除最專業(yè)化的遠(yuǎn)程機(jī)器)。 那么有沒有辦法解決呢?當(dāng)然有,我們可以用遠(yuǎn)程登錄來解決這一切。我們?cè)试S用戶在遠(yuǎn)地機(jī)器上建立一個(gè)登錄會(huì)話,然后通過執(zhí)行命令來實(shí)現(xiàn)更一般的服務(wù),就像在本地操作一樣。這樣,我們便可以訪問遠(yuǎn)地系統(tǒng)上所有可用的命令,并且系統(tǒng)設(shè)計(jì)員不需提供多個(gè)專用地服務(wù)器程序。 問題發(fā)展到這里好像前途一片光明了,用遠(yuǎn)程登錄總應(yīng)該解決問題了吧,但要實(shí)現(xiàn)遠(yuǎn)程登錄并不簡(jiǎn)單。不考慮網(wǎng)絡(luò)設(shè)計(jì)的計(jì)算機(jī)系統(tǒng)期望用戶只從直接相連的鍵盤和顯示器上登錄,在這種機(jī)器上增加遠(yuǎn)程登錄功能需要修改機(jī)器的操作系統(tǒng),這是極其艱巨也是我們盡量避免的。因此我們應(yīng)該集中力量構(gòu)造遠(yuǎn)程登錄服務(wù)器軟件,雖然這樣也是比較困難的。為什么說這樣做也比較困難呢? 舉個(gè)例子來說:一般,操作系統(tǒng)會(huì)為一些特殊按鍵分配特殊的含義,比如本地系統(tǒng)將'Ctrl+C'解釋為:'終止當(dāng)前運(yùn)行的命令進(jìn)程'。但假設(shè)我們已經(jīng)運(yùn)行了遠(yuǎn)程登錄服務(wù)器軟件,'Ctrl+C'也有可能無法被傳送到遠(yuǎn)地機(jī)器,如果客戶機(jī)真的將'Ctrl+C'傳到了遠(yuǎn)地機(jī)器,那么'Ctrl+C'這個(gè)命令有可能不能終止本地的進(jìn)程,也就是說在這里很可能會(huì)產(chǎn)生混亂。而且這僅僅是遇到的難題之一。 但盡管有技術(shù)上的困難,系統(tǒng)編程人員還是設(shè)法構(gòu)造了能夠應(yīng)用于大多數(shù)操作系統(tǒng)的遠(yuǎn)程登錄服務(wù)器軟件,并構(gòu)造了充當(dāng)客戶機(jī)的應(yīng)用軟件。通常,客戶機(jī)軟件取消了除一個(gè)鍵以外的所有鍵的本地解釋,并將這些本地解釋相應(yīng)的轉(zhuǎn)換成遠(yuǎn)地解釋,這就使得客戶機(jī)軟件與遠(yuǎn)地機(jī)器的交互,就如同坐在遠(yuǎn)程主機(jī)面前一樣,從而避免了上述所提到的混亂。而那個(gè)唯一例外的鍵,可以使用戶回到本地環(huán)境。 將遠(yuǎn)程登錄服務(wù)器設(shè)計(jì)為應(yīng)用級(jí)軟件,還有另一個(gè)要求,那就是需要操作系統(tǒng)提供對(duì)偽終端(pseudo terminal)的支持。我們用偽終端描述操作系統(tǒng)的入口點(diǎn),它允許像Telnet服務(wù)器一樣的程序向操作系統(tǒng)傳送字符,并且使得字符像是來自本地鍵盤一樣。只有使用這樣的操作系統(tǒng),才能將遠(yuǎn)程登錄服務(wù)器設(shè)計(jì)為應(yīng)用級(jí)軟件(比如Telnet服務(wù)器軟件),否則,本地操作系統(tǒng)和遠(yuǎn)地系統(tǒng)傳送將不能識(shí)別從對(duì)方傳送過來的信息(因?yàn)樗鼈儍H能識(shí)別從本地鍵盤所鍵入的信息),遠(yuǎn)程登錄將宣告失敗。 將遠(yuǎn)程登陸服務(wù)器設(shè)計(jì)為應(yīng)用級(jí)軟件雖然有其顯著的優(yōu)點(diǎn):比將代碼嵌入操作系統(tǒng)更易修改和控制服務(wù)器。但其也有效率不高的缺點(diǎn)(后面的內(nèi)容將會(huì)給予解釋),好在用戶鍵入信息的速率不高,這種設(shè)計(jì)還是可以接受的。 |
|