從六個方面講解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)這種區分使得客戶機可以無二義性的指定信令,而不會產生控制功能與普通字符的混亂。#p#
4 數據流向
上面我們提到過將Telnet設計為應用級軟件有一個缺點,那就是:效率不高。這是為什么呢?下面給出Telnet中的數據流向:
數據信息被用戶從本地鍵盤鍵入并通過操作系統傳到客戶機程序,客戶機程序將其處理后返回操作系統,并由操作系統經過網絡傳送到遠地機器,遠地操作系統將所接收數據傳給服務器程序,并經服務器程序再次處理后返回到操作系統上的偽終端入口點,最后,遠地操作系統將數據傳送到用戶正在運行的應用程序,這便是一次完整的輸入過程;輸出將按照同一通路從服務器傳送到客戶機。
因為每一次的輸入和輸出,計算機將切換進程環境好幾次,這個開銷是很昂貴的。還好用戶的鍵入速率并不算高,這個缺點我們仍然能夠接受。
5 強制命令
大家應該考慮到這樣一種情況:假設本地用戶運行了遠地機器的一個無休止循環的錯誤命令或程序,且此命令或程序已經停止讀取輸入,那么操作系統的緩沖區可能因此而被占滿,如果這樣,遠地服務器也無法再將數據寫入偽終端,并且最終導致停止從TCP連接讀取數據,TCP連接的緩沖區最終也會被占滿,從而導致阻止數據流流入此連接。如果以上事情真的發生了,那么本地用戶將失去對遠地機器的控制。
為了解決此問題,Telnet協議必須使用外帶信令以便強制服務器讀取一個控制命令。我們知道TCP用緊急數據機制實現外帶數據信令,那么Telnet只要再附加一個被稱為數據標記(date mark)的保留八位組,并通過讓TCP發送已設置緊急數據比特的報文段通知服務器便可以了,攜帶緊急數據的報文段將繞過流量控制直接到達服務器。作為對緊急信令的相應,服務器將讀取并拋棄所有數據,直到找到了一個數據標記。服務器在遇到了數據標記后將返回正常的處理過程。
6 選項協商
由于Telnet兩端的機器和操作系統的異構性,使得Telnet服務不可能也不應該嚴格規定每一個telnet連接的詳細配置,否則將大大影響Telnet的適應異構性。因此,Telnet采用選項協商機制來解決這一問題。
Telnet選項的范圍很廣:一些選項擴充了大方向的功能,而一些選項制涉及一些微小細節。例如:有一個選項可以控制Telnet是在半雙工還是全雙工模式下工作(大方向);還有一個選項允許遠地機器上的服務器決定用戶終端類型(小細節)。
Telnet選項協商方式也很有意思,它對于每個選項的處理都是對稱的,即任何一端都可以發出協商申請;任何一端都可以接受或拒絕這個申請。另外,如果一端試圖協商另一端不了解的選項,接受請求的一端可簡單的拒絕協商。因此,有可能將更新,更復雜的Telnet客戶機服務器版本與較老的,不太復雜的版本進行交互操作。如果客戶機和服務器都理解新的選項,可能會對交互有所改善。否則,它們將一起轉到效率較低但可工作的方式下運行。所有的這些設計,都是為了增強適應異構性,可見Telnet的適應異構性對其的應用和發展是多么重要。