TELNET协议笔记

TELNET是基于TCP协议的应用层协议,服务器默认监听23端口。 客户端与服务器建立连接后有一个协商过程,这个过程是可选的。 协商完成后,就是数据透传了,服务器发什么客户端就显示什么内容。

有两个细节通过协商完成:

1.回显

客户端回显:客户端发送数据时自己在屏幕上把发送的内容显示出来; 服务器回显:客户端发送数据时屏幕不显示,由服务器把数据发回来,客户端再显示内容。

2.行模式

开启行模式:客户端在收到回车键后再发送整行内容; 关闭行模式:客户端每按一个键就发送一次按键内容;


之所以提到这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 (同意)