【TCP/IP】14. 远程登录协议

14. 远程登录协议

  • [14. 远程登录协议](#14. 远程登录协议)
    • [14.1 基本概念](#14.1 基本概念)
    • [14.2 Telnet 命令](#14.2 Telnet 命令)
    • [14.3 Telnet 选项及协商](#14.3 Telnet 选项及协商)
    • [14.4 Telnet 子选项协商](#14.4 Telnet 子选项协商)
    • [14.5 Telnet 操作模式](#14.5 Telnet 操作模式)
    • 本章要点

14. 远程登录协议

14.1 基本概念

Telnet 协议是 TCP/IP 协议族的重要成员,核心功能是实现本地计算机对远程主机的终端仿真,使本地用户能像直接操作远程主机一样访问其资源。

  1. 远程登录的定义
    本地用户通过 TCP/IP 协议进入远程主机的用户帐号,以远地用户的身份访问远程主机资源。使用场景包括:
    • 用户在远程主机拥有注册帐号(用户名 + 口令);
    • 远程主机提供公共 Telnet 信息资源(对所有用户开放)。
  2. 工作原理
    • 核心组件 :Telnet 客户端(本地)、Telnet 服务器(远程,运行Telnetd守护进程)、TCP 连接(端口 23)。
    • 流程:
      1. 远程主机启动Telnetd,监听端口 23,等待客户端请求;
      2. 本地用户通过 Telnet 客户端发起连接请求;
      3. 服务器接收请求后,创建伪终端(Pseudo子进程),模拟终端与客户端交互;
      4. 客户端与服务器通过选项协商确定工作模式,用户输入用户名和口令完成登录;
      5. 登录成功后,用户输入的每一个字符经 TCP 传输到服务器,服务器处理后将结果返回客户端并显示。
  3. Telnet 的用途
    • 缩短空间距离:本地用户可远程访问异地主机资源,无需物理在场;
    • 兼容性强:支持异种计算机和操作系统(如 Windows 与 UNIX)之间的互操作;
    • 访问其他 Internet 服务:通过 Telnet 可间接使用远程主机提供的其他服务(如 FTP、邮件)。
  4. 网络虚拟终端(NVT)
    • 作用:解决不同计算机系统(异质性)对键盘输入和显示解释的差异,提供统一的标准接口。
    • 字符集:
      • 采用 8bit 字节传输,最高位为 0 的字节表示普通数据(7 位 ASCII 码);
      • 最高位为 1 的字节表示 NVT 命令(如回车、退格等控制字符)。
    • 转义机制 :使用IAC(转义字符,字节值 255)标识控制命令的开始,后续字节为具体命令(如IAC EC表示删除前一个字符)。
    • 连接特性:控制信息与数据共享同一 TCP 连接,服务器固定端口 23,客户端使用动态端口。

14.2 Telnet 命令

Telnet 命令用于启动客户端程序并配置连接参数,分为启动命令和客户端控制台命令两类。

  1. 启动命令格式

    bash 复制代码
    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)。
  2. 客户端控制台命令

    连接建立后,通过转义字符进入控制台模式,常用命令包括:

    • open host [port]:连接到指定主机(若已连接则先关闭当前连接);
    • close:关闭当前连接;
    • quit:退出 Telnet 客户端;
    • send:向远程主机发送控制命令(如send ayt询问对方是否在线,send brk发送中断信号);
    • status:显示当前连接状态;
    • help:查看命令帮助。

14.3 Telnet 选项及协商

选项协商是 Telnet 的核心机制,用于双方协商工作模式(如数据传输格式、终端类型等),确保通信兼容。

  1. 核心选项

    Telnet 定义了多个标准选项,用于配置 TCP 连接的行为,常见选项如下:

    选项名称 代码 RFC 文档 功能描述
    传输二进制 0 856 允许传输 8 位二进制数据(默认仅支持 7 位 ASCII)
    回应 1 857 允许一方回显收到的数据(如远程主机回显用户输入)
    抑制 GA 3 858 禁止在数据后发送 "Go Ahead" 信号,支持全双工通信(默认半双工需 GA 信号触发发送)
    状态 5 859 请求远程主机返回当前选项的状态
    终端类型 24 1191 交换终端类型信息(如客户端使用的终端型号,确保远程应用正确显示)
    行模式 34 1116 支持本地编辑,整行数据一次性发送(减少网络交互)
  2. 协商命令与过程

    • 协商命令:双方通过 4 个命令码进行选项协商,均以IAC开头:
      • WILL X:请求启用本地的 X 选项("我想使用 X 选项,你同意吗?");
      • DO X:同意对方启用 X 选项("你可以使用 X 选项");
      • WONT X:拒绝启用本地的 X 选项("我不会使用 X 选项");
      • DONT X:拒绝对方启用 X 选项("你不可以使用 X 选项")。
    • 协商过程:选项协商是对称的,任何一方均可主动发起。例如:
      1. 客户端发送IAC WILL 24(请求启用终端类型选项);
      2. 服务器回应IAC DO 24(同意对方启用),协商成功;若服务器拒绝,则回应IAC DONT 24

14.4 Telnet 子选项协商

部分选项(如终端类型)需要更详细的参数配置,需通过子选项协商机制交换具体信息。

  1. 子选项协商命令格式

    IAC SB(子选项开始)和IAC SE(子选项结束)为边界,格式为:

    plaintext 复制代码
    <IAC, SB, 选项码, 参数1, 参数2, ..., IAC, SE>
    • SB:子选项协商开始标志;
    • 选项码:对应的主选项代码(如 24 表示终端类型);
    • 参数:子选项的具体信息(如终端类型字符串)。
  2. 终端类型子选项协商示例

    • 客户端请求启用终端类型选项: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 种操作模式,用于适应不同的交互场景(如输入方式、数据传输粒度)。

  1. 半双工模式
    • 特点:客户端需等待服务器发送 "Go Ahead(GA)" 信号后才能输入数据;用户输入在本地回显,且只能整行发送。
    • 适用场景:早期低速网络,避免数据冲突。
  2. 一次一个字符方式
    • 特点:用户键入的每个字符立即单独发送到服务器;服务器通常回显字符(除非应用程序禁用回显)。
    • 依赖选项:需同时启用 "回应(ECHO)" 和 "抑制 GA" 选项,支持全双工实时交互。
  3. 一次一行方式(准行方式)
    • 特点:用户在本地编辑整行数据,完成后一次性发送;回显由本地或远程控制。
    • 触发条件:当 "ECHO" 或 "抑制 GA" 选项无效时自动启用。
  4. 行方式(RFC 1184 定义)
    • 特点:全双工模式,支持本地编辑(如修改、删除字符),整行完成后发送,优化网络传输效率。
    • 优势:克服准行方式的缺陷,是现代 Telnet 实现的主流模式。

本章要点

  • Telnet 通过 TCP 连接实现本地计算机对远程主机的终端仿真,核心是网络虚拟终端(NVT),解决异种系统的互操作性问题。
  • 远程登录流程包括连接建立、选项协商、身份验证、数据交互和连接释放,依赖Telnetd服务器进程和客户端程序协作。
  • 选项协商机制(WILL/DO/WONT/DONT)用于配置工作模式,子选项协商进一步交换详细参数(如终端类型)。
  • 4 种操作模式(半双工、一次一个字符、一次一行、行方式)适应不同交互需求,行方式为现代实现的首选。
  • Telnet 命令分为启动命令(配置连接参数)和控制台命令(管理连接与发送控制信息)。
相关推荐
DoraBigHead3 分钟前
传输层:TCP的真情告白,UDP的放飞自我
网络协议
liulilittle3 小时前
基于UDP/IP网络游戏加速高级拥塞控制算法(示意:一)
开发语言·c++·网络协议·tcp/ip·udp
FileLink跨网文件交换3 小时前
网络安全|网络准入控制系统有哪些?网络准入控制系统十大解决方案详解
网络·安全
quant_19863 小时前
如何通过 WebSocket 接口订阅实时外汇行情数据(PHP 示例)
开发语言·网络·后端·websocket·网络协议·金融·php
cui_win3 小时前
【网络】Linux 内核优化实战 - net.netfilter.nf_conntrack_max
linux·网络·.net
创小匠5 小时前
创客匠人:AI 如何重塑创始人 IP 打造与知识变现的逻辑
人工智能·网络协议·tcp/ip
互联网搬砖老肖6 小时前
运维打铁: 软件定义网络(SDN)的实践应用
运维·网络
Yama1177 小时前
服务器端安全检测与防御技术概述
服务器·网络·安全
失因7 小时前
PPP 链路及 MP 捆绑与 CHAP 验证实验
运维·网络·网络安全·智能路由器
H3C-Navigator7 小时前
【AI高性能网络解析】第一期:面向GPU算力纵向扩展的Scale-up网络技术研究
网络·人工智能·gpu算力·ai-native