TELNET是基于TCP协议的应用层协议,服务器默认监听23端口。
客户端与服务器建立连接后有一个协商过程,这个过程是可选的。
协商完成后,就是数据透传了,服务器发什么客户端就显示什么内容。
有两个细节通过协商完成:
客户端回显:客户端发送数据时自己在屏幕上把发送的内容显示出来;
服务器回显:客户端发送数据时屏幕不显示,由服务器把数据发回来,客户端再显示内容。
开启行模式:客户端在收到回车键后再发送整行内容;
关闭行模式:客户端每按一个键就发送一次按键内容;
之所以提到这2个细节是因为Windows自带的telnet客户端和SecureCRT的默认行为不一样。
Windows Telnet:连接时没有主动发起协商,默认客户端回显,回车按键发送CRLF。
SecureCRT:连接时主动发起协商,默认客户端回显,默认开启行模式,回车按键发送CR\0。
SecureCRT回车内容可通过参数配置:
Options/Session Options/Terminal/Emulation/Modes/New line mode默认不勾选,勾选New line mode后回车发送CRLF
Options/Session Options/Telnet/Server requires bare CR默认不勾选,勾选后CR后面不带0x00
行为一致协商:
只要服务器在连接时发送: FF FB 01,就可以使两个客户端的行为变成一致。
FF FB 01表示服务器要开启回显,SecureCRT关闭回显的同时也会关闭行模式。
这样每一次按键,服务器都能收到1次数据,客户端都不会回显。
扩展内容:
命令字:
0xFF:IAC 选项协商字节
0xF0:SE 子选项结束
0xFA:SB 子选项开始
0xFB:WILL 发送方想激活选项,接收方回复DO(同意)/DONT(不同意)
0xFC:WONT 发送方想禁止选项,接收方必须同意,回复DONT
0xFD:DO 发送方想让对方激活选项,接收方回复WILL(同意)/WONT(不同意)
0xFE:DONT 发送方想让对方禁止选项,接收方必须同意,回复WONT
选项字:
0x01: 回显
0x03: 抑制继续进行
0x18: 终端类型
0x1F: 窗口大小
0x20: 终端速率
0x21: 远程流量控制
0x22: 行模式
0x24: 环境变量
协商举例:
服务器发送:FF FB 01(我要开启回显)
客户端回答:FF FD 01 (同意)