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

14. 远程登录协议

  • 14. 远程登录协议
    • 14.1 基本概念
    • 14.2 Telnet 命令
    • 14.3 Telnet 选项及协商
    • 14.4 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. 启动命令格式

    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 文档功能描述
    传输二进制0856允许传输 8 位二进制数据(默认仅支持 7 位 ASCII)
    回应1857允许一方回显收到的数据(如远程主机回显用户输入)
    抑制 GA3858禁止在数据后发送 “Go Ahead” 信号,支持全双工通信(默认半双工需 GA 信号触发发送)
    状态5859请求远程主机返回当前选项的状态
    终端类型241191交换终端类型信息(如客户端使用的终端型号,确保远程应用正确显示)
    行模式341116支持本地编辑,整行数据一次性发送(减少网络交互)
  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(子选项结束)为边界,格式为:

    <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 命令分为启动命令(配置连接参数)和控制台命令(管理连接与发送控制信息)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/88828.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/88828.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink1.20.1集成Paimon遇到的问题

flinkcdc mysql 到paimon 1&#xff1a;Caused by: java.lang.ClassNotFoundException: org.apache.kafka.connect.data.Schema 可以参考这个文章 明确指出了flink-connector-mysql-cdc-3.4.0.jar存在这个包&#xff0c;但是flink-sql-connector-mysql-cdc-3.4.0.jar中没有这个…

C++高频知识点(十)

文章目录46. 智能指针是什么&#xff1f;怎么使用?1. std::unique_ptr2. std::shared_ptr3. std::weak_ptr47. 什么是野指针&#xff1f;1. 使用已释放的指针2. 未初始化的指针3. 指针超出作用域如何避免野指针1. 立即将指针置空2. 初始化指针3. 使用智能指针4. 避免返回局部变…

c#中Random类、DateTime类、String类

C# 中 Random 类分析Random 类用于生成伪随机数&#xff0c;位于 System 命名空间。它的核心机制是基于一个种子值 (seed)&#xff0c;通过算法生成看似随机的数列。相同种子会生成相同的随机数序列&#xff0c;这在需要可重现的随机场景中很有用。核心特点种子与随机性默认构造…

Vscode 下载远程服务器失败解决方法

今天在使用 vscode 连接远程主机时&#xff0c;突然再次遇到这个问题&#xff0c;按照以往的经验&#xff0c;直接按照这个博主的文章其实就能解决&#xff0c;但是不知道为什么&#xff0c;今天这个方案失效了&#xff0c;然后卸载安装服务器和本机的vscode什么的也都试过了&a…

【算法】贪心算法:柠檬水找零C++

文章目录前言题目解析算法原理代码示例策略证明前言 题目的链接&#xff0c;大家可以先试着去做一下再来看一下思路。 860. 柠檬水找零 - 力扣&#xff08;LeetCode&#xff09; 题目解析 首先我们要认真去拿到题目中的关键有用信息。 认真的去阅读题目给的示例&#xff0c;然…

27.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--币种服务(一)

从本篇文章开始&#xff0c;我们将用两篇内容详细介绍币种服务的实现。币种服务本身结构较为简单&#xff0c;核心功能包括内置币种的初始化、币种汇率的同步以及汇率的查询。在本篇中&#xff0c;我们将重点讲解如何实现内置币种的初始化功能&#xff0c;为后续的服务打下基础…

(2)从零开发 Chrome 插件:实现 API 登录与本地存储功能

从零开发 Chrome 插件&#xff1a;实现 API 登录与本地存储功能 Chrome 插件作为浏览器功能的重要扩展&#xff0c;能极大提升用户的工作效率。本文将以一个「登录功能插件」为例&#xff0c;带你从零构建一个可调用 API 验证身份、并将用户信息存储在本地的 Chrome 插件。 基…

Flink时间窗口详解

一、引言在大数据流处理的领域中&#xff0c;Flink 的时间窗口是一项极为关键的技术&#xff0c;想象一下&#xff0c;你要统计一个电商网站每小时的订单数量。由于订单数据是持续不断产生的&#xff0c;这就形成了一个无界数据流。如果没有时间窗口的概念&#xff0c;你就需要…

宽带接入,网线插入电脑的经验

现在一般家里安装移动宽带&#xff0c;都会提供四个千兆接口的光猫路由器&#xff0c;但是要注意了 首先网线的两端看起来一样&#xff0c;实际上并不是&#xff0c;如果发现连接不成功&#xff0c;那么就要换一头重新尝试&#xff0c; 一般像说什么自动DHCP啊&#xff0c;因为…

