1、一種通用的C/S應用程式(TELNET 是 terminal network縮寫),讓使用者登陸到遠端電腦上運行那邊的程式,然後將結果回顯。
2、網路虛擬終端(NVT):為不同的系統統一了字元集。
(1)、字元集用兩種,一種當普通的資料,和ASCII嘛的0-127意義相同(就是以開頭一bit為0)。
一種是遠端控制字元,開頭一bit為1,比如IAC為0xff,SE為0xf0,SB為0xfa等等。
(2)、嵌入指令,在TELNET中,命令資料是混在普通資料當中的,分開的標記就是命令指令之前有一個特殊字元IAC(0xff),意思是“解釋為命令”。
(3)、選項與選項協商
a、選項,讓雙方提供相應的選項,比如0x01代表回顯,0x18代表終端類型。
b、協商,有如下的控制字元用於協商,WILL(0xfb),WONT(0xfc),DO(0xfd),DONT(0xfe)
選項協商過程如下:
WILL,WONT代表“將要提供,問對方是否同意”,對方只能用DO或DONT來回答(注意的是WONT的回答只能是DONT)
DO,DONT代表“要請求對方提供”,對方回答用WILL或WONT(對DONT的回答只能用WONT)
例子:
一端傳資料如下:(0xff 0xfd 0x01)IAC DO ECHO ,對方回答如下:(0xff 0xfb 0x01)IAC WILL ECHO
c、子選項的開始和結束:標記為SB(0xfa)和SE(0xf0)
3、TELNET的過程:本地的輸入經終端驅動到TELNET程式,TELNET程式換成NVT字元集,再經過封裝發送到遠程機,遠程機經過TCP協議棧解析該包後,經TELNET程式入手把NVT字元集翻譯成本地命令,然後偽裝終端輸入傳給為終端程式解析,把結果傳給要做的應用程式。
也就是說:命令和字元是由遠程機解釋的
但是有時要對本地程式進程式控制制,用逸出字元,比如中斷,如果按[^C]是傳給遠端,如果要本地的程式中斷,要用[^]]
4、操作方式,有三種:預設,字元方式,和行方式;
預設是使用者按鍵後,客戶器進行回顯處理,當按完一行後,進行發送,但是要等待GA控制符(半雙工狀態),基本不用
字元方式:使用者每按一鍵,字元經傳輸到伺服器處理,再回顯結果,浪費網路
行方式:和預設不同的是,不用等GA控制符(全雙工系統方式),現在一般用這個。注意行結束符用CR LF("/r/n")表示。
所以現在的TELNET包中一般有0x22選項(IAC DO 0x22),(0x22是改變到行方式的選項)
5、安全問題,不大安全。
6、類似協議:SSH(Secure SHell),Rlogin等