TCP/IP 與 Internet 網路:第十一章 網路終端機系統 上一頁 下一頁
11-5 Telnet 操作模式
一般來講,Telnet 客戶端和伺服端之間有下列三種操作模式:
(A) 半雙工模式(Half-duplex Mode)
NVT 的預設模式是半雙工方式,此模式現在已非常少使用。半雙工模式表示同一時間內只有單一方面傳送資料,客戶端(或終端機)必需收到伺服端傳來一個 Go-ahead(GA)命令之後,才可以由鍵盤輸入命令,也只有一行完整命令才會由伺服端收到回應。目前許多網路終端機型態都希望提供全雙工的傳輸模式,因此提供 Echo 選項(RFC 857)和 Suppress Go-ahead 選項(RFC 858)功能,來提供單一字元模式與行模式。
(B) 單一字元模式(Single Character Mode)
單一字元模式是表示一次一個字元方式,當客戶端鍵入字元時,便將所鍵入的字元一個一個傳送給伺服端,伺服端再回應大多數的字元。也就是說,使用者在網路終端機上的鍵盤輸入時,每鍵入一個字元便傳送給伺服端,當伺服端收到許多字元,也了解使用的命令要求後,再回應處理結果給使用者。早期 Unix 系統上的 Telnet 協定大多採用這個模式。通訊雙方的 NVT 欲進入這個模式,必須抑制前進功能,一般都由客戶端送出 <IAC, DO, Suppress Go-ahead> 給伺服端,再由伺服端回應同意,接著再由伺服端送出 <IAC, WILL, Echo> 來協商採用字元模式。也就是說,雙方 NVT 必需協商同意 Suppress Go-Ahead 和 Echo,才真正進入一次一個字元模式。
(C) 行模式(Line Mode)
行模式表示使用者由鍵盤輸入一行後,再傳送給伺服端處理,一般稱此模式為 Kludge 模式。雙方 NVT 除了必須抑制 Go-Ahead 功能外,也必須協商行模式選項,一般都由客戶端送出子選項協商 <IAC, SB, WILL, 34, IAC, SE> 訊號,再由伺服端同意該子選項。當客戶端輸入一行命令後,希望該命令停止執行,一般都可以用 Ctrl+C 鍵盤命令來中斷它,該命令轉換成 Telnet 命令為 <IAC, IP>,並傳送給伺服端。其中 IP(Interrupt Process)為中斷處理,這就如同在主控台上輸入 Ctrl+C 的功能一樣。
Telnet 連線除了上三種傳輸模式外,還有許多有關傳輸功能必須經過雙方協議而成,以下列出兩種較重要的連線功能:
(A) 同步訊號(Data Mark)
Telnet 以資料標記(DM, 0xF2)命令,來定義它的同步訊號,主要的功能是希望在通訊連線中插入緊急命令時,另一通訊端必需即時處理。當 Telnet 通訊中被插入資料標記時,此時 TCP 連線就將它當成緊急資料處理(Urgent),並會在封包標頭上指引緊急資料的位置(Urgent Point)。
當一端接收到另一端進入緊急模式的通知(DM)時,它就開始讀取資料串列,而捨棄 Telnet 命令以外的所有資料,一直到緊急資料結束(也是以 DM 標示結束),並處理裡面所包含的內容。使用 TCP 緊急模式是為了允許 Telnet 命令能夠跨越連線來傳送。
(B) 客戶端跳脫(Client Escapes)
當客戶端以 Telnet 連線到伺服端之後,也隨時可以跳脫(Escapes)連線,而回到原作業系統底下,但此時該連線並未中斷。一般終端機客戶跳脫都以 Ctrl + ](也都以 ^] 表示)。當連線當中,鍵入客戶跳脫時會回到 telnet> 模式下,便可直接下達 Telnet 的直譯命令。