TCP/IP 协议之 Telnet

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等

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章