Telnet服務(wù)工作特點(diǎn)概要
在遠(yuǎn)程管理方面,很多管理員都需要掌握這部分內(nèi)容。那么現(xiàn)在Telnet服務(wù)的一些工作流程以及一些基本特點(diǎn)和相關(guān)的功能我們?cè)谖恼轮袨榇蠹铱偨Y(jié)一下。首先讓我們看一下這個(gè)服務(wù)的登錄過程吧。
Telnet服務(wù)遠(yuǎn)程登錄的工作過程
使用Telnet協(xié)議進(jìn)行遠(yuǎn)程登陸時(shí)需要滿足以下條件:在本的計(jì)算機(jī)上必須裝有包含Telnet協(xié)議的客戶程序;必須知道遠(yuǎn)程主機(jī)的Ip地址或域名;必須知道登錄標(biāo)識(shí)與口令.
Telnet遠(yuǎn)程登錄服務(wù)分為以下4個(gè)過程:
1)本地與遠(yuǎn)程主機(jī)建立連接.該過程實(shí)際上是建立一個(gè)TCP連接,用戶必須知道遠(yuǎn)程主機(jī)的Ip地址或域名;
2)將本地終端上輸入的用戶名和口令及以后輸入的任何命令或字符以NVT(Net Virtual Terminal)格式傳送到遠(yuǎn)程主機(jī).該過程實(shí)際上是從本地主機(jī)向遠(yuǎn)程主機(jī)發(fā)送一個(gè)IP數(shù)據(jù)報(bào);
3)將遠(yuǎn)程主機(jī)輸出的NVT格式的數(shù)據(jù)轉(zhuǎn)化為本地所接受的格式送回本地終端,包括輸入命令回顯和命令執(zhí)行結(jié)果;
4)最后,本地終端對(duì)遠(yuǎn)程主機(jī)進(jìn)行撤消連接.該過程是撤銷一個(gè)TCP連接.
上面的內(nèi)容只是討論了遠(yuǎn)程登陸最基本的東西,其中的復(fù)雜和編程人員的艱辛是我們難以想象的,不知道你在舒服的使用Telnet的同時(shí),是否想到了這些!
Telnet服務(wù)協(xié)議
我們知道Telnet服務(wù)器軟件是我們最常用的遠(yuǎn)程登錄服務(wù)器軟件,是一種典型的客戶機(jī)/服務(wù)器模型的服務(wù),它應(yīng)用Telnet協(xié)議來工作.那么,什么是Telnet協(xié)議?它都具備哪些特點(diǎn)呢?
1 基本內(nèi)容
Telnet服務(wù)是TCP/IP協(xié)議族中的一員,是Internet遠(yuǎn)程登陸服務(wù)的標(biāo)準(zhǔn)協(xié)議.應(yīng)用Telnet協(xié)議能夠把本地用戶所使用的計(jì)算機(jī)變成遠(yuǎn)程主機(jī)系統(tǒng)的一個(gè)終端.它提供了三種基本服務(wù):
1)Telnet定義一個(gè)網(wǎng)絡(luò)虛擬終端為遠(yuǎn)的系統(tǒng)提供一個(gè)標(biāo)準(zhǔn)接口.客戶機(jī)程序不必詳細(xì)了解遠(yuǎn)的系統(tǒng),他們只需構(gòu)造使用標(biāo)準(zhǔn)接口的程序;
2)Telnet包括一個(gè)允許客戶機(jī)和服務(wù)器協(xié)商選項(xiàng)的機(jī)制,而且它還提供一組標(biāo)準(zhǔn)選項(xiàng);
3)Telnet對(duì)稱處理連接的兩端,即Telnet不強(qiáng)迫客戶機(jī)從鍵盤輸入,也不強(qiáng)迫客戶機(jī)在屏幕上顯示輸出.
2 適應(yīng)異構(gòu)
為了使多個(gè)操作系統(tǒng)間的Telnet交互操作成為可能,就必須詳細(xì)了解異構(gòu)計(jì)算機(jī)和操作系統(tǒng).比如,一些操作系統(tǒng)需要每行文本用ASCII回車控制符(CR)結(jié)束,另一些系統(tǒng)則需要使用ASCII換行符(LF),還有一些系統(tǒng)需要用兩個(gè)字符的序列回車-換行(CR-LF);再比如,大多數(shù)操作系統(tǒng)為用戶提供了一個(gè)中斷程序運(yùn)行的快捷鍵,但這個(gè)快捷鍵在各個(gè)系統(tǒng)中有可能不同(一些系統(tǒng)使用CTRL+C,而另一些系統(tǒng)使用ESCAPE).如果不考慮系統(tǒng)間的異構(gòu)性,那么在本地發(fā)出的字符或命令,傳送到遠(yuǎn)地并被遠(yuǎn)地系統(tǒng)解釋后很可能會(huì)不準(zhǔn)確或者出現(xiàn)錯(cuò)誤.因此,Telnet協(xié)議必須解決這個(gè)問題.
為了適應(yīng)異構(gòu)環(huán)境,Telnet服務(wù)定義了數(shù)據(jù)和命令在Internet上的傳輸方式,此定義被稱作網(wǎng)絡(luò)虛擬終端NVT(Net Virtual Terminal).它的應(yīng)用過程如下:
對(duì)于發(fā)送的數(shù)據(jù):客戶機(jī)軟件把來自用戶終端的按鍵和命令序列轉(zhuǎn)換為NVT格式,并發(fā)送到服務(wù)器,服務(wù)器軟件將收到的數(shù)據(jù)和命令,從NVT格式轉(zhuǎn)換為遠(yuǎn)地系統(tǒng)需要的格式;
對(duì)于返回的數(shù)據(jù):遠(yuǎn)地服務(wù)器將數(shù)據(jù)從遠(yuǎn)地機(jī)器的格式轉(zhuǎn)換為NVT格式,而本地客戶機(jī)將將接收到的NVT格式數(shù)據(jù)再轉(zhuǎn)換為本地的格式.
對(duì)于NVT格式的詳細(xì)定義,有興趣的朋友可以去查找相關(guān)資料.
3 傳送遠(yuǎn)地命令
我們知道絕大多數(shù)操作系統(tǒng)都提供各種快捷鍵來實(shí)現(xiàn)相應(yīng)的控制命令,當(dāng)用戶在本地終端鍵入這些快捷鍵的時(shí)候,本地系統(tǒng)將執(zhí)行相應(yīng)的控制命令,而不把這些快捷鍵作為輸入.那么對(duì)于Telnet來說,它是用什么來實(shí)現(xiàn)控制命令的遠(yuǎn)地傳送呢?
Telnet同樣使用NVT來定義如何從客戶機(jī)將控制功能傳送到服務(wù)器.我們知道USASCII字符集包括95個(gè)可打印字符和33個(gè)控制碼.當(dāng)用戶從本地鍵入普通字符時(shí),NVT將按照其原始含義傳送;當(dāng)用戶鍵入快捷鍵(組合鍵)時(shí),NVT將把它轉(zhuǎn)化為特殊的ASCII字符在網(wǎng)絡(luò)上傳送,并在其到達(dá)遠(yuǎn)地機(jī)器后轉(zhuǎn)化為相應(yīng)的控制命令.將正常ASCII字符集與控制命令區(qū)分主要有兩個(gè)原因:#p#
1)這種區(qū)分意味著Telnet具有更大的靈活性:它可在客戶機(jī)與服務(wù)器間傳送所有可能的ASCII字符以及所有控制功能;
2)這種區(qū)分使得客戶機(jī)可以無二義性的指定信令,而不會(huì)產(chǎn)生控制功能與普通字符的混亂.
4 數(shù)據(jù)流向
上面我們提到過將Telnet設(shè)計(jì)為應(yīng)用級(jí)軟件有一個(gè)缺點(diǎn),那就是:效率不高.這是為什么呢?下面給出Telnet中的數(shù)據(jù)流向:
數(shù)據(jù)信息被用戶從本地鍵盤鍵入并通過操作系統(tǒng)傳到客戶機(jī)程序,客戶機(jī)程序?qū)⑵涮幚砗蠓祷夭僮飨到y(tǒng),并由操作系統(tǒng)經(jīng)過網(wǎng)絡(luò)傳送到遠(yuǎn)地機(jī)器,遠(yuǎn)地操作系統(tǒng)將所接收數(shù)據(jù)傳給服務(wù)器程序,并經(jīng)服務(wù)器程序再次處理后返回到操作系統(tǒng)上的偽終端入口點(diǎn),最后,遠(yuǎn)地操作系統(tǒng)將數(shù)據(jù)傳送到用戶正在運(yùn)行的應(yīng)用程序,這便是一次完整的輸入過程;輸出將按照同一通路從服務(wù)器傳送到客戶機(jī).
因?yàn)槊恳淮蔚妮斎牒洼敵?計(jì)算機(jī)將切換進(jìn)程環(huán)境好幾次,這個(gè)開銷是很昂貴的.還好用戶的鍵入速率并不算高,這個(gè)缺點(diǎn)我們?nèi)匀荒軌蚪邮?
5 強(qiáng)制命令
我們應(yīng)該考慮到這樣一種情況:假設(shè)本地用戶運(yùn)行了遠(yuǎn)地機(jī)器的一個(gè)無休止循環(huán)的錯(cuò)誤命令或程序,且此命令或程序已經(jīng)停止讀取輸入,那么操作系統(tǒng)的緩沖區(qū)可能因此而被占滿,如果這樣,遠(yuǎn)地服務(wù)器也無法再將數(shù)據(jù)寫入偽終端,并且最終導(dǎo)致停止從TCP連接讀取數(shù)據(jù),TCP連接的緩沖區(qū)最終也會(huì)被占滿,從而導(dǎo)致阻止數(shù)據(jù)流流入此連接.如果以上事情真的發(fā)生了,那么本地用戶將失去對(duì)遠(yuǎn)地機(jī)器的控制.
為了解決此問題,Telnet協(xié)議必須使用外帶信令以便強(qiáng)制服務(wù)器讀取一個(gè)控制命令.我們知道TCP用緊急數(shù)據(jù)機(jī)制實(shí)現(xiàn)外帶數(shù)據(jù)信令,那么Telnet只要再附加一個(gè)被稱為數(shù)據(jù)標(biāo)記(date mark)的保留八位組,并通過讓TCP發(fā)送已設(shè)置緊急數(shù)據(jù)比特的報(bào)文段通知服務(wù)器便可以了,攜帶緊急數(shù)據(jù)的報(bào)文段將繞過流量控制直接到達(dá)服務(wù)器.作為對(duì)緊急信令的相應(yīng),服務(wù)器將讀取并拋棄所有數(shù)據(jù),直到找到了一個(gè)數(shù)據(jù)標(biāo)記.服務(wù)器在遇到了數(shù)據(jù)標(biāo)記后將返回正常的處理過程.
6 選項(xiàng)協(xié)商
由于Telnet兩端的機(jī)器和操作系統(tǒng)的異構(gòu)性,使得Telnet不可能也不應(yīng)該嚴(yán)格規(guī)定每一個(gè)telnet服務(wù)連接的詳細(xì)配置,否則將大大影響Telnet的適應(yīng)異構(gòu)性.因此,Telnet采用選項(xiàng)協(xié)商機(jī)制來解決這一問題.
Telnet選項(xiàng)的范圍很廣:一些選項(xiàng)擴(kuò)充了大方向的功能,而一些選項(xiàng)制涉及一些微小細(xì)節(jié).例如:有一個(gè)選項(xiàng)可以控制Telnet是在半雙工還是全雙工模式下工作(大方向);還有一個(gè)選項(xiàng)允許遠(yuǎn)地機(jī)器上的服務(wù)器決定用戶終端類型(小細(xì)節(jié)).
Telnet選項(xiàng)的協(xié)商方式也很有意思,它對(duì)于每個(gè)選項(xiàng)的處理都是對(duì)稱的,即任何一端都可以發(fā)出協(xié)商申請(qǐng);任何一端都可以接受或拒絕這個(gè)申請(qǐng).另外,如果一端試圖協(xié)商另一端不了解的選項(xiàng),接受請(qǐng)求的一端可簡(jiǎn)單的拒絕協(xié)商.因此,有可能將更新,更復(fù)雜的Telnet客戶機(jī)服務(wù)器版本與較老的,不太復(fù)雜的版本進(jìn)行交互操作.如果客戶機(jī)和服務(wù)器都理解新的選項(xiàng),可能會(huì)對(duì)交互有所改善.否則,它們將一起轉(zhuǎn)到效率較低但可工作的方式下運(yùn)行.所有的這些設(shè)計(jì),都是為了增強(qiáng)適應(yīng)異構(gòu)性,可見Telnet的適應(yīng)異構(gòu)性對(duì)其的應(yīng)用和發(fā)展是多么重要.