crmeb多门店对接拉卡拉支付小程序聚合收银台集成全流程详解

一、商户注册与配置​​注册支付平台账号​​&#xff1a;在拉卡拉开放平台注册商户账号&#xff08;私信联系注册&#xff09;​​创建应用​​&#xff1a;获取小程序应用ID(AppID)​​配置支付参数​​&#xff1a;商户号(MID)终端号(TID)API密钥支付回调地址二、配置拉卡拉…

C#将树图节点展示到NetronLight图表中

之前写过NetronLight开源框架 C#使用开源框架NetronLight绘制流程图-CSDN博客 我们这里将TreeView树图的节点内容展示到NetronLight图表中&#xff0c;按照树的层次【深度Level】展示 新建窗体应用程序ShowTreeNodeToDiagram&#xff0c;将默认的Form1重命名为FormShowNode&…

精密模具大深径比微孔尺寸检测方案 —— 激光频率梳 3D 轮廓检测

引言精密模具中大深径比微孔&#xff08;深径比&#xff1e;20:1&#xff0c;孔径&#xff1c;1mm&#xff09;的尺寸精度直接影响注塑件、电子元件等产品的成型质量。此类微孔具有孔径小、深度大、表面质量要求高&#xff08;Ra≤0.1μm&#xff09;等特点&#xff0c;传统检测…

defer学习指南

一、源头&#xff1a;早期管理资源&#xff08;如数据库连接、锁、文件句柄、网络连接&#xff09;和状态清理异常麻烦。 必须在每个可能的返回点&#xff08;return、err、panic&#xff09;手动重复清理代码&#xff0c;极易遗漏且打断主要逻辑思路&#xff01;像Java语言虽然…

NLP_知识图谱_大模型——个人学习记录

1. 自然语言处理、知识图谱、对话系统三大技术研究与应用 https://github.com/lihanghang/NLP-Knowledge-Graph 深度学习-自然语言处理(NLP)-知识图谱&#xff1a;知识图谱构建流程【本体构建、知识抽取&#xff08;实体抽取、 关系抽取、属性抽取&#xff09;、知识表示、知…

linux:进程详解(1)

目录 ​编辑 1.进程基本概念与基本操作 1.1 概念 1.2 描述进程-PCB 1.2.1PCB的基本概念 1.2.2 task_ struct 1.2.3 查看进程 2.进程状态 2.1 Linux内核源码展示 2.2 进程状态查看 ​编辑 2.3 Z(zombie)-僵⼫进程 2.4 僵尸进程的危害 2.5 孤儿进程 3.进程优先级 …

碳中和目标下的全球产业链重构:深度解析与未来路径

引言&#xff1a;气候临界点与产业链的系统性风险2023年&#xff0c;全球平均气温较工业化前上升1.2℃&#xff0c;南极冰盖年消融量达1500亿吨&#xff0c;极端天气事件导致的经济损失占全球GDP的2.3%。这一系列数据背后&#xff0c;暴露出传统产业链的致命缺陷——其设计逻辑…

FPGA实现SDI转LVDS视频发送,基于GTX+OSERDES2原语架构,提供2套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目本博已有的 SDI 编解码方案FPGA实现LVDS视频收发方案 3、工程详细设计方案工程设计原理框图SDI 输入设备Gv8601a 均衡器GTX 解串SMPTE SD/HD/3G SDI IP核BT1120转RGB奇…

新手向:使用Python构建高效的日志处理系统

本文将详细讲解如何使用Python开发一个专业的日志分析工具&#xff0c;能够自动化处理、分析和可视化各类日志文件&#xff0c;大幅提升运维效率。环境准备开发本工具需要以下环境配置&#xff1a;Python环境&#xff1a;建议Python 3.8或更高版本必要库&#xff1a;pandas&…

大模型-量化技术

简介 模型量化是一种重要的模型压缩技术。其核心目标是在可控精度损失下&#xff0c;将大模型中浮点型权重&#xff08;通常为 float32 等高精度格式&#xff09;近似转换为低精度离散值表示&#xff08;通常为 int8&#xff09;。 具体而言&#xff0c;该技术通过将模型的权重…

【C语言网络编程】HTTP 客户端请求(域名解析过程)

在做 C 语言网络编程或模拟 HTTP 客户端时&#xff0c;第一步就离不开“把域名解析为 IP 地址”这一步。很多人可能直接复制粘贴一段 gethostbyname 的代码&#xff0c;但未必真正理解它的原理。 本篇博客将围绕一个经典函数&#xff1a; char *host_to_ip(const char *hostna…