Telnet協議可以工作在任何主機(例如,任何作業系統)或任何終端之間。RFC854[Postel和Reynolds1983a]定義了該協議的規範,其中還定義了一種通用字元終端叫做網路虛擬終端NVT(NetworkVirtualTerminal)。NVT是虛擬設備,串連的雙方,即客戶機和伺服器,都必須把它們的物理終端和NVT進行相互轉換。也就是說,不管客戶進程終端是什麼類型,作業系統必須把它轉換為NVT格式。同時,不管伺服器處理序的終端是什麼類型,作業系統必須能夠把NVT格式轉換為終端所能夠支援的格式。
NVT是帶有鍵盤和印表機的字元裝置。使用者擊鍵產生的資料被發送到伺服器處理序,伺服器處理序回送的響應則輸出到印表機上。預設情況下,使用者擊鍵產生的資料是發送到印表機上的,但是我們可以看到這個選項是可以改變的。
NVTASCII
術語NVTASCII代表7位元的ASCII字元集,網間網協議族都使用NVTASCII。每個7位元的字元都以8位元格式發送,最高位位元為0。行結束符以兩個字元CR(斷行符號)和緊接著的LF(換行)這樣的序列表示。以/r/n來表示。單獨的一個CR也是以兩個字元序列來表示,它們是CR和緊接著的NUL(位元組0),以/r/0表示。
Telnet命令
Telnet通訊的兩個方向都採用帶內信令方式。位元組0xff(十進位的255)叫做IAC(interpretascommand,意思是“作為命令來解釋”)。該位元組後面的一個位元組才是命令位元組。如果要發送資料255,就必鬚髮送兩個連續的位元組255(在前面一節中我們講到資料流是NVTASCII,它們都是7bit的格式,這就暗示著255這個資料位元組不能在Telnet上傳輸。其實在Telnet中有一個二進位選項,在RFC856[Postel和Reynolds1983b]中有定義,關於這點我們沒有討論,該選項允許資料以8bit進行傳輸)。圖26-8列出了所有的Telnet命令。由於這些命令中很多命令很少用到,所以對於一些重要的命令,如果在下面章節的例子或敘述中遇到,我們再做解釋。
| 名稱 |
代碼(十進位) |
描 |
述 |
| E O F |
2 3 6 |
檔案結束符 |
|
| S U S P |
2 3 7 |
掛起當前進程(作業控制) |
| A B O RT |
2 3 8 |
異常中止進程 |
| E O R |
2 3 9 |
記錄結束符 |
| S E |
2 4 0 |
子選項結束 |
| N O P |
2 4 1 |
無操作 |
| D M |
2 4 2 |
資料標記 |
| B R K |
2 4 3 |
中斷 |
| I P |
2 4 4 |
中斷進程 |
| A O |
2 4 5 |
異常中止輸出 |
| AY T |
2 4 6 |
對方是否還在運行? |
| E C |
2 4 7 |
逸出字元 |
| E L |
2 4 8 |
刪除行 |
| G A |
2 4 9 |
繼續進行 |
| S B |
2 5 0 |
子選項開始 |
| W I L L |
2 5 1 |
選項協商(圖2 6 - 9) |
| W O N T |
2 5 2 |
選項協商 |
| D O |
2 5 3 |
選項協商 |
| D O N T |
2 5 4 |
選項協商 |
| I A C |
2 5 5 |
資料位元組2 5 5 |
當前一個位元組是IAC(255)時的Telnet命令集