版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、TELNET協(xié)議規(guī)范ARPA Internet上的主機(jī)被要求采用并實(shí)現(xiàn)此標(biāo)準(zhǔn)。介紹TELNET Protocol的目的是提供一個(gè)相對(duì)通用的,雙向的,面向八位字節(jié)的通信方法。它主要的目標(biāo)是允許接口終端設(shè)備的標(biāo)準(zhǔn)方法和面向終端的相互作用??梢灶A(yù)見(jiàn)到,此協(xié)議也可被用于終端到終端的通信和處理到處理的通信(分布式計(jì)算)。一般考慮一個(gè)TELNET連接是一個(gè)用于傳輸控制協(xié)議的傳送數(shù)據(jù)的。TELNET 協(xié)議是建立在以下三個(gè)想法上的:首先是網(wǎng)絡(luò)虛擬終端的概念;其次是對(duì)話選項(xiàng)的方法;最后是終端和處理的協(xié)調(diào)。1. 當(dāng)一個(gè)TELNET連接被初次建立時(shí),每一端都被假設(shè)使用了網(wǎng)絡(luò)虛擬終端,也就是NVT。NVT是一個(gè)想象中
2、的標(biāo)準(zhǔn)設(shè)備通用設(shè)備的代表。這就消除了“服務(wù)器”和“用戶(hù)”機(jī)要了解對(duì)方機(jī)器終端的特點(diǎn),而終端可以直接處理對(duì)話。所有的主機(jī),用戶(hù)端的和服務(wù)器端的,它們自己本地的設(shè)備特點(diǎn)因此在網(wǎng)絡(luò)上可以作為一種NVT處理,任何一個(gè)都可以認(rèn)為對(duì)方使用的是相同特點(diǎn)的設(shè)備。NVT傾向于不過(guò)多地限制(提供了一個(gè)相應(yīng)比較豐富的映射到本地設(shè)備的字符集),也不是包括一切的(它要求用戶(hù)使用適當(dāng)?shù)慕K端)。注意:用戶(hù)機(jī)通常是與處理終端連接的主機(jī),服務(wù)器機(jī)通常是提供某種服務(wù)的機(jī)器。從另一點(diǎn)看,在終端到終端或進(jìn)程到進(jìn)程的通信上,用戶(hù)機(jī)是發(fā)起通信的機(jī)器。 2. 規(guī)定選項(xiàng)的原理將以下事實(shí)考慮在內(nèi),許多機(jī)器希望在現(xiàn)在的NVT上提供另外的服務(wù),多
3、數(shù)用戶(hù)有比較復(fù)雜的終端,它們也就希望一種比較完整的而不是最小的服務(wù)。獨(dú)立的,但是存在于 TELNET 協(xié)議的不同選項(xiàng)支持這些需求,它們使用"DO, DON'T, WILL, WON'T" 結(jié)構(gòu)允許用戶(hù)機(jī)和服務(wù)器建立建立一種更加精巧的TELNET會(huì)話連接。這種選項(xiàng)包括改變字符集,響應(yīng)模式等等。設(shè)置選項(xiàng)的基本策略是任一方(或者兩者)初始化要求一個(gè)選項(xiàng)生效的請(qǐng)求。另一方可以接受也可以拒絕這一請(qǐng)求。如果接受請(qǐng)求,此選項(xiàng)立刻生效;如果被拒絕,連接仍然保持基本的NVT的連接屬性。很明顯,一方可以拒絕另一方關(guān)于啟用某一選項(xiàng)的請(qǐng)求,但是不能拒絕另一方關(guān)于使一選項(xiàng)失效的請(qǐng)求,
4、因?yàn)殡p方必須準(zhǔn)備支持NVT。對(duì)話選項(xiàng)語(yǔ)法的建立使在雙方都發(fā)出請(qǐng)求某一選項(xiàng)生效的請(qǐng)求時(shí),另一方可以直接認(rèn)為收到對(duì)方的確認(rèn)信息。 3. 這種對(duì)稱(chēng)式的對(duì)話語(yǔ)法潛在地引起了一個(gè)不可終止的確認(rèn)環(huán)-任何一方都將收到的確認(rèn)信息看作是請(qǐng)求,而不是一個(gè)確認(rèn)信息。為了防止這種循環(huán)的出現(xiàn),有下面的規(guī)則: a. 任何一方僅可以要求對(duì)選項(xiàng)狀態(tài)的變化:例如,一方不可以發(fā)出請(qǐng)求,僅僅說(shuō)明它在什么樣的選項(xiàng)狀態(tài)下。 b. 如果一方接收到好象是請(qǐng)求的信息,請(qǐng)求進(jìn)入一個(gè)已經(jīng)進(jìn)入的狀態(tài),此信息將被看作是一個(gè)確認(rèn)消息。這種非響應(yīng)從本質(zhì)上防止了不可終止的對(duì)話的循環(huán)。如果要求發(fā)送一個(gè)要求改變狀態(tài)的請(qǐng)求,即使?fàn)顟B(tài)并未改變。 c. 無(wú)論何時(shí),
5、一方發(fā)送選項(xiàng)命令到另一方,無(wú)論作為一個(gè)請(qǐng)求或者是一個(gè)確認(rèn)消息,選項(xiàng)的使用將對(duì)發(fā)送的數(shù)據(jù)處理有影響,這樣命令應(yīng)該被插入到希望發(fā)生作用的數(shù)據(jù)流中的數(shù)據(jù)點(diǎn)之前。(應(yīng)該注意,傳送請(qǐng)求和收到確認(rèn)消息之間有一定的時(shí)間間隔,這是被動(dòng)方式的。因此,一個(gè)主機(jī)希望在要求一個(gè)選項(xiàng)后緩存數(shù)據(jù),直到它知道它的請(qǐng)求是否被接受,這樣就可以使這段不不確定時(shí)間對(duì)用戶(hù)不可見(jiàn)。)選項(xiàng)的請(qǐng)求可以在建立TELNET連接時(shí)十分頻繁地來(lái)往交換,因?yàn)槊恳环蕉枷M麖膶?duì)方得到更好的服務(wù)。 除此以外,選項(xiàng)也可以在連接持續(xù)過(guò)程中動(dòng)態(tài)改變來(lái)適應(yīng)本地機(jī)器條件的變化。例如,NVT(它將以后被詳細(xì)解釋?zhuān)?duì)于許多“一次一行”的應(yīng)用程序,如BASIC是十分適用
6、的,而對(duì)于如NLS的“一次一字”的應(yīng)用程序卻不怎么好用。服務(wù)器可能被選擇作為“一次一字”法則來(lái)適應(yīng)在其上運(yùn)行的本地進(jìn)程,它將發(fā)起對(duì)話以達(dá)到合適的選項(xiàng)狀態(tài)。然而,相對(duì)于永久地負(fù)責(zé)這種多余的處理負(fù)擔(dān);它可以通過(guò)會(huì)話,在不需要這樣的選項(xiàng)狀態(tài)下回到NVT狀態(tài)。由一個(gè)進(jìn)程發(fā)起的請(qǐng)求可以導(dǎo)致一個(gè)不可終止的請(qǐng)求循環(huán),如果此進(jìn)程對(duì)一個(gè)拒絕請(qǐng)求的響應(yīng)是再次要求此選項(xiàng)。為了防止這樣循環(huán)的發(fā)生,被拒絕的請(qǐng)求在其它事情發(fā)生變化之前不能被重復(fù)請(qǐng)求。這可能意味著,進(jìn)程運(yùn)行另外一個(gè)程序,或者用戶(hù)發(fā)送另外的命令,或者用戶(hù)對(duì)于環(huán)境或選項(xiàng)的改變。比較好的方法是,預(yù)請(qǐng)求應(yīng)該作為由另一端發(fā)送信息的結(jié)果而發(fā)生,或者由于人為介入而發(fā)生。
7、選項(xiàng)的設(shè)計(jì)者不應(yīng)該因?yàn)閷?duì)于選項(xiàng)會(huì)話的種種限制而感覺(jué)到伸不開(kāi)手腳。一般語(yǔ)法的目的是更容易地?fù)碛羞x項(xiàng)-因?yàn)楸硎緦?duì)它們的忽視也是容易的。如果特定的選項(xiàng)需要除"DO, DON'T, WILL, WON'T"以外的更豐富的結(jié)構(gòu),正確的方針是使用"DO, DON'T, WILL, WON'T"來(lái)建立連接解釋這種新結(jié)構(gòu),當(dāng)這一解釋工作完成時(shí),就可以自由地使用這一新結(jié)構(gòu)了。例如,一方可能發(fā)送請(qǐng)求改變(或建立)每行的長(zhǎng)度。如果接受了這些,對(duì)于對(duì)話的不同行長(zhǎng)度可以使用不同的語(yǔ)法來(lái)表示-“子對(duì)話”可以包括一個(gè)域表示最大允許的,最小允許的和希望的
8、長(zhǎng)度。重要概念是這樣的擴(kuò)充的會(huì)話應(yīng)該直到雙方建立了標(biāo)準(zhǔn)的會(huì)話并且能夠解釋這種擴(kuò)充的語(yǔ)法之后再進(jìn)行??偟膩?lái)說(shuō),WILL XXX發(fā)送時(shí)說(shuō)明一方希望執(zhí)行選項(xiàng)XXX,DO XXX 和 DON'T XXX作為確定的不確定的響應(yīng);同樣,DO XXX被作為一種請(qǐng)求發(fā)送給另一方來(lái)啟動(dòng)選項(xiàng)XXX,WILL XXX 和WON'T將被作為確定和不確定的響應(yīng)。因?yàn)镹VT是沒(méi)有任何選項(xiàng)時(shí)的結(jié)果, DON'T和WON'T響應(yīng)將保證使連接最終保持于這種沒(méi)有任何選項(xiàng)的狀態(tài)。因此,所有主機(jī)可以不支持不理解的選項(xiàng),它僅僅需要返回這種選項(xiàng)的請(qǐng)求即可。盡可能的,TELNET協(xié)議被用作服務(wù)器-用戶(hù)的對(duì)稱(chēng)
9、,這樣,它就可以更容易而自然地處理用戶(hù)-用戶(hù)和服務(wù)器-服務(wù)器的情況。用選項(xiàng)來(lái)擴(kuò)展這一功能是被希望實(shí)現(xiàn)的,但不是必要的。在任何情況下,對(duì)稱(chēng)是一個(gè)運(yùn)行的準(zhǔn)則而不是固定的準(zhǔn)則多次被明確提出。一個(gè)比較文檔,“TELNET選項(xiàng)說(shuō)明”,可以被用于對(duì)建立新選項(xiàng)過(guò)程信息的參考。網(wǎng)絡(luò)虛擬終端網(wǎng)絡(luò)虛擬終端(NVT)是一個(gè)雙向字符設(shè)備。NVT有一個(gè)顯示設(shè)備和一個(gè)鍵盤(pán)。顯示設(shè)備響應(yīng)到達(dá)的數(shù)據(jù),鍵盤(pán)負(fù)責(zé)通過(guò)TELNET連接發(fā)送數(shù)據(jù),如果需要回顯,也應(yīng)該在NVT的顯示設(shè)備上顯示。對(duì)于網(wǎng)絡(luò)上的回顯并不要求(雖然確實(shí)存在這個(gè)“遠(yuǎn)程”回顯選項(xiàng),但是主機(jī)必不是必須實(shí)現(xiàn)此選項(xiàng))。字符集是由七位ASCII碼組成的,而保存在八位的域中
10、。任何字符的轉(zhuǎn)換和計(jì)時(shí)方面的考慮都是本地的問(wèn)題,這不影響NVT的工作。數(shù)據(jù)傳送方面,雖然TELNET連接是全雙工的,NVT卻是在線緩沖狀態(tài)下的半雙工設(shè)備。傳送數(shù)據(jù) 雖然TELNET連接是全雙工的,在線緩沖模式下,NVT卻被當(dāng)作半雙工的設(shè)備。此信號(hào)可以由進(jìn)程或者用戶(hù)產(chǎn)生。對(duì)于一些主機(jī)處理網(wǎng)絡(luò)輸入中斷,或與默認(rèn)的不進(jìn)行遠(yuǎn)程回顯的NVT說(shuō)明的主機(jī)來(lái)說(shuō),此規(guī)則的代價(jià)是高昂的。因此,在源點(diǎn)緩存一些數(shù)據(jù)是有理由的。一些系統(tǒng)在每個(gè)輸入行未采用一些操作(即使是行打印機(jī)或打卡機(jī)也經(jīng)常采用這種方法),這樣可以在每行未開(kāi)始發(fā)送。在另一方面,用戶(hù)或者進(jìn)程可以有時(shí)發(fā)覺(jué)提供在行未不中斷的數(shù)據(jù)是有用的而且是必須的;因此,也
11、應(yīng)該在實(shí)現(xiàn)在本地能夠識(shí)別這種信號(hào)并把這些數(shù)據(jù)立刻發(fā)送的方法和機(jī)制。當(dāng)一個(gè)進(jìn)程已經(jīng)完成將數(shù)據(jù)發(fā)送到對(duì)方的顯示設(shè)備而且也沒(méi)有緩存的輸入數(shù)據(jù)時(shí)時(shí),進(jìn)程必須發(fā)送TELNET Go Ahead (GA)命令。這個(gè)規(guī)則并不是要求 TELNET GA命令必須由雙方終端發(fā)送,因?yàn)榉?wù)器主機(jī)通常不要求特定的信號(hào)來(lái)繼續(xù)進(jìn)程。但是,此命令的設(shè)計(jì)可以幫助用戶(hù)的本地主機(jī)操作一個(gè)物理上半雙工的終端,它如果IBM2741一樣擁有可鎖定的鍵盤(pán)。對(duì)此種類(lèi)型終端的描述有助于解釋GA命令的正確使用。終端和計(jì)算機(jī)的連接總是在計(jì)算機(jī)或用戶(hù)的控制之下。任何一方都不能夠隱式地從另一方獲得控制權(quán);控制權(quán)必須顯式地從一方轉(zhuǎn)移到另一方。在終端一
12、方,設(shè)置硬件在每一行結(jié)束時(shí)放棄控制權(quán)(例如,當(dāng)用戶(hù)按下回車(chē)鍵時(shí))。當(dāng)這種情況發(fā)生時(shí),本地計(jì)算機(jī)處理輸入數(shù)據(jù),決定是否輸出,如果不需要,將控制權(quán)回送給終端。如果需要產(chǎn)生輸出,計(jì)算機(jī)將保有控制權(quán)直到輸出數(shù)據(jù)發(fā)送完畢。在網(wǎng)絡(luò)上使用這種終端的困難是顯而易見(jiàn)的。“本地”計(jì)算機(jī)不知道在讀到行未符號(hào)時(shí)是否應(yīng)該繼續(xù)保持控制權(quán);這個(gè)問(wèn)題的決定權(quán)在遠(yuǎn)地處理此數(shù)據(jù)的計(jì)算機(jī)。因此,TELNET GA命令提供了一種機(jī)制讓遠(yuǎn)程計(jì)算機(jī)能夠通知本地計(jì)算機(jī),讓它將控制權(quán)轉(zhuǎn)交給用戶(hù)終端。在用戶(hù)需要控制權(quán)時(shí),此信號(hào)應(yīng)該也只能在此時(shí)發(fā)送。注意:過(guò)早地發(fā)送GA命令會(huì)使輸出數(shù)據(jù)阻塞,因?yàn)橛脩?hù)可以假定傳送系統(tǒng)暫停,因此不能將一行結(jié)束。當(dāng)然
13、,前述內(nèi)容不能夠用于用戶(hù)到服務(wù)器方面的通信方面。在這個(gè)方面,GA命令可以在任何時(shí)候發(fā)送,可以根本不用發(fā)送。同樣,如果TELNET連接被用于進(jìn)程到進(jìn)程的通信,也不需要發(fā)送GA命令。最后,對(duì)于終端到終端的通信,可以在兩端都需要GA命令,也可以在一端,也可以?xún)啥硕夹枰?。如果主機(jī)希望支持終端到終端的通信主機(jī)應(yīng)該提供一種讓用戶(hù)自由發(fā)送GA命令的方法;然而,對(duì)于一個(gè)TELNET進(jìn)程而言,這并不是必須的。注意:TELNET模式的對(duì)稱(chēng)性要求在概念上,兩端中的一端至少是一個(gè)NVT??刂坪瘮?shù)的標(biāo)準(zhǔn)表示 如要本文的介紹中所說(shuō)的,TELNET協(xié)議的目的是提供一種網(wǎng)絡(luò)上面向終端進(jìn)程和終端設(shè)備的標(biāo)準(zhǔn)接口。這種類(lèi)型互連的先
14、前的經(jīng)驗(yàn)告訴我們,在許多主機(jī)上已經(jīng)實(shí)現(xiàn)了類(lèi)似的功能,但它們的實(shí)現(xiàn)方法卻差別很大。對(duì)于接觸這些系統(tǒng)的用戶(hù)而言,這些差別將是令人頭痛的。因此,TELNET定義了以下功能的五種標(biāo)準(zhǔn)表示。這種標(biāo)準(zhǔn)表示有一定的標(biāo)準(zhǔn)的意義,但這也不是必須的(例外是中斷處理函功能要其它使用TELNET的協(xié)議執(zhí)行);這也就是說(shuō),系統(tǒng)不提供給本地用戶(hù)的功能也不可以不提供給遠(yuǎn)程用戶(hù),它可以將標(biāo)準(zhǔn)表示作為非操作的功能。在另一方面,給本地用戶(hù)提供此功能的系統(tǒng)必須也向傳送此功能標(biāo)準(zhǔn)表示的遠(yuǎn)程用戶(hù)提供此功能。中斷處理(IP)一些系統(tǒng)提供可以暫停,中斷,放棄或終止用戶(hù)進(jìn)程操作的功能。當(dāng)用戶(hù)確定它的進(jìn)程處于不可結(jié)束的循環(huán)中,或不經(jīng)意地激活了
15、一個(gè)進(jìn)程時(shí)經(jīng)常使用此功能。IP是使用此功能的標(biāo)準(zhǔn)表示。實(shí)現(xiàn)者應(yīng)該注意的是:使用TELNET的其它協(xié)議可能也需要IP,因此,如果需要支持其它協(xié)議就應(yīng)該實(shí)現(xiàn)IP。放棄輸出 (AO) 許多系統(tǒng)提供此功能,它允許產(chǎn)生輸出的進(jìn)程到達(dá)類(lèi)似操作結(jié)束的點(diǎn),而不將輸出發(fā)送到用戶(hù)的終端。更深一層的,此功能通常清除已產(chǎn)生的所有輸出,而不顯示到用戶(hù)的終端上。AO是使用此功能的標(biāo)準(zhǔn)表示。例如,一些子系統(tǒng)可能通常接受用戶(hù)命令,發(fā)送長(zhǎng)文本串到用戶(hù)終端,最后發(fā)送一個(gè)提示用戶(hù)允許接收下一命令的提示符到用戶(hù)終端。如果在傳送文本串的過(guò)程中接收到AO命令,將會(huì)不再發(fā)送剩余的字符串,而直接顯示提示符告知用戶(hù)可以輸入下一命令。(這與接收
16、到IP之后的操作可能有所不同;IP會(huì)放棄發(fā)送剩余的字符串而且退出子系統(tǒng)。)應(yīng)該注意到,使用提供此功能的服務(wù)器系統(tǒng)時(shí)外部緩沖區(qū)(在網(wǎng)絡(luò)和用戶(hù)本地主機(jī)上)也被清除;完成的正確方法是向用戶(hù)系統(tǒng)發(fā)送“Synch”信號(hào)。你在此嗎 (AYT) 許多系統(tǒng)提供用戶(hù)這樣的功能,讓用戶(hù)知道是否正在運(yùn)行。此功能在系統(tǒng)由于不可預(yù)知長(zhǎng)度運(yùn)算,或系統(tǒng)負(fù)載重的情況下長(zhǎng)時(shí)間不響應(yīng)時(shí)由用戶(hù)發(fā)起。AYT是使用此功能的標(biāo)準(zhǔn)表示。刪除字符(EC) 許多系統(tǒng)提供此功能用于刪除最近相鄰的不可刪除字符或用戶(hù)提供數(shù)據(jù)流的最近相鄰的“顯示位置”。此功能通常用于編輯鍵盤(pán)錯(cuò)誤的輸入。EC是使用此功能的標(biāo)準(zhǔn)表示。注意:“顯示位置”可能包括多于一個(gè)的
17、字符,它們是過(guò)多鍵入的結(jié)果或者如下格式的字符串:<char1> BS <char2>.刪除行(EL) 許多系統(tǒng)提供此功能用于刪除當(dāng)前輸入行中的所有數(shù)據(jù)。此功能通常被用于是編輯鍵盤(pán)輸入。EL是使用此功能的標(biāo)準(zhǔn)表示。TELNET的"Synch"信號(hào) 大部分時(shí)分系統(tǒng)提供一種允許終端用戶(hù)重新獲得失控進(jìn)程的機(jī)制;上述的IP和AO功能就是此機(jī)制的一個(gè)例子。這些系統(tǒng),當(dāng)被用于本地時(shí),訪問(wèn)由用戶(hù)提供的所有信號(hào),無(wú)論此信號(hào)是一般字符還是不可顯示的字符如電傳中的“BREAK”或IBM 2741中的“ATTN”鍵。當(dāng)系統(tǒng)通過(guò)網(wǎng)絡(luò)連接時(shí)這種情況不一定就是準(zhǔn)確的;網(wǎng)絡(luò)流量控制
18、機(jī)制可能導(dǎo)致一個(gè)信號(hào)被緩存于網(wǎng)絡(luò)中某處,例如在用戶(hù)的主機(jī)中。為了克服這個(gè)問(wèn)題,引入了TELNET的“Synch”機(jī)制。一個(gè)Synch信號(hào)包括一個(gè)TCP 緊急信號(hào)和TELNET命令 DATA MARK。緊急信號(hào),它不受限于限制TELNET的流量控制,它可以在接收到進(jìn)程引發(fā)特定的數(shù)據(jù)處理。在這種模式中,此數(shù)據(jù)流立即被看作是“有重大意義的”,而拋棄其它數(shù)據(jù)。TELNET命令DATA MARK (DM)是數(shù)據(jù)流中的同步標(biāo)志,它指示任何特定的信號(hào)已經(jīng)發(fā)生過(guò)了,接收可以返回到正常處理其它數(shù)據(jù)的狀態(tài)中了。Synch通過(guò)TCP發(fā)送操作完成,它和緊急標(biāo)志及在最后的DM標(biāo)志一起發(fā)送。當(dāng)一些Synch信號(hào)被連續(xù)快速
19、發(fā)送時(shí)緊急信號(hào)可能被淹沒(méi)。不可能對(duì)緊急信號(hào)記數(shù),因?yàn)檫@一數(shù)字有可能小于也可能等于已經(jīng)發(fā)送的數(shù)目。當(dāng)處于通常模式下,DM不是一個(gè)操作;當(dāng)處于緊急模型下,它指示緊急處理的結(jié)束。如果TCP指示緊急數(shù)據(jù)結(jié)束前發(fā)現(xiàn)DM,TELNET應(yīng)該繼續(xù)操作數(shù)據(jù)流直到遇到DM為止。如果TCP在DM之后指示又有一些緊急數(shù)據(jù),那只能是因?yàn)槭且淮甋ynch。TELNET應(yīng)該繼續(xù)操作數(shù)據(jù)流直到遇到DM。“有意義的”信號(hào)被定義為:IP,AO和AYT(但不是EC或EL)的TELNET標(biāo)準(zhǔn)定義;如果有的話,本地對(duì)這些標(biāo)準(zhǔn)定義的模擬;所有其它TELNET命令;其它站點(diǎn)定義的不需要拖后數(shù)據(jù)流的信號(hào)。因?yàn)镾YNCH命令的另一個(gè)作用是拋棄
20、所有在接收者和發(fā)送者之間隨了TELNET命令之外的字符,如果需要時(shí),此機(jī)制被指定為標(biāo)準(zhǔn)方法來(lái)清理數(shù)據(jù)路徑。例如,如果一個(gè)在終端的用戶(hù)傳送一個(gè)AO命令,收到此命令的服務(wù)器(如果此服務(wù)器提供此功能)應(yīng)該返回一個(gè)SYNCH給用戶(hù)。最后,正如需要TCP緊急信號(hào)作為供他們使用的命令一樣,其它使用TELNET協(xié)議的協(xié)議也需要類(lèi)似的命令。這通過(guò)使用IP,SYNCH就可以達(dá)到。例如,假設(shè)其它一些使用TELNET的協(xié)議定義了類(lèi)型于AO命令的停止字符串。試想此協(xié)議的用戶(hù)希望服務(wù)器來(lái)處理停止字符串,但連接因?yàn)榉?wù)器正在處理別的命令而被阻塞。用戶(hù)應(yīng)該使它的系統(tǒng)做以上工作:1. 發(fā)送TELNET IP字符; 2. 發(fā)送
21、TELNET SYNC串,這就是說(shuō):發(fā)送DM作為在TCP緊急模式發(fā)送操作下的唯一字符串。 3. 發(fā)送字符串STOP,并且 4. 發(fā)送其它協(xié)議的類(lèi)型于TELNET DM的命令。 用戶(hù)(或者進(jìn)程)必須象步2一樣重新發(fā)送TELNET SYNCH序列來(lái)確保TELNET IP到達(dá)服務(wù)器的TELNET解釋器。“緊急”將喚醒TELNET進(jìn)程;IP應(yīng)該喚醒更高級(jí)的進(jìn)程。NVT顯示和鍵盤(pán) NVT顯示有一個(gè)未指定的行寬和頁(yè)面大小,并且可以產(chǎn)生代表ASCII碼的字符。對(duì)于33個(gè)控制字符和另外128個(gè)沒(méi)有使用的字符,將指定給顯示: NULL (NUL) 0 無(wú)操作;Line Feed (LF) 10 將顯示移動(dòng)到下一
22、行的同一垂直位置。Carriage Return (CR) 13 將顯示移至當(dāng)前行的左邊界處。另外,還應(yīng)該定義如下字符(但這不是必須的),它們對(duì)顯示也有作用。TELNET的任何一方都不會(huì)假定另一方會(huì)在接收或傳送時(shí)采取以下行動(dòng):BELL (BEL) 7 響鈴或者給出一個(gè)可視的信號(hào)(這并不移動(dòng)顯示位置)。Back Space (BS) 8將顯示向左移一個(gè)位置。Horizontal Tab (HT) 9 將顯示移至下一個(gè)制表位?,F(xiàn)在還未指定任何一方如何決定制表位的位置究竟在什么地方。Horizontal Tab (HT) 9 將顯示移至下一個(gè)垂直制表位?,F(xiàn)在還未指定任何一方如何決定制表位的位置究竟在
23、什么地方。Form Feed (FF) 12 將顯示移動(dòng)到下頁(yè)起始位置,并保持相同的水平位置。所有現(xiàn)在的代碼都不使NVT顯示作任何操作。CR LF序列將使顯示定位于下一顯示行的左邊界處。然而,許多系統(tǒng)和終端并不將這兩個(gè)字符分開(kāi)處理而不得不作一些工作模擬它們的作用。(例如,一些終端沒(méi)有獨(dú)立于LF的CR,但在這些終端上可以通過(guò)后退鍵模擬CR的功能。)因此,CR LF序列必將作為新行標(biāo)記使用它們的復(fù)合功能;CR NUL必須在希望僅輸入一個(gè)回車(chē)時(shí)使用;在其它情況下應(yīng)該避免單獨(dú)使用CR。這個(gè)法則使必須決定是否進(jìn)行一個(gè)“新行”操作功能或多個(gè)回退的系統(tǒng)能夠保證包括由一個(gè)字符在CR后面的TELNET流的操作,
24、并作出正確的決定。注意:CR LF或者CR NUL對(duì)雙方都是要求的,這就保證了NVT的對(duì)稱(chēng)性。即使在一些情況下可以知道字符未被送到實(shí)際的終端,然而,出于一致性的考慮,協(xié)議要求在CR后面如果沒(méi)有LF就必須插入一個(gè)NUL。反過(guò)來(lái)說(shuō),在CR后面接收到一個(gè)NUL后,應(yīng)該把它從數(shù)據(jù)流中拋棄,而不應(yīng)該將它用于NVT的字符映射。在NVT上有鍵盤(pán),組合鍵或鍵序列來(lái)產(chǎn)生這全部128個(gè)字符。注意:雖然其中的一些對(duì)NVT顯示沒(méi)有作用,NVT也有能力產(chǎn)生它們。除了這些以外,NVT鍵盤(pán)還應(yīng)該能夠產(chǎn)生如下有意義,但不要求的的字符。對(duì)這些字符的實(shí)際代碼指派在TELNET命令一節(jié)中,因?yàn)樗鼈儽蛔鳛槠胀ǖ膽?yīng)該被提供的,即使在數(shù)
25、據(jù)流被解釋為一些其它字符集的情況下。Synch 此鍵允許用戶(hù)清除到另一方的數(shù)據(jù)通道。此鍵的激活導(dǎo)致DM的發(fā)送,而且還導(dǎo)致同時(shí)發(fā)送TCP的緊急信號(hào)。DM-緊急信號(hào)對(duì)有如前面定義的意義。Break (BRK) 它的提供是因?yàn)樗皇茿SCII字符集內(nèi)的一員。它指示Break鍵和Attention鍵被按下。然而,請(qǐng)注意:它是作為第129個(gè)代碼,而不是IP標(biāo)準(zhǔn)定義。Interrupt Process (IP) 暫停,中斷,放棄或終止NVT連接的進(jìn)程的執(zhí)行。同樣的,它也是使用TELNET協(xié)議的協(xié)議要使用的信號(hào)。Abort Output (AO) 允許當(dāng)前進(jìn)程運(yùn)行至終止,但不將結(jié)果送給用戶(hù)。同樣,發(fā)送SYN
26、CH給用戶(hù)。Are You There (AYT) 回送給NVT一些可見(jiàn)的字符。Erase Character (EC) 接收方應(yīng)該刪除緊后一個(gè)未刪除的字符或從數(shù)據(jù)流中刪除一個(gè)“顯示位置”。Erase Line (EL) 接收方應(yīng)該將數(shù)據(jù)流中的字符從當(dāng)前位置開(kāi)始一直刪除到最近的“CR LF”為止。這些“額外”鍵的功能和一些顯示格式功能鍵是它們應(yīng)該代表一個(gè)對(duì)從NVT到本地機(jī)映射的擴(kuò)充。如同NVT數(shù)據(jù)字節(jié)68應(yīng)該被映射為大寫(xiě)D一樣,一個(gè)EC字符應(yīng)該被映射為一個(gè)“刪除行”的功能鍵。另外,如果映射124在一些情況下是武斷的一樣,EL字符的映射有時(shí)候也是武斷的。對(duì)于格式字符也是一樣的:如果終端實(shí)際上擁有
27、“垂直制表位”,那么映射到NVT是顯然的,如果終端不提供此功能,那么結(jié)果將是不可預(yù)料的。TELNET命令結(jié)構(gòu) 所有TELNET命令結(jié)構(gòu)至少包括一個(gè)兩個(gè)字節(jié)的序列:由一個(gè)IAC后跟一個(gè)命令。關(guān)于選項(xiàng)會(huì)話的命令是由三個(gè)字節(jié)的序列構(gòu)成的,第三個(gè)字節(jié)是關(guān)于選項(xiàng)參考的。選擇這種結(jié)構(gòu),這樣隨著完全使用數(shù)據(jù)空格數(shù)據(jù)與命令值之間的沖突就會(huì)減少,所有這些沖突導(dǎo)致了不一致和沒(méi)有效率和數(shù)據(jù)的丟失。根據(jù)目前的設(shè)置,只有與IAC沖突的數(shù)據(jù)需要被發(fā)送兩次,其它255個(gè)代碼都可以直接發(fā)送。下面是定義了的TELNET命令。注意:只有當(dāng)代碼和代碼序列前面是IAC時(shí)它才是命令。SE 240 結(jié)束子會(huì)話參數(shù)。NOP 241 無(wú)操作
28、。Data Mark 242 Synch的數(shù)據(jù)流部分。這應(yīng)該總和TCP緊急標(biāo)志一起發(fā)送。Break 243 NVT 字符 BRK。Interrupt Process 244 IP功能。Abort output 245 AO功能。Are You There 246 AYT功能。Erase character 247 EC功能。Erase character 247 EL功能。Go ahead 249 The GA 信號(hào)。SB 250 指出所跟隨的是指示選項(xiàng)的子對(duì)話。WILL (option code) 251 指示希望開(kāi)始執(zhí)行,或者確認(rèn)現(xiàn)在正在操作指示的選項(xiàng)。WON'T (option
29、code) 252 指出拒絕執(zhí)行或繼續(xù)招待所指示的選項(xiàng)。DO (option code) 253 指出要求對(duì)方執(zhí)行,或者確認(rèn)希望對(duì)方執(zhí)行指示的選項(xiàng)。DON'T (option code) 254 指出要求對(duì)方停止執(zhí)行,或者確診要求對(duì)方停止執(zhí)行指示的選項(xiàng)。IAC 255 數(shù)據(jù)字節(jié) 255。建立連接TELNET TCP連接在用戶(hù)端口U和服務(wù)器端口L之間建立。服務(wù)器在這個(gè)公認(rèn)的端口上等待連接。因?yàn)門(mén)CP連接是一個(gè)全雙工的,由雙方端口共同確認(rèn),服務(wù)器可以同時(shí)在L端口同時(shí)處理許多來(lái)自不同U端口的連接。端口的指定 當(dāng)用于遠(yuǎn)程用戶(hù)訪問(wèn)服務(wù)主機(jī),此協(xié)議指定端口23(也就是八進(jìn)制的27)。那是 L =
30、23。Telnet技術(shù)白皮書(shū)Telnet的應(yīng)用不僅方便了我們進(jìn)行遠(yuǎn)程登錄,也給hacker們提供了又一種入侵手段和后門(mén),但無(wú)論如何,在你盡情享受Telnet所帶給你的便捷的同時(shí),你是否真正的了解Telnet呢? 二 遠(yuǎn)程登錄 Telnet服務(wù)雖然也屬于客戶(hù)機(jī)/服務(wù)器模型的服務(wù),但它更大的意義在于實(shí)現(xiàn)了基于Telnet協(xié)議的遠(yuǎn)程登錄(遠(yuǎn)程交互式計(jì)算),那么就讓我們來(lái)認(rèn)識(shí)一下遠(yuǎn)程登錄。 1 遠(yuǎn)程登陸的基本概念 先來(lái)看看什么叫登錄:分時(shí)系統(tǒng)允許多個(gè)用戶(hù)同時(shí)使用一臺(tái)計(jì)算機(jī),為了保證系統(tǒng)的安全和記帳方便,系統(tǒng)要求每個(gè)用戶(hù)有單獨(dú)的帳號(hào)作為登錄標(biāo)識(shí),系統(tǒng)還為每個(gè)用戶(hù)指定了一個(gè)口令。用戶(hù)在
31、使用該系統(tǒng)之前要輸入標(biāo)識(shí)和口令,這個(gè)過(guò)程被稱(chēng)為登錄。 遠(yuǎn)程登陸是指用戶(hù)使用Telnet命令,使自己的計(jì)算機(jī)暫時(shí)成為遠(yuǎn)程主機(jī)的一個(gè)仿真終端的過(guò)程。仿真終端等效于一個(gè)非智能的機(jī)器,它只負(fù)責(zé)把用戶(hù)輸入的每個(gè)字符傳遞給主機(jī),再將主機(jī)輸出的每個(gè)信息回顯在屏幕上。 2 遠(yuǎn)程登陸的產(chǎn)生及發(fā)展 我們可以先構(gòu)想一個(gè)提供遠(yuǎn)程文字編輯的服務(wù),這個(gè)服務(wù)的實(shí)現(xiàn)需要一個(gè)接受編輯文件請(qǐng)求和數(shù)據(jù)的服務(wù)器以及一個(gè)發(fā)送此請(qǐng)求的客戶(hù)機(jī)??蛻?hù)機(jī)將建立一個(gè)從本地機(jī)到服務(wù)器的TCP連接,當(dāng)然這需要服務(wù)器的應(yīng)答,然后向服務(wù)器發(fā)送鍵入的信息(文件編輯信息),并讀取從服務(wù)器返回的輸出。以上便是一個(gè)標(biāo)準(zhǔn)而普通的客戶(hù)機(jī)/服務(wù)器模型的服務(wù)
32、。 似乎有了客戶(hù)機(jī)/服務(wù)器模型的服務(wù),一切遠(yuǎn)程問(wèn)題都可以解決了。然而實(shí)際并非你想象的那樣簡(jiǎn)單,如果我們僅需要遠(yuǎn)程編輯文件,那么剛才所構(gòu)想的服務(wù)完全可以勝任,但假如我們的要求并不是這么簡(jiǎn)單,我們還想實(shí)現(xiàn)遠(yuǎn)程用戶(hù)管理,遠(yuǎn)程數(shù)據(jù)錄入,遠(yuǎn)程系統(tǒng)維護(hù),想實(shí)現(xiàn)一切可以在遠(yuǎn)程主機(jī)上實(shí)現(xiàn)的操作,那么我們將需要大量專(zhuān)用的服務(wù)器程序并為每一個(gè)可計(jì)算服務(wù)都使用一個(gè)服務(wù)器進(jìn)程,隨之而來(lái)的問(wèn)題是:遠(yuǎn)程機(jī)器會(huì)很快對(duì)服務(wù)器進(jìn)程應(yīng)接不暇,并淹沒(méi)在進(jìn)程的海洋里(我們?cè)谶@里排除最專(zhuān)業(yè)化的遠(yuǎn)程機(jī)器)。 那么有沒(méi)有辦法解決呢?當(dāng)然有,我們可以用遠(yuǎn)程登錄來(lái)解決這一切。我們?cè)试S用戶(hù)在遠(yuǎn)地機(jī)器上建立一個(gè)登錄會(huì)話,然后通過(guò)執(zhí)行命令來(lái)實(shí)現(xiàn)更一
33、般的服務(wù),就像在本地操作一樣。這樣,我們便可以訪問(wèn)遠(yuǎn)地系統(tǒng)上所有可用的命令,并且系統(tǒng)設(shè)計(jì)員不需提供多個(gè)專(zhuān)用地服務(wù)器程序。 問(wèn)題發(fā)展到這里好像前途一片光明了,用遠(yuǎn)程登錄總應(yīng)該解決問(wèn)題了吧,但要實(shí)現(xiàn)遠(yuǎn)程登陸并不簡(jiǎn)單。不考慮網(wǎng)絡(luò)設(shè)計(jì)的計(jì)算機(jī)系統(tǒng)期望用戶(hù)只從直接相連的鍵盤(pán)和顯示器上登錄,在這種機(jī)器上增加遠(yuǎn)程登陸功能需要修改機(jī)器的操作系統(tǒng),這是極其艱巨也是我們盡量避免的。因此我們應(yīng)該集中力量構(gòu)造遠(yuǎn)程登陸服務(wù)器軟件,雖然這樣也是比較困難的。為什么說(shuō)這樣做也比較困難呢? 舉個(gè)例子來(lái)說(shuō):一般,操作系統(tǒng)會(huì)為一些特殊按鍵分配特殊的含義,比如本地系統(tǒng)將Ctrl+C解釋為:終止當(dāng)前運(yùn)行的命令進(jìn)程。但假設(shè)我們已經(jīng)運(yùn)行了
34、遠(yuǎn)程登陸服務(wù)器軟件,Ctrl+C也有可能無(wú)法被傳送到遠(yuǎn)地機(jī)器,如果客戶(hù)機(jī)真的將Ctrl+C傳到了遠(yuǎn)地機(jī)器,那么Ctrl+C這個(gè)命令有可能不能終止本地的進(jìn)程,也就是說(shuō)在這里很可能會(huì)產(chǎn)生混亂。而且這僅僅是遇到的難題之一。 但盡管有技術(shù)上的困難,系統(tǒng)編程人員還是設(shè)法構(gòu)造了能夠應(yīng)用于大多數(shù)操作系統(tǒng)的遠(yuǎn)程登陸服務(wù)器軟件,并構(gòu)造了充當(dāng)客戶(hù)機(jī)的應(yīng)用軟件。通常,客戶(hù)機(jī)軟件取消了除一個(gè)鍵以外的所有鍵的本地解釋?zhuān)⑦@些本地解釋相應(yīng)的轉(zhuǎn)換成遠(yuǎn)地解釋?zhuān)@就使得客戶(hù)機(jī)軟件與遠(yuǎn)地機(jī)器的交互,就如同坐在遠(yuǎn)程主機(jī)面前一樣,從而避免了上述所提到的混亂。而那個(gè)唯一例外的鍵,可以使用戶(hù)回到本地環(huán)境。 將遠(yuǎn)程登陸服務(wù)器設(shè)計(jì)為應(yīng)用級(jí)
35、軟件,還有另一個(gè)要求,那就是需要操作系統(tǒng)提供對(duì)偽終端(pseudo terminal)的支持。我們用偽終端描述操作系統(tǒng)的入口點(diǎn),它允許像Telnet服務(wù)器一樣的程序向操作系統(tǒng)傳送字符,并且使得字符像是來(lái)自本地鍵盤(pán)一樣。只有使用這樣的操作系統(tǒng),才能將遠(yuǎn)程登陸服務(wù)器設(shè)計(jì)為應(yīng)用級(jí)軟件(比如Telnet服務(wù)器軟件),否則,本地操作系統(tǒng)和遠(yuǎn)地系統(tǒng)傳送將不能識(shí)別從對(duì)方傳送過(guò)來(lái)的信息(因?yàn)樗鼈儍H能識(shí)別從本地鍵盤(pán)所鍵入的信息),遠(yuǎn)程登陸將宣告失敗。 將遠(yuǎn)程登陸服務(wù)器設(shè)計(jì)為應(yīng)用級(jí)軟件雖然有其顯著的優(yōu)點(diǎn):比將代碼嵌入操作系統(tǒng)更易修改和控制服務(wù)器。但其也有效率不高的缺點(diǎn)(后面的內(nèi)容將會(huì)給予解釋),好在用戶(hù)
36、鍵入信息的速率不高,這種設(shè)計(jì)還是可以接受的。 3 遠(yuǎn)程登錄的工作過(guò)程 使用Telnet協(xié)議進(jìn)行遠(yuǎn)程登陸時(shí)需要滿(mǎn)足以下條件:在本的計(jì)算機(jī)上必須裝有包含Telnet協(xié)議的客戶(hù)程序;必須知道遠(yuǎn)程主機(jī)的Ip地址或域名;必須知道登錄標(biāo)識(shí)與口令。 Telnet遠(yuǎn)程登錄服務(wù)分為以下4個(gè)過(guò)程: 1)本地與遠(yuǎn)程主機(jī)建立連接。該過(guò)程實(shí)際上是建立一個(gè)TCP連接,用戶(hù)必須知道遠(yuǎn)程主機(jī)的Ip地址或域名; 2)將本地終端上輸入的用戶(hù)名和口令及以后輸入的任何命令或字符以NVT(Net Virtual Terminal)格式傳送到遠(yuǎn)程主機(jī)。該過(guò)程實(shí)際上是從本地主機(jī)向遠(yuǎn)程主機(jī)發(fā)送一個(gè)IP數(shù)據(jù)報(bào);
37、3)將遠(yuǎn)程主機(jī)輸出的NVT格式的數(shù)據(jù)轉(zhuǎn)化為本地所接受的格式送回本地終端,包括輸入命令回顯和命令執(zhí)行結(jié)果; 4)最后,本地終端對(duì)遠(yuǎn)程主機(jī)進(jìn)行撤消連接。該過(guò)程是撤銷(xiāo)一個(gè)TCP連接。 上面的內(nèi)容只是討論了遠(yuǎn)程登陸最基本的東西,其中的復(fù)雜和編程人員的艱辛是我們難以想象的,不知道你在舒服的使用Telnet的同時(shí),是否想到了這些! 三 Telnet協(xié)議 我們知道Telnet服務(wù)器軟件是我們最常用的遠(yuǎn)程登錄服務(wù)器軟件,是一種典型的客戶(hù)機(jī)/服務(wù)器模型的服務(wù),它應(yīng)用Telnet協(xié)議來(lái)工作。那么,什么是Telnet協(xié)議?它都具備哪些特點(diǎn)呢? 1 基本內(nèi)容 Telnet協(xié)議是TCP/IP協(xié)議族中
38、的一員,是Internet遠(yuǎn)程登陸服務(wù)的標(biāo)準(zhǔn)協(xié)議。應(yīng)用Telnet協(xié)議能夠把本地用戶(hù)所使用的計(jì)算機(jī)變成遠(yuǎn)程主機(jī)系統(tǒng)的一個(gè)終端。它提供了三種基本服務(wù): 1)Telnet定義一個(gè)網(wǎng)絡(luò)虛擬終端為遠(yuǎn)的系統(tǒng)提供一個(gè)標(biāo)準(zhǔn)接口。客戶(hù)機(jī)程序不必詳細(xì)了解遠(yuǎn)的系統(tǒng),他們只需構(gòu)造使用標(biāo)準(zhǔn)接口的程序; 2)Telnet包括一個(gè)允許客戶(hù)機(jī)和服務(wù)器協(xié)商選項(xiàng)的機(jī)制,而且它還提供一組標(biāo)準(zhǔn)選項(xiàng); 3)Telnet對(duì)稱(chēng)處理連接的兩端,即Telnet不強(qiáng)迫客戶(hù)機(jī)從鍵盤(pán)輸入,也不強(qiáng)迫客戶(hù)機(jī)在屏幕上顯示輸出。 2 適應(yīng)異構(gòu) 為了使多個(gè)操作系統(tǒng)間的Telnet交互操作成為可能,就必須詳細(xì)了解異構(gòu)計(jì)算機(jī)和操作系統(tǒng)。比如,一些操作
39、系統(tǒng)需要每行文本用ASCII回車(chē)控制符(CR)結(jié)束,另一些系統(tǒng)則需要使用ASCII換行符(LF),還有一些系統(tǒng)需要用兩個(gè)字符的序列回車(chē)-換行(CR-LF);再比如,大多數(shù)操作系統(tǒng)為用戶(hù)提供了一個(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è)問(wèn)題。 為了適應(yīng)異構(gòu)環(huán)境,Telnet協(xié)議定義了數(shù)據(jù)和命令在Internet上的傳輸方式,此定義被稱(chēng)作網(wǎng)絡(luò)虛擬終端NVT(Net Vir
40、tual Terminal)。它的應(yīng)用過(guò)程如下: 對(duì)于發(fā)送的數(shù)據(jù):客戶(hù)機(jī)軟件把來(lái)自用戶(hù)終端的按鍵和命令序列轉(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格式,而本地客戶(hù)機(jī)將將接收到的NVT格式數(shù)據(jù)再轉(zhuǎn)換為本地的格式。 對(duì)于NVT格式的詳細(xì)定義,有興趣的朋友可以去查找相關(guān)資料。 3 傳送遠(yuǎn)地命令 我們知道絕大多數(shù)操作系統(tǒng)都提供各種快捷鍵來(lái)實(shí)現(xiàn)相應(yīng)的控制命令,當(dāng)用戶(hù)在本地終端鍵入這些快捷鍵的時(shí)候,本地系統(tǒng)將執(zhí)行相應(yīng)的控制命令,而不把這些快捷鍵作為輸入。那么對(duì)于T
41、elnet來(lái)說(shuō),它是用什么來(lái)實(shí)現(xiàn)控制命令的遠(yuǎn)地傳送呢? Telnet同樣使用NVT來(lái)定義如何從客戶(hù)機(jī)將控制功能傳送到服務(wù)器。我們知道USASCII字符集包括95個(gè)可打印字符和33個(gè)控制碼。當(dāng)用戶(hù)從本地鍵入普通字符時(shí),NVT將按照其原始含義傳送;當(dāng)用戶(hù)鍵入快捷鍵(組合鍵)時(shí),NVT將把它轉(zhuǎn)化為特殊的ASCII字符在網(wǎng)絡(luò)上傳送,并在其到達(dá)遠(yuǎn)地機(jī)器后轉(zhuǎn)化為相應(yīng)的控制命令。將正常ASCII字符集與控制命令區(qū)分主要有兩個(gè)原因: 1)這種區(qū)分意味著Telnet具有更大的靈活性:它可在客戶(hù)機(jī)與服務(wù)器間傳送所有可能的ASCII字符以及所有控制功能; 2)這種區(qū)分使得客戶(hù)機(jī)可以無(wú)二義性的指定信令,而不會(huì)產(chǎn)生控制
42、功能與普通字符的混亂。 4 數(shù)據(jù)流向 上面我們提到過(guò)將Telnet設(shè)計(jì)為應(yīng)用級(jí)軟件有一個(gè)缺點(diǎn),那就是:效率不高。這是為什么呢?下面給出Telnet中的數(shù)據(jù)流向: 數(shù)據(jù)信息被用戶(hù)從本地鍵盤(pán)鍵入并通過(guò)操作系統(tǒng)傳到客戶(hù)機(jī)程序,客戶(hù)機(jī)程序?qū)⑵涮幚砗蠓祷夭僮飨到y(tǒng),并由操作系統(tǒng)經(jīng)過(guò)網(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ù)傳送到用戶(hù)正在運(yùn)行的應(yīng)用程序,這便是一次完整的輸入過(guò)程;輸出將按照同一通路從服務(wù)器傳送到客戶(hù)機(jī)。 因?yàn)槊恳淮蔚妮斎牒洼敵?,?jì)算機(jī)將切換進(jìn)程環(huán)境好幾次,這個(gè)開(kāi)銷(xiāo)是很昂貴的
43、。還好用戶(hù)的鍵入速率并不算高,這個(gè)缺點(diǎn)我們?nèi)匀荒軌蚪邮堋?5 強(qiáng)制命令 我們應(yīng)該考慮到這樣一種情況:假設(shè)本地用戶(hù)運(yùn)行了遠(yuǎn)地機(jī)器的一個(gè)無(wú)休止循環(huán)的錯(cuò)誤命令或程序,且此命令或程序已經(jīng)停止讀取輸入,那么操作系統(tǒng)的緩沖區(qū)可能因此而被占滿(mǎn),如果這樣,遠(yuǎn)地服務(wù)器也無(wú)法再將數(shù)據(jù)寫(xiě)入偽終端,并且最終導(dǎo)致停止從TCP連接讀取數(shù)據(jù),TCP連接的緩沖區(qū)最終也會(huì)被占滿(mǎn),從而導(dǎo)致阻止數(shù)據(jù)流流入此連接。如果以上事情真的發(fā)生了,那么本地用戶(hù)將失去對(duì)遠(yuǎn)地機(jī)器的控制。 為了解決此問(wèn)題,Telnet協(xié)議必須使用外帶信令以便強(qiáng)制服務(wù)器讀取一個(gè)控制命令。我們知道TCP用緊急數(shù)據(jù)機(jī)制實(shí)現(xiàn)外帶數(shù)據(jù)信令,那么Telnet只要再附
44、加一個(gè)被稱(chēng)為數(shù)據(jù)標(biāo)記(date mark)的保留八位組,并通過(guò)讓TCP發(fā)送已設(shè)置緊急數(shù)據(jù)比特的報(bào)文段通知服務(wù)器便可以了,攜帶緊急數(shù)據(jù)的報(bào)文段將繞過(guò)流量控制直接到達(dá)服務(wù)器。作為對(duì)緊急信令的相應(yīng),服務(wù)器將讀取并拋棄所有數(shù)據(jù),直到找到了一個(gè)數(shù)據(jù)標(biāo)記。服務(wù)器在遇到了數(shù)據(jù)標(biāo)記后將返回正常的處理過(guò)程。 6 選項(xiàng)協(xié)商 由于Telnet兩端的機(jī)器和操作系統(tǒng)的異構(gòu)性,使得Telnet不可能也不應(yīng)該嚴(yán)格規(guī)定每一個(gè)telnet連接的詳細(xì)配置,否則將大大影響Telnet的適應(yīng)異構(gòu)性。因此,Telnet采用選項(xiàng)協(xié)商機(jī)制來(lái)解決這一問(wèn)題。 Telnet選項(xiàng)的范圍很廣:一些選項(xiàng)擴(kuò)充了大方向的功
45、能,而一些選項(xiàng)制涉及一些微小細(xì)節(jié)。例如:有一個(gè)選項(xiàng)可以控制Telnet是在半雙工還是全雙工模式下工作(大方向);還有一個(gè)選項(xiàng)允許遠(yuǎn)地機(jī)器上的服務(wù)器決定用戶(hù)終端類(lèi)型(小細(xì)節(jié))。 Telnet選項(xiàng)的協(xié)商方式也很有意思,它對(duì)于每個(gè)選項(xiàng)的處理都是對(duì)稱(chēng)的,即任何一端都可以發(fā)出協(xié)商申請(qǐng);任何一端都可以接受或拒絕這個(gè)申請(qǐng)。另外,如果一端試圖協(xié)商另一端不了解的選項(xiàng),接受請(qǐng)求的一端可簡(jiǎn)單的拒絕協(xié)商。因此,有可能將更新,更復(fù)雜的Telnet客戶(hù)機(jī)服務(wù)器版本與較老的,不太復(fù)雜的版本進(jìn)行交互操作。如果客戶(hù)機(jī)和服務(wù)器都理解新的選項(xiàng),可能會(huì)對(duì)交互有所改善。否則,它們將一起轉(zhuǎn)到效率較低但可工作的方式下運(yùn)行。所有的這些設(shè)計(jì),
46、都是為了增強(qiáng)適應(yīng)異構(gòu)性,可見(jiàn)Telnet的適應(yīng)異構(gòu)性對(duì)其的應(yīng)用和發(fā)展是多么重要。 上面討論了一些原理方面的東西,雖然我們?cè)赥elnet的使用過(guò)程中很難接觸到這一層面,但我認(rèn)為了解這些是有意義的,它會(huì)給我們帶來(lái)許多啟示。下面讓我們來(lái)看看Win2000的Telnet服務(wù)。 (本系列教程不定期更新,欲獲得最新版本,請(qǐng)登陸官方網(wǎng)站:菜菜鳥(niǎo)社) 四 Win2000的Telnet服務(wù) 其實(shí)從應(yīng)用層面上,Win2000的Telnet服務(wù)并沒(méi)有什么可說(shuō)的,絕大部分內(nèi)容你都可以從HELP文件中得到,我在此只是把它稍微整理一下而已。 1 基本配置 Win2000為我們提供了Telnet客戶(hù)機(jī)和
47、服務(wù)器程序:Telnet.exe是客戶(hù)機(jī)程序(Client),tlntsvr.exe是服務(wù)器程序(server),同時(shí)它還為我們提供了Telnet服務(wù)器管理程序tlntadmn.exe。 Windows 2000 默認(rèn)安裝了 Telnet 服務(wù),但是并沒(méi)有默認(rèn)啟動(dòng)。下面給出HELP文件中 Telnet 服務(wù)的一部分默認(rèn)設(shè)置: AllowTrustedDomain:是否允許域用戶(hù)訪問(wèn)。默認(rèn)值是1,允許信任域用戶(hù)訪問(wèn)。可以改為0: 不允許域用戶(hù)訪問(wèn)(只允許本地用戶(hù))。 DefaultDomain:可以對(duì)與該計(jì)算機(jī)具有信任關(guān)系的任
48、何域設(shè)置。默認(rèn)值是"."。 DefaultShell:顯示 shell 安裝的路徑位置。默認(rèn)值是: %systemroot%System32Cmd.exe /q /k MaxFailedLogins:在連接終止之前顯示嘗試登錄失敗的最大次數(shù)。默認(rèn)是3。 LoginScript:顯示 Telnet 服務(wù)器登錄腳本的路徑位置。默認(rèn)的位置就是“%systemroot%System32login.cmd”,你可以更改腳本內(nèi)容,這樣登錄進(jìn)Telnet的歡迎屏幕就不一樣了。 NTLM:NTLM身份驗(yàn)證選項(xiàng)
49、。默認(rèn)是2??梢杂邢旅孢@些值: 0: 不使用 NTLM 身份驗(yàn)證。 1: 先嘗試 NTLM 身份驗(yàn)證,如果失敗,再使用用戶(hù)名和密碼。 2: 只使用 NTLM 身份驗(yàn)證。 TelnetPort:顯示 telnet 服務(wù)器偵聽(tīng) telnet 請(qǐng)求的端口。默認(rèn)是:23。你也可以更改為其他端口。 以上各項(xiàng)設(shè)置你可以使用tlntadmn.exe(Telnet服務(wù)器管理程序)來(lái)進(jìn)行非常方便的配置,配置后需要重新啟動(dòng)Telnet服務(wù)。如圖1 2 NTLM 提到了teln
50、et就不能不提NTLM,我想這也是讓入侵者最為頭痛的一件事,哪怕你獲得了管理員帳號(hào)和密碼,想簡(jiǎn)單通過(guò)NTLM也并非易事,況且win2000中的telnet默認(rèn)僅以NTLM方式驗(yàn)證身份,這就讓我們不得不關(guān)注NTLM這個(gè)東東,那么什么是NTLM呢? 早期的SMB協(xié)議在網(wǎng)絡(luò)上明文傳輸口令,后來(lái)出現(xiàn)了"LAN Manager Challenge/Response"驗(yàn)證機(jī)制,簡(jiǎn)稱(chēng)LM,它十分簡(jiǎn)單以至很容易被破解,微軟隨后提出了WindowsNT挑戰(zhàn)/響應(yīng)驗(yàn)證機(jī)制,即NTLM?,F(xiàn)在已經(jīng)有了更新的NTLMv2以及Kerberos驗(yàn)證體系。NTLM工作流程是這樣的: 1
51、、客戶(hù)端首先在本地加密當(dāng)前用戶(hù)的密碼成為密碼散列 2、客戶(hù)端向服務(wù)器發(fā)送自己的帳號(hào),這個(gè)帳號(hào)是沒(méi)有經(jīng)過(guò)加密的,明文直接傳輸 3、服務(wù)器產(chǎn)生一個(gè)16位的隨機(jī)數(shù)字發(fā)送給客戶(hù)端,作為一個(gè) challenge(挑戰(zhàn)) 4、客戶(hù)端再用加密后的密碼散列來(lái)加密這個(gè) challenge ,然后把這個(gè)返回給服務(wù)器。作為 response(響應(yīng)) 5、服務(wù)器把用戶(hù)名、給客戶(hù)端的challenge 、客戶(hù)端返回的 response 這三個(gè)東西,發(fā)送域控制器 6、域控制器用這個(gè)用戶(hù)名在 SAM密碼管理庫(kù)中找到這個(gè)用
52、戶(hù)的密碼散列,然后使用這個(gè)密碼散列來(lái)加密 challenge。 7、域控制器比較兩次加密的 challenge ,如果一樣,那么認(rèn)證成功。 從上面的過(guò)程我們可以看出,NTLM是以當(dāng)前用戶(hù)的身份向Telnet服務(wù)器發(fā)送登錄請(qǐng)求的,而不是用你掃到的對(duì)方管理員的帳戶(hù)和密碼登錄,顯然,你的登錄將會(huì)失敗。舉個(gè)例子來(lái)說(shuō),你家的機(jī)器名為A(本地機(jī)器),你入侵的機(jī)器名為B(遠(yuǎn)地機(jī)器),你在A上的帳戶(hù)是xinxin,密碼是1234,你掃到B的管理員帳號(hào)是Administrator,密碼是5678,當(dāng)你想Telnet到B時(shí),NTLM將自動(dòng)以當(dāng)前用戶(hù)的帳號(hào)和密碼作為登錄的憑據(jù)來(lái)進(jìn)行上面
53、的7項(xiàng)操作,即用xinxin和1234,而并非用你掃到的Administrator和5678,且這些都是自動(dòng)完成的,根本不給你插手的機(jī)會(huì),因此你的登錄操作將失敗。 由于Telnet服務(wù)器對(duì)NTLM的使用有3個(gè)選項(xiàng),所以當(dāng)你Telnet遠(yuǎn)地機(jī)器時(shí),會(huì)顯示下面情況中的一種: 1)身份驗(yàn)證選項(xiàng)=0時(shí) = Microsoft (R) Windows (TM) Version 5.00 (Build 2195) Welcome to Microsoft Telnet Service Telnet
54、 Server Build 5.00.99201.1 login: password: 為0時(shí)不使用NTML身份驗(yàn)證,直接輸入用戶(hù)名和密碼,比如你可以輸入掃到的Administrator和5678 2)身份驗(yàn)證選項(xiàng)=1時(shí) = NTLM Authentication failed due to insufficient credentials. Please login withclear text username and passwo
55、rd Microsoft (R) Windows (TM) Version 5.00 (Build 2195) Welcome to Microsoft Telnet Service Telnet Server Build 5.00.99201.1 login: password: 先嘗試 NTLM 身份驗(yàn)證,如果失敗,再使用用戶(hù)名和密碼,其實(shí)這種方式對(duì)于我們來(lái)說(shuō),與上一種方式?jīng)]什么區(qū)別 3)身份驗(yàn)證選項(xiàng)=2時(shí) = NTLM
56、 Authentication failed due to insufficient credentials. Please login withclear text username and password Server allows NTLM authentication only Server has closed connection 遺失對(duì)主機(jī)的連接。 C:> 仔細(xì)看看上面的顯示
57、,根本沒(méi)有給你輸入用戶(hù)名和密碼的機(jī)會(huì),直接斷開(kāi)連接,掃到了密碼也是白掃 所以對(duì)于入侵者來(lái)說(shuō),NTLM是橫在我們面前的一座大山,必須要除掉它,一般我們有如下幾種方法: 1通過(guò)修改遠(yuǎn)程注冊(cè)表更改telnet服務(wù)器配置,將驗(yàn)證方式從2改為1或0; 2使用NTLM.exe,上傳后直接運(yùn)行,可將telnet服務(wù)器驗(yàn)證方式從2改為1; 3在本地建立掃描到的用戶(hù),以此用戶(hù)身份開(kāi)啟telnet客戶(hù)機(jī)并進(jìn)行遠(yuǎn)程登錄; 4使用軟件,比如opentelnet.exe(需要管理員權(quán)限且開(kāi)啟IPC管道) 5使用腳本,如RTCS,(需要管理員權(quán)限但不依賴(lài)IPC管道) 基本上是以上的5種,其中后兩種是我們比較常用的開(kāi)tel
58、net的手法,而且使用方法十分簡(jiǎn)單,命令如下: OpenTelnet.exe server username password NTLMAuthor telnetport OpenTelnet.exe 服務(wù)器地址 管理員用戶(hù)名 密碼 驗(yàn)證方式(填0或1) telnet端口 cscript RTCS.vbe targetIP username password NTLMAuthor telnetport cscript RTCS.vbe <目標(biāo)IP> <管理員用戶(hù)名> <密碼> <驗(yàn)證方式> 五 在telnet中該做什么 本來(lái)寫(xiě)到上面就想結(jié)束了,不過(guò)許多朋友都說(shuō)telnet上去后不知道該做什么了,既然這樣,那我就拋磚引玉吧,這次不講具體做法,只是說(shuō)說(shuō)思路,什么?為什么不講具體做法?篇幅不夠嘛,以后我會(huì)一一解釋的。 1 查看
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度年福建省高校教師資格證之高等教育法規(guī)押題練習(xí)試題B卷含答案
- 2024年無(wú)線呼叫器項(xiàng)目資金需求報(bào)告代可行性研究報(bào)告
- 2024年煤制合成氨項(xiàng)目資金需求報(bào)告代可行性研究報(bào)告
- 三年級(jí)數(shù)學(xué)計(jì)算題專(zhuān)項(xiàng)練習(xí)及答案集錦
- 視覺(jué)、情感與認(rèn)同:視聽(tīng)綜藝節(jié)目的文化認(rèn)同建構(gòu)路徑
- 牛津譯林版英語(yǔ)高一上學(xué)期期末試題及答案指導(dǎo)
- 2024年橋梁建設(shè)協(xié)議格式實(shí)例
- 二手房經(jīng)紀(jì)服務(wù)個(gè)性化協(xié)議樣本
- 2024年非全日制員工協(xié)議示范文本
- 2024年試用期間協(xié)議期限規(guī)定詳解
- 抗菌藥物科普小常識(shí)
- GA 844-2009防砸復(fù)合玻璃通用技術(shù)要求
- 小學(xué)四年級(jí)下冊(cè)綜合實(shí)踐活動(dòng).二十四節(jié)氣-(37張)ppt
- 鼻通氣功能檢查
- MES技術(shù)及其應(yīng)用-西門(mén)子MES剖析課件
- 搶救車(chē)藥品交接本
- 體育說(shuō)課教學(xué)課件
- 畫(huà)鼻子游戲課件
- 小區(qū)施工管理制度4篇
- 《西方禮儀》教案
- 《逍遙游》-完整版課件
評(píng)論
0/150
提交評(píng)論