Telnet命令

雪原虎發表於2011-08-18
 一 摘要

Telnet的應用不僅方便了我們進行遠端登入,也給hacker們提供了又一種入侵手段和後門,但無論如何,在你盡情享受Telnet所帶給你的便捷的同時,你是否真正的瞭解Telnet呢?

二 遠端登入


Telnet服務雖然也屬於客戶機/伺服器模型的服務,但它更大的意義在於實現了基於Telnet協議的遠端登入(遠端互動式計算),那麼就讓我們來認識一下遠端登入。


1 遠端登陸的基本概念


先來看看什麼叫登入:分時系統允許多個使用者同時使用一臺計算機,為了保證系統的安全和記帳方便,系統要求每個使用者有單獨的帳號作為登入標識,系統還為每個使用者指定了一個口令。使用者在使用該系統之前要輸入標識和口令,這個過程被稱為’登入’。

遠端登陸是指使用者使用Telnet命令,使自己的計算機暫時成為遠端主機的一個模擬終端的過程。模擬終端等效於一個非智慧的機器,它只負責把使用者輸入的每個字元傳遞給主機,再將主機輸出的每個資訊回顯在螢幕上。

2 遠端登入的工作過程


使用Telnet協議進行遠端登陸時需要滿足以下條件:在本的計算機上必須裝有包含Telnet協議的客戶程式;必須知道遠端主機的Ip地址或域名;必須知道登入標識與口令。

Telnet遠端登入服務分為以下4個過程:

1)本地與遠端主機建立連線。該過程實際上是建立一個TCP連線,使用者必須知道遠端主機的Ip地址或域名;

2)將本地終端上輸入的使用者名稱和口令及以後輸入的任何命令或字元以NVT(Net Virtual Terminal)格式傳送到遠端主機。該過程實際上是從本地主機向遠端主機傳送一個IP資料包;

3)將遠端主機輸出的NVT格式的資料轉化為本地所接受的格式送回本地終端,包括輸入命令回顯和命令執行結果;

4)最後,本地終端對遠端主機進行撤消連線。該過程是撤銷一個TCP連線。


上面的內容只是討論了遠端登陸最基本的東西,其中的複雜和程式設計人員的艱辛是我們難以想象的,不知道你在舒服的使用Telnet的同時,是否想到了這些!


三 Telnet協議


我們知道Telnet伺服器軟體是我們最常用的遠端登入伺服器軟體,是一種典型的客戶機/伺服器模型的服務,它應用Telnet協議來工作。那麼,什麼是Telnet協議?它都具備哪些特點呢?


1 基本內容


Telnet協議是TCP/IP協議族中的一員,是Internet遠端登陸服務的標準協議。應用Telnet協議能夠把本地使用者所使用的計算機變成遠端主機系統的一個終端。它提供了三種基本服務:

1)Telnet定義一個網路虛擬終端為遠的系統提供一個標準介面。客戶機程式不必詳細瞭解遠的系統,他們只需構造使用標準介面的程式;

2)Telnet包括一個允許客戶機和伺服器協商選項的機制,而且它還提供一組標準選項;

3)Telnet對稱處理連線的兩端,即Telnet不強迫客戶機從鍵盤輸入,也不強迫客戶機在螢幕上顯示輸出。


2 適應異構


為了使多個作業系統間的Telnet互動操作成為可能,就必須詳細瞭解異構計算機和作業系統。比如,一些作業系統需要每行文字用ASCII回車控制符(CR)結束,另一些系統則需要使用ASCII換行符(LF),還有一些系統需要用兩個字元的序列回車-換行(CR-LF);再比如,大多數作業系統為使用者提供了一箇中斷程式執行的快捷鍵,但這個快捷鍵在各個系統中有可能不同(一些系統使用CTRL+C,而另一些系統使用ESCAPE)。如果不考慮系統間的異構性,那麼在本地發出的字元或命令,傳送到遠地並被遠地系統解釋後很可能會不準確或者出現錯誤。因此,Telnet協議必須解決這個問題。

為了適應異構環境,Telnet協議定義了資料和命令在Internet上的傳輸方式,此定義被稱作網路虛擬終端NVT(Net Virtual Terminal)。它的應用過程如下:

對於傳送的資料:客戶機軟體把來自使用者終端的按鍵和命令序列轉換為NVT格式,併傳送到伺服器,伺服器軟體將收到的資料和命令,從NVT格式轉換為遠地系統需要的格式;
對於返回的資料:遠地伺服器將資料從遠地機器的格式轉換為NVT格式,而本地客戶機將將接收到的NVT格式資料再轉換為本地的格式。
對於NVT格式的詳細定義,有興趣的朋友可以去查詢相關資料。

