TCP/IP 與 Internet 網路:第十一章 網路終端機系統  上一頁           下一頁

 

翻轉工作室:粘添壽

 

11-4 Telnet 通訊協定

早期 Telnet 通訊協定是在 RFC 854 中規範,它是定義最低通用的同質性終端機協定,將客戶端和伺服端之間模擬成一虛擬終端機來互相通訊,稱之為『網路虛擬終端機』(Network Virtual Terminal, NVT。透過虛擬想像的 NVT 裝置,將客戶端和伺服端的真正終端機映射到 NVT 上,也就是說,雙方不論終端機型態為何,都將其映射到 NVT 上,便可以利用 NVT 格式來互相通訊,其中便可省略許多相容性的問題。

如果各種網路應用系統的 Client/Server 雙方都模擬成 NTV 來相互通訊,也就將客戶端所傳送的各種命令,都好像是從主控台的鍵盤輸入一樣,便可省略掉 Internet 網路上各種異質性電腦之間的相容性問題,這也是我們在 12-2-3 節中介紹 Internet 網路上應用系統的通訊方式。也就是說,Telnet 的通訊方式後來都使用在各種應用系統上。有關 NVT ASCII 通訊方式,我們在 12-2-3 節中已介紹過,不再重複說明,以下介紹 Telnet 的通訊命令。

11-4-1 Telnet 通訊命令

NVT ASCII 中都是以 8 位元來編碼欲傳輸的資料,但一般 ASCII 碼都為 7 位元,因此,我們將最高位元(第 8 位元)都設定為 0。但一些有關圖形文字碼(如,中文的 Big-5 碼)和影像檔,大多會用到 7 位元以後(第 8 位元為 1)的碼,因此,一般 Internet 應用系統的控制字元大多使用在 8 位元編碼中較後面的,也就是以較接近 2550xFF)的數碼。有關 Telnet 通訊命令的編碼,在 RFC 856 中有詳細規範,表 11-1 列出 Telnet 通訊命令。

11-1 Telnet 通訊命令彙集

名稱

10 進位)

16 進位)

功能描述

EOF

236

0xEC

檔案結束(End of File)。

SUSP

237

0xED

暫停目前處理動作(Suspend)。

ABORT

238

0xEE

中斷放棄(Abort)。

EOR

239

0xEF

紀錄結束(End of Record)。

SE

240

0xF0

子選項結束(End of Subnegotiation)。

NOP

241

0xF1

沒有動作(No Operation)。

DM

242

0xF2

資料標記(Data Mark)。

BRK

243

0xF3

中斷(Break)。

IP

244

0xF4

中斷處理程序(Interrupt Process)。

AO

245

0xF5

放棄輸出(Abort Output)。

AYT

246

0xF6

您還在嗎?(Are You There)。

EC

247

0xF7

刪除字元(Erase Character)。

EL

248

0xF8

刪除字行(Erase Line)。

GA

249

0xF9

前進(Go Ahead)。

SB

250

0xFA

子選項開始(Subnegotiation Begin)。

WILL

251

0xFB

期望(Will)子選項協議。

WONT

252

0xFC

不期望(Won’t)選項協議。

DO

253

0xFD

要求(Do)選項協議。

DONT

254

0xFE

不要求(Don’t)選項協議。

IAC

255

0xFF

直譯命令(Interpret as Command

        主機和終端機雙方所傳送的命令都以 IAC 0xFF)為前導,也就是說,在雙方傳輸當中,IAC 後面緊接著通訊命令。但如果傳輸資料中也有 IAC0xFF)的位元組,則再插入一個 IAC 來表示資料的意思,其情況就好像網路系統中的字元填塞(Character Stuffer)一樣。

11-4-2 Telnet 選項協議

就我們所瞭解,主機和客戶端之間必須經過協議來決定雙方的通訊方式,譬如,終端機型態、傳輸模式等等,因此雙方隨時都必經過協議來決定某一事項,這些協議的工作就利用選項命令來達成。Telnet 中有下列四種選項命令:

(1) WILL發送者期望自己選項被啟動(Enable),並詢問對方。

(2) DO接收者同意對方選項,並回應給發送者。

(3) WONT發送者想要停用(Disable)自己的選項,並詢問對方。

(4) DONT接收者不同意對方選項,並回應給發送者。

