Telnet是進行遠端登入的標準協議和主要方式它為使用者提供了在本地計算機上完成遠端主機工作的能力。透過使用Telnet,Internet使用者可以與全世界許多資訊中心圖書館及其它資訊資源聯絡。Telnet遠端登入的使用主要有兩種情況。第一種是使用者在遠端主祝上有自己的帳號(Account),即使用者擁有註冊的使用者名稱和口令;第二種是許多Internet主機為使用者提供了某種形式的公共Telnet資訊資源,這種資源對於每一個Telnet使用者都是開放的。Telnet是使用最為簡單的Internet工具之一。
telnet/?
命令可以縮寫。支援的命令為:
c-關閉關閉當前連線
d-顯示顯示操作引數
o-開啟主機名[埠]連線到一個主機名(預設埠23)
q-退出退出telnet
set-設定設定選項(要列表,請鍵入\"set?\")
sen-傳送將字串送到伺服器
st-狀態列印狀態資訊
u-解除設定解除設定選項(要列表,請鍵入\"unset?\")
?/h-幫助列印幫助資訊
一摘要
二遠端登入
三Telnet協議
四Win2000的Telnet服務
五在telnet中該做什麼
Telnet的應用不僅方便了我們進行遠端登入,也給hacker們提供了又一種入侵手段和後門,但無論如何,在你盡情享受Telnet所帶給你的便捷的同時,你是否真正的瞭解Telnet呢?
Telnet服務雖然也屬於客戶機/伺服器模型的服務,但它更大的意義在於實現了基於Telnet協議的遠端登入(遠端互動式計算),那麼就讓我們來認識一下遠端登入。
1遠端登陸的基本概念
先來看看什麼叫登入:分時系統允許多個使用者同時使用一臺計算機,為了保證系統的安全和記帳方便,系統要求每個使用者有單獨的帳號作為登入標識,系統還為每個使用者指定了一個口令。使用者在使用該系統之前要輸入標識和口令,這個過程被稱為\"登入\"。
遠端登陸是指使用者使用Telnet命令,使自己的計算機暫時成為遠端主機的一個模擬終端的過程。模擬終端等效於一個非智慧的機器,它只負責把使用者輸入的每個字元傳遞給主機,再將主機輸出的每個資訊回顯在螢幕上。
2遠端登陸的產生及發展
我們可以先構想一個提供遠端文字編輯的服務,這個服務的實現需要一個接受編輯檔案請求和資料的伺服器以及一個傳送此請求的客戶機。客戶機將建立一個從本地機到伺服器的TCP連線,當然這需要伺服器的應答,然後向伺服器傳送鍵入的資訊(檔案編輯資訊),並讀取從伺服器返回的輸出。以上便是一個標準而普通的客戶機/伺服器模型的服務。
似乎有了客戶機/伺服器模型的服務,一切遠端問題都可以解決了。然而實際並非你想象的那樣簡單,如果我們僅需要遠端編輯檔案,那麼剛才所構想的服務完全可以勝任,但假如我們的要求並不是這麼簡單,我們還想實現遠端使用者管理,遠端資料錄入,遠端系統維護,想實現一切可以在遠端主機上實現的操作,那麼我們將需要大量專用的伺服器程式併為每一個可計算服務都使用一個伺服器程序,隨之而來的問題是:遠端機器會很快對伺服器程序應接不暇,並淹沒在程序的海洋裡(我們在這裡排除最專業化的遠端機器)。
那麼有沒有辦法解決呢?當然有,我們可以用遠端登入來解決這一切。我們允許使用者在遠地機器上建立一個登入會話,然後透過執行命令來實現更一般的服務,就像在本地操作一樣。這樣,我們便可以訪問遠地系統上所有可用的命令,並且系統設計員不需提供多個專用地伺服器程式。
問題發展到這裡好像前途一片光明瞭,用遠端登入總應該解決問題了吧,但要實現遠端登陸並不簡單。不考慮網路設計的計算機系統期望使用者只從直接相連的鍵盤和顯示器上登入,在這種機器上增加遠端登陸功能需要修改機器的作業系統,這是極其艱鉅也是我們儘量避免的。因此我們應該集中力量構造遠端登陸伺服器軟體,雖然這樣也是比較困難的。為什麼說這樣做也比較困難呢?
舉個例子來說:一般,作業系統會為一些特殊按鍵分配特殊的含義,比如本地系統將\"Ctrl+C\"解釋為:\"終止當前執行的命令程序\"。但假設我們已經運行了遠端登陸伺服器軟體,\"Ctrl+C\"也有可能無法被傳送到遠地機器,如果客戶機真的將\"Ctrl+C\"傳到了遠地機器,那麼\"Ctrl+C\"這個命令有可能不能終止本地的程序,也就是說在這裡很可能會產生混亂。而且這僅僅是遇到的難題之一。
但儘管有技術上的困難,系統程式設計人員還是設法構造了能夠應用於大多數作業系統的遠端登陸伺服器軟體,並構造了充當客戶機的應用軟體。通常,客戶機軟體取消了除一個鍵以外的所有鍵的本地解釋,並將這些本地解釋相應的轉換成遠地解釋,這就使得客戶機軟體與遠地機器的互動,就如同坐在遠端主機面前一樣,從而避免了上述所提到的混亂。而那個唯一例外的鍵,可以使使用者回到本地環境。
將遠端登陸伺服器設計為應用級軟體,還有另一個要求,那就是需要作業系統提供對偽終端(pseudoterminal)的支援。我們用偽終端描述作業系統的入口點,它允許像Telnet伺服器一樣的程式向作業系統傳送字元,並且使得字元像是來自本地鍵盤一樣。只有使用這樣的作業系統,才能將遠端登陸伺服器設計為應用級軟體(比如Telnet伺服器軟體),否則,本地作業系統和遠地系統傳送將不能識別從對方傳送過來的資訊(因為它們僅能識別從本地鍵盤所鍵入的資訊),遠端登陸將宣告失敗。
將遠端登陸伺服器設計為應用級軟體雖然有其顯著的優點:比將程式碼嵌入作業系統更易修改和控制伺服器。但其也有效率不高的缺點(後面的內容將會給予解釋),好在使用者鍵入資訊的速率不高,這種設計還是可以接受的。
3遠端登入的工作過程
使用Telnet協議進行遠端登陸時需要滿足以下條件:在本的計算機上必須裝有包含Telnet協議的客戶程式;必須知道遠端主機的Ip地址或域名;必須知道登入標識與口令。
Telnet遠端登入服務分為以下4個過程:
1)本地與遠端主機建立連線。該過程實際上是建立一個TCP連線,使用者必須知道遠端主機的Ip地址或域名;
2)將本地終端上輸入的使用者名稱和口令及以後輸入的任何命令或字元以NVT(NetVirtualTerminal)格式傳送到遠端主機。該過程實際上是從本地主機向遠端主機發送一個IP資料報;
3)將遠端主機輸出的NVT格式的資料轉化為本地所接受的格式送回本地終端,包括輸入命令回顯和命令執行結果;
4)最後,本地終端對遠端主機進行撤消連線。該過程是撤銷一個TCP連線。
我們知道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(NetVirtualTerminal)。它的應用過程如下:
對於傳送的資料:客戶機軟體把來自使用者終端的按鍵和命令序列轉換為NVT格式,併發送到伺服器,伺服器軟體將收到的資料和命令,從NVT格式轉換為遠地系統需要的格式;
對於返回的資料:遠地伺服器將資料從遠地機器的格式轉換為NVT格式,而本地客戶機將將接收到的NVT格式資料再轉換為本地的格式。
對於NVT格式的詳細定義,有興趣的朋友可以去查詢相關資料。
3傳送遠地命令
我們知道絕大多數作業系統都提供各種快捷鍵來實現相應的控制命令,當用戶在本地終端鍵入這些快捷鍵的時候,本地系統將執行相應的控制命令,而不把這些快捷鍵作為輸入。那麼對於Telnet來說,它是用什麼來實現控制命令的遠地傳送呢?
Telnet同樣使用NVT來定義如何從客戶機將控制功能傳送到伺服器。我們知道USASCII字符集包括95個可列印字元和33個控制碼。當用戶從本地鍵入普通字元時,NVT將按照其原始含義傳送;當用戶鍵入快捷鍵(組合鍵)時,NVT將把它轉化為特殊的ASCII字元在網路上傳送,並在其到達遠地機器後轉化為相應的控制命令。將正常ASCII字符集與控制命令區分主要有兩個原因:
1)這種區分意味著Telnet具有更大的靈活性:它可在客戶機與伺服器間傳送所有可能的ASCII字元以及所有控制功能;
2)這種區分使得客戶機可以無二義性的指定信令,而不會產生控制功能與普通字元的混亂。
Telnet是進行遠端登入的標準協議和主要方式它為使用者提供了在本地計算機上完成遠端主機工作的能力。透過使用Telnet,Internet使用者可以與全世界許多資訊中心圖書館及其它資訊資源聯絡。Telnet遠端登入的使用主要有兩種情況。第一種是使用者在遠端主祝上有自己的帳號(Account),即使用者擁有註冊的使用者名稱和口令;第二種是許多Internet主機為使用者提供了某種形式的公共Telnet資訊資源,這種資源對於每一個Telnet使用者都是開放的。Telnet是使用最為簡單的Internet工具之一。
telnet/?
命令可以縮寫。支援的命令為:
c-關閉關閉當前連線
d-顯示顯示操作引數
o-開啟主機名[埠]連線到一個主機名(預設埠23)
q-退出退出telnet
set-設定設定選項(要列表,請鍵入\"set?\")
sen-傳送將字串送到伺服器
st-狀態列印狀態資訊
u-解除設定解除設定選項(要列表,請鍵入\"unset?\")
?/h-幫助列印幫助資訊
一摘要
二遠端登入
三Telnet協議
四Win2000的Telnet服務
五在telnet中該做什麼
一摘要
Telnet的應用不僅方便了我們進行遠端登入,也給hacker們提供了又一種入侵手段和後門,但無論如何,在你盡情享受Telnet所帶給你的便捷的同時,你是否真正的瞭解Telnet呢?
二遠端登入
Telnet服務雖然也屬於客戶機/伺服器模型的服務,但它更大的意義在於實現了基於Telnet協議的遠端登入(遠端互動式計算),那麼就讓我們來認識一下遠端登入。
1遠端登陸的基本概念
先來看看什麼叫登入:分時系統允許多個使用者同時使用一臺計算機,為了保證系統的安全和記帳方便,系統要求每個使用者有單獨的帳號作為登入標識,系統還為每個使用者指定了一個口令。使用者在使用該系統之前要輸入標識和口令,這個過程被稱為\"登入\"。
遠端登陸是指使用者使用Telnet命令,使自己的計算機暫時成為遠端主機的一個模擬終端的過程。模擬終端等效於一個非智慧的機器,它只負責把使用者輸入的每個字元傳遞給主機,再將主機輸出的每個資訊回顯在螢幕上。
2遠端登陸的產生及發展
我們可以先構想一個提供遠端文字編輯的服務,這個服務的實現需要一個接受編輯檔案請求和資料的伺服器以及一個傳送此請求的客戶機。客戶機將建立一個從本地機到伺服器的TCP連線,當然這需要伺服器的應答,然後向伺服器傳送鍵入的資訊(檔案編輯資訊),並讀取從伺服器返回的輸出。以上便是一個標準而普通的客戶機/伺服器模型的服務。
似乎有了客戶機/伺服器模型的服務,一切遠端問題都可以解決了。然而實際並非你想象的那樣簡單,如果我們僅需要遠端編輯檔案,那麼剛才所構想的服務完全可以勝任,但假如我們的要求並不是這麼簡單,我們還想實現遠端使用者管理,遠端資料錄入,遠端系統維護,想實現一切可以在遠端主機上實現的操作,那麼我們將需要大量專用的伺服器程式併為每一個可計算服務都使用一個伺服器程序,隨之而來的問題是:遠端機器會很快對伺服器程序應接不暇,並淹沒在程序的海洋裡(我們在這裡排除最專業化的遠端機器)。
那麼有沒有辦法解決呢?當然有,我們可以用遠端登入來解決這一切。我們允許使用者在遠地機器上建立一個登入會話,然後透過執行命令來實現更一般的服務,就像在本地操作一樣。這樣,我們便可以訪問遠地系統上所有可用的命令,並且系統設計員不需提供多個專用地伺服器程式。
問題發展到這裡好像前途一片光明瞭,用遠端登入總應該解決問題了吧,但要實現遠端登陸並不簡單。不考慮網路設計的計算機系統期望使用者只從直接相連的鍵盤和顯示器上登入,在這種機器上增加遠端登陸功能需要修改機器的作業系統,這是極其艱鉅也是我們儘量避免的。因此我們應該集中力量構造遠端登陸伺服器軟體,雖然這樣也是比較困難的。為什麼說這樣做也比較困難呢?
舉個例子來說:一般,作業系統會為一些特殊按鍵分配特殊的含義,比如本地系統將\"Ctrl+C\"解釋為:\"終止當前執行的命令程序\"。但假設我們已經運行了遠端登陸伺服器軟體,\"Ctrl+C\"也有可能無法被傳送到遠地機器,如果客戶機真的將\"Ctrl+C\"傳到了遠地機器,那麼\"Ctrl+C\"這個命令有可能不能終止本地的程序,也就是說在這裡很可能會產生混亂。而且這僅僅是遇到的難題之一。
但儘管有技術上的困難,系統程式設計人員還是設法構造了能夠應用於大多數作業系統的遠端登陸伺服器軟體,並構造了充當客戶機的應用軟體。通常,客戶機軟體取消了除一個鍵以外的所有鍵的本地解釋,並將這些本地解釋相應的轉換成遠地解釋,這就使得客戶機軟體與遠地機器的互動,就如同坐在遠端主機面前一樣,從而避免了上述所提到的混亂。而那個唯一例外的鍵,可以使使用者回到本地環境。
將遠端登陸伺服器設計為應用級軟體,還有另一個要求,那就是需要作業系統提供對偽終端(pseudoterminal)的支援。我們用偽終端描述作業系統的入口點,它允許像Telnet伺服器一樣的程式向作業系統傳送字元,並且使得字元像是來自本地鍵盤一樣。只有使用這樣的作業系統,才能將遠端登陸伺服器設計為應用級軟體(比如Telnet伺服器軟體),否則,本地作業系統和遠地系統傳送將不能識別從對方傳送過來的資訊(因為它們僅能識別從本地鍵盤所鍵入的資訊),遠端登陸將宣告失敗。
將遠端登陸伺服器設計為應用級軟體雖然有其顯著的優點:比將程式碼嵌入作業系統更易修改和控制伺服器。但其也有效率不高的缺點(後面的內容將會給予解釋),好在使用者鍵入資訊的速率不高,這種設計還是可以接受的。
3遠端登入的工作過程
使用Telnet協議進行遠端登陸時需要滿足以下條件:在本的計算機上必須裝有包含Telnet協議的客戶程式;必須知道遠端主機的Ip地址或域名;必須知道登入標識與口令。
Telnet遠端登入服務分為以下4個過程:
1)本地與遠端主機建立連線。該過程實際上是建立一個TCP連線,使用者必須知道遠端主機的Ip地址或域名;
2)將本地終端上輸入的使用者名稱和口令及以後輸入的任何命令或字元以NVT(NetVirtualTerminal)格式傳送到遠端主機。該過程實際上是從本地主機向遠端主機發送一個IP資料報;
3)將遠端主機輸出的NVT格式的資料轉化為本地所接受的格式送回本地終端,包括輸入命令回顯和命令執行結果;
4)最後,本地終端對遠端主機進行撤消連線。該過程是撤銷一個TCP連線。
三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(NetVirtualTerminal)。它的應用過程如下:
對於傳送的資料:客戶機軟體把來自使用者終端的按鍵和命令序列轉換為NVT格式,併發送到伺服器,伺服器軟體將收到的資料和命令,從NVT格式轉換為遠地系統需要的格式;
對於返回的資料:遠地伺服器將資料從遠地機器的格式轉換為NVT格式,而本地客戶機將將接收到的NVT格式資料再轉換為本地的格式。
對於NVT格式的詳細定義,有興趣的朋友可以去查詢相關資料。
3傳送遠地命令
我們知道絕大多數作業系統都提供各種快捷鍵來實現相應的控制命令,當用戶在本地終端鍵入這些快捷鍵的時候,本地系統將執行相應的控制命令,而不把這些快捷鍵作為輸入。那麼對於Telnet來說,它是用什麼來實現控制命令的遠地傳送呢?
Telnet同樣使用NVT來定義如何從客戶機將控制功能傳送到伺服器。我們知道USASCII字符集包括95個可列印字元和33個控制碼。當用戶從本地鍵入普通字元時,NVT將按照其原始含義傳送;當用戶鍵入快捷鍵(組合鍵)時,NVT將把它轉化為特殊的ASCII字元在網路上傳送,並在其到達遠地機器後轉化為相應的控制命令。將正常ASCII字符集與控制命令區分主要有兩個原因:
1)這種區分意味著Telnet具有更大的靈活性:它可在客戶機與伺服器間傳送所有可能的ASCII字元以及所有控制功能;
2)這種區分使得客戶機可以無二義性的指定信令,而不會產生控制功能與普通字元的混亂。