14. 远程登录协议
- 14. 远程登录协议
- 14.1 基本概念
- 14.2 Telnet 命令
- 14.3 Telnet 选项及协商
- 14.4 Telnet 子选项协商
- 14.5 Telnet 操作模式
- 本章要点
14. 远程登录协议
14.1 基本概念
Telnet 协议是 TCP/IP 协议族的重要成员,核心功能是实现本地计算机对远程主机的终端仿真,使本地用户能像直接操作远程主机一样访问其资源。
- 远程登录的定义
本地用户通过 TCP/IP 协议进入远程主机的用户帐号,以远地用户的身份访问远程主机资源。使用场景包括:- 用户在远程主机拥有注册帐号(用户名 + 口令);
- 远程主机提供公共 Telnet 信息资源(对所有用户开放)。
- 工作原理
- 核心组件:Telnet 客户端(本地)、Telnet 服务器(远程,运行
Telnetd
守护进程)、TCP 连接(端口 23)。 - 流程:
- 远程主机启动
Telnetd
,监听端口 23,等待客户端请求; - 本地用户通过 Telnet 客户端发起连接请求;
- 服务器接收请求后,创建伪终端(
Pseudo
子进程),模拟终端与客户端交互; - 客户端与服务器通过选项协商确定工作模式,用户输入用户名和口令完成登录;
- 登录成功后,用户输入的每一个字符经 TCP 传输到服务器,服务器处理后将结果返回客户端并显示。
- 远程主机启动
- 核心组件:Telnet 客户端(本地)、Telnet 服务器(远程,运行
- Telnet 的用途
- 缩短空间距离:本地用户可远程访问异地主机资源,无需物理在场;
- 兼容性强:支持异种计算机和操作系统(如 Windows 与 UNIX)之间的互操作;
- 访问其他 Internet 服务:通过 Telnet 可间接使用远程主机提供的其他服务(如 FTP、邮件)。
- 网络虚拟终端(NVT)
- 作用:解决不同计算机系统(异质性)对键盘输入和显示解释的差异,提供统一的标准接口。
- 字符集:
- 采用 8bit 字节传输,最高位为 0 的字节表示普通数据(7 位 ASCII 码);
- 最高位为 1 的字节表示 NVT 命令(如回车、退格等控制字符)。
- 转义机制:使用
IAC
(转义字符,字节值 255)标识控制命令的开始,后续字节为具体命令(如IAC EC
表示删除前一个字符)。 - 连接特性:控制信息与数据共享同一 TCP 连接,服务器固定端口 23,客户端使用动态端口。
14.2 Telnet 命令
Telnet 命令用于启动客户端程序并配置连接参数,分为启动命令和客户端控制台命令两类。
-
启动命令格式
telnet [-d] [-a] [-n tracefile] [-e escapechar] [-l user] host [port]
- 选项说明:
-d
:开启调试模式;-a
:尝试自动登录(通过USER
命令传输用户名);-n tracefile
:将跟踪信息记录到指定文件;-e escapechar
:指定转义字符(默认通常为Ctrl+]
);-l user
:指定登录远程主机的用户名;host
:远程主机的域名或 IP 地址;port
:远程主机的端口号(默认 23)。
- 选项说明:
-
客户端控制台命令
连接建立后,通过转义字符进入控制台模式,常用命令包括:open host [port]
:连接到指定主机(若已连接则先关闭当前连接);close
:关闭当前连接;quit
:退出 Telnet 客户端;send
:向远程主机发送控制命令(如send ayt
询问对方是否在线,send brk
发送中断信号);status
:显示当前连接状态;help
:查看命令帮助。
14.3 Telnet 选项及协商
选项协商是 Telnet 的核心机制,用于双方协商工作模式(如数据传输格式、终端类型等),确保通信兼容。
-
核心选项
Telnet 定义了多个标准选项,用于配置 TCP 连接的行为,常见选项如下:选项名称 代码 RFC 文档 功能描述 传输二进制 0 856 允许传输 8 位二进制数据(默认仅支持 7 位 ASCII) 回应 1 857 允许一方回显收到的数据(如远程主机回显用户输入) 抑制 GA 3 858 禁止在数据后发送 “Go Ahead” 信号,支持全双工通信(默认半双工需 GA 信号触发发送) 状态 5 859 请求远程主机返回当前选项的状态 终端类型 24 1191 交换终端类型信息(如客户端使用的终端型号,确保远程应用正确显示) 行模式 34 1116 支持本地编辑,整行数据一次性发送(减少网络交互) -
协商命令与过程
- 协商命令:双方通过 4 个命令码进行选项协商,均以
IAC
开头:WILL X
:请求启用本地的 X 选项(“我想使用 X 选项,你同意吗?”);DO X
:同意对方启用 X 选项(“你可以使用 X 选项”);WONT X
:拒绝启用本地的 X 选项(“我不会使用 X 选项”);DONT X
:拒绝对方启用 X 选项(“你不可以使用 X 选项”)。
- 协商过程:选项协商是对称的,任何一方均可主动发起。例如:
- 客户端发送
IAC WILL 24
(请求启用终端类型选项); - 服务器回应
IAC DO 24
(同意对方启用),协商成功;若服务器拒绝,则回应IAC DONT 24
。
- 客户端发送
- 协商命令:双方通过 4 个命令码进行选项协商,均以
14.4 Telnet 子选项协商
部分选项(如终端类型)需要更详细的参数配置,需通过子选项协商机制交换具体信息。
-
子选项协商命令格式
以IAC SB
(子选项开始)和IAC SE
(子选项结束)为边界,格式为:<IAC, SB, 选项码, 参数1, 参数2, ..., IAC, SE>
SB
:子选项协商开始标志;选项码
:对应的主选项代码(如 24 表示终端类型);参数
:子选项的具体信息(如终端类型字符串)。
-
终端类型子选项协商示例
- 客户端请求启用终端类型选项:
IAC WILL 24
; - 服务器同意:
IAC DO 24
; - 服务器询问客户端终端类型:
IAC SB 24 1 IAC SE
(参数 1 表示 “请求发送终端类型”); - 客户端回应终端类型(如 “mypc”):
IAC SB 24 0 'M' 'Y' 'P' 'C' IAC SE
(参数 0 表示 “回应终端类型”,字符串为大写); - 服务器接收后自动转换为小写(如 “mypc”),用于适配远程应用(如屏幕编辑程序)。
- 客户端请求启用终端类型选项:
14.5 Telnet 操作模式
Telnet 支持 4 种操作模式,用于适应不同的交互场景(如输入方式、数据传输粒度)。
- 半双工模式
- 特点:客户端需等待服务器发送 “Go Ahead(GA)” 信号后才能输入数据;用户输入在本地回显,且只能整行发送。
- 适用场景:早期低速网络,避免数据冲突。
- 一次一个字符方式
- 特点:用户键入的每个字符立即单独发送到服务器;服务器通常回显字符(除非应用程序禁用回显)。
- 依赖选项:需同时启用 “回应(ECHO)” 和 “抑制 GA” 选项,支持全双工实时交互。
- 一次一行方式(准行方式)
- 特点:用户在本地编辑整行数据,完成后一次性发送;回显由本地或远程控制。
- 触发条件:当 “ECHO” 或 “抑制 GA” 选项无效时自动启用。
- 行方式(RFC 1184 定义)
- 特点:全双工模式,支持本地编辑(如修改、删除字符),整行完成后发送,优化网络传输效率。
- 优势:克服准行方式的缺陷,是现代 Telnet 实现的主流模式。
本章要点
- Telnet 通过 TCP 连接实现本地计算机对远程主机的终端仿真,核心是网络虚拟终端(NVT),解决异种系统的互操作性问题。
- 远程登录流程包括连接建立、选项协商、身份验证、数据交互和连接释放,依赖
Telnetd
服务器进程和客户端程序协作。 - 选项协商机制(
WILL
/DO
/WONT
/DONT
)用于配置工作模式,子选项协商进一步交换详细参数(如终端类型)。 - 4 种操作模式(半双工、一次一个字符、一次一行、行方式)适应不同交互需求,行方式为现代实现的首选。
- Telnet 命令分为启动命令(配置连接参数)和控制台命令(管理连接与发送控制信息)。