3 傳送遠地命令


我們知道絕大多數作業系統都提供各種快捷鍵來實現相應的控制命令,當使用者在本地終端鍵入這些快捷鍵的時候,本地系統將執行相應的控制命令,而不把這些快捷鍵作為輸

入。那麼對於Telnet來說,它是用什麼來實現控制命令的遠地傳送呢?Telnet 同樣使用NVT來定義如何從客戶機將控制功能傳送到伺服器。我們知道USASCII字

符集包括95個可列印字元和33個控制碼。當使用者從本地鍵入普通字元時,NVT將按照其原始含義傳送;當使用者鍵入快捷鍵(組合鍵)時,NVT將把它轉化為特殊的ASCII字元在網路上傳送,並在其到達遠地機器後轉化為相應的控制命令。將正常ASCII字符集與控制命令區分主要有兩個原因:

1)這種區分意味著Telnet具有更大的靈活性:它可在客戶機與伺服器間傳送所有可能的ASCII字元以及所有控制功能;

2)這種區分使得客戶機可以無二義性的指定信令,而不會產生控制功能與普通字元的混亂。


4 資料流向


上面我們提到過將Telnet設計為應用級軟體有一個缺點,那就是:效率不高。這是為什麼呢?下面給出Telnet中的資料流向:

資料資訊被使用者從本地鍵盤鍵入並通過作業系統傳到客戶機程式,客戶機程式將其處理後返回作業系統,並由作業系統經過網路傳送到遠地機器,遠地作業系統將所接收資料

傳給伺服器程式,並經伺服器程式再次處理後返回到作業系統上的偽終端入口點,最後,遠地作業系統將資料傳送到使用者正在執行的應用程式,這便是一次完整的輸入過程;

輸出將按照同一通路從伺服器傳送到客戶機。

因為每一次的輸入和輸出,計算機將切換程式環境好幾次,這個開銷是很昂貴的。還好使用者的鍵入速率並不算高,這個缺點我們仍然能夠接受。


5 強制命令


我們應該考慮到這樣一種情況:假設本地使用者執行了遠地機器的一個無休止迴圈的錯誤命令或程式,且此命令或程式已經停止讀取輸入,那麼作業系統的緩衝區可能因此而被

佔滿,如果這樣,遠地伺服器也無法再將資料寫入偽終端,並且最終導致停止從TCP連線讀取資料,TCP連線的緩衝區最終也會被佔滿,從而導致阻止資料流流入此連線。如果以上事情真的發生了,那麼本地使用者將失去對遠地機器的控制。

為了解決此問題,Telnet協議必須使用外帶信令以便強制伺服器讀取一個控制命令。我們知道TCP用緊急資料機制實現外帶資料信令,那麼Telnet只要再附加一個被稱為資料標

記(date mark) 的保留八位組,並通過讓TCP傳送已設定緊急資料位元的報文段通知伺服器便可以了,攜帶緊急資料的報文段將繞過流量控制直接到達伺服器。作為對緊急信令

的相應,伺服器將讀取並拋棄所有資料,直到找到了一個資料標記。伺服器在遇到了資料標記後將返回正常的處理過程。


6 選項協商


由於Telnet兩端的機器和作業系統的異構性,使得Telnet不可能也不應該嚴格規定每一個telnet連線的詳細配置,否則將大大影響Telnet的適應異構性。因此,Telnet採用選

項協商機制來解決這一問題。

Telnet選項的範圍很廣:一些選項擴充了大方向的功能,而一些選項制涉及一些微小細節。例如:有一個選項可以控制Telnet是在半雙工還是全雙工模式下工作(大方向);

還有一個選項允許遠地機器上的伺服器決定使用者終端型別(小細節)。

Telnet 選項的協商方式也很有意思,它對於每個選項的處理都是對稱的,即任何一端都可以發出協商申請;任何一端都可以接受或拒絕這個申請。另外,如果一端試圖協商另

一端不瞭解的選項,接受請求的一端可簡單的拒絕協商。因此,有可能將更新,更復雜的Telnet客戶機伺服器版本與較老的,不太複雜的版本進行互動操作。如果客戶機和服

務器都理解新的選項,可能會對互動有所改善。否則,它們將一起轉到效率較低但可工作的方式下執行。所有的這些設計,都是為了增強適應異構性,可見Telnet的適應異構

性對其的應用和發展是多麼重要。

例如遠端連線到unix伺服器上,運算元據庫:

telnet 10.25.210.63
user:oracle
pass:oracle
cd /oracle/phase2UAT

imp system/password fromuser=cdb521phase2UAT touser=cdb521phase2UAT2 file=cdb521phase2UAT_20110510_100916.dmp grants=n

 

 

相關文章