雙方利用上述四種協議命令,來協調雙方的選項,任何一方都可以拒絕或接受對方的選項,因此,可能發生下列六種情況:(表 11-2

11-2 選項協定運作

 

發送者

 

接收者

           

1.

WILL

 

 

DO

發送者期望自己選作用。

接收者同意對方選項。

2.

WILL

 

 

DONT

發送者期望自己選作用。

接收者不同意對方選項。

3.

DO

 

 

WILL

發送者希望對方啟動選項項目。

接收者回應選項項目。

4.

DO

 

 

WONT

發送者希望對方啟動選項項目。

接收者回應無法提供。

5.

WONT

 

 

DONT

發送者希望停用自己的選項。

接收者回應停用該選項(必需同意)。

6.

DON’T

 

 

WONT

發送者要求停用對方的選項。

接收者回應停用自己選項(必需同意)。

當雙方欲執行上述協議動作時,必需包含三個位元組:一者為 IAC 表示命令的開始;二者為協議命令(如,WILLDOWONTDONT);三者為欲協議之選項項目的 ID(如,終端機型態、視窗大小、流量控制等等)。每一個位元組表示一種命令,因此,協議命令格式如下:

< IAC, WILL(或 DOWONTDONT, 功能碼_ID >

目前 Internet 網路上針對 Telnet 的選項項目有超過 40 種以上,當然並不是所有的選項都會應用得到,這可以依據使用者的環境而定。這些選項都由各自的 RFC 指定 ID 號碼,並說明其功能,我們在表 11-3 中列出一些較常用的選項。

11-3 常用之選項項目

ID

  

       

RFC

0

Transmit Binary

設定為 8 位元傳輸模式。

856

1

Echo

Echo 回應輸入位元到螢幕上。

857

3

Supress GA

抑制前進訊號(Go-ahead)。

858

5

Status

詢問對方選項狀態。

859

6

Time Mark

通訊中插入時間標記。

860

24

Terminal Type

終端機型態。

1091

31

Window Size

視窗大小。

1073

32

Terminal Speed

終端機速度。

1079

33

Remote Flow Control

遠端流量控制。

1372

34

Linemode

行輸入模式。

1184

36

Environment Variable

環境變數設定。

1408

11-4-3 Telnet 子選項協議

並非所有選項都只要指定選項項目就可以完成,有些選項必需詳細的指定某些參數,譬如終端機選項,當雙方協議好某一種終端型態之後,也許還必須協議有關終端機的傳輸模式,如 ASCII 字元傳輸模式等等,因此,就有必要在某一選項之下,再協議一些子選項(Sub-negotiation)項目。基本上,每一選項的子選項項目都會在自己的 RFC 規範中制定,但它們的協議方式也都大同小異。一般都以 <IAC, SB, ..> 表示子選項的開始,又以 <. IAC, SE> 表示子選項的結束,其中 IAC0xFF)表示交談命令開始;SB0xFA)表示子選項開始;SE0xF0)為子選項結束。我們以 RFC 1091 中規範終端機選項,來介紹 Telnet 的終端機型態之協議運作方式,依照圖 11-6 中標示順序號碼說明如下:

11-6 Telnet 選項協議範例

(1) 首先由客戶端(網路終端機)要求協議終端機型態(<IAC, WILL, 24>),選項 24 表示終端機型態(如表 11-3)。

(2) 伺服端同意對方協議終端機型態,則傳送 <IAC, DO, 24> 給客戶端。

(3) 伺服端欲向客戶端詢問終端機型態,則送出 <IAC, SB, 24, 1, IAC, SE>,其中子選項 1 表示『請傳送您的終端機型態』(Send的意思。

(4) 客戶端收到伺服端的詢問訊號後,便傳送自己的終端機型號給伺服端,發送 <IAC, SB, 24, 0, 'V', 'T', '2', '2', '0', IAC, SE> 給伺服端,其中 0 表示『我的終端機型態是』(Is的意思,而 VT220 是以 ASCII 字元編碼,每一字元以 8 個位元表示。

(5) 此時,伺服端繼續協商希望以 8 位元型態傳輸資料,因此發送 <IAC, WILL, 0> 給客戶端,其中選項 0 表示用 8 位元傳輸模式(如表 11-3 所示)。

(6) 客戶端如同意該選項,則回應 <IAC, DO, 0>;否則回應 <IAC, DONT, 0>

 

 

<GOTOP>