第26章 Telnet和Rlogin
所属:TCP/IP详解 卷1:协议 来源:TCP/IP详解 卷1:协议
本章介绍Telnet和Rlogin协议,包括Telnet协议、选项协商、Rlogin协议和远程登录等。
26.1 引言
远程登录
远程登录(Remote Login):
- 通过网络登录到另一台计算机
- 就像坐在那台计算机前一样
- 可以执行命令
- 可以操作
远程登录就是远程操作计算机。
为什么需要远程登录
为什么需要远程登录:
- 服务器在机房
- 不能每次都去机房
- 远程就能操作
- 方便管理
- 多人共用一台机器
远程登录方便管理远程机器。
两种远程登录协议
两种远程登录协议:
-
Telnet
- 标准的远程登录协议
- 通用
- 跨平台
- 选项协商
-
Rlogin
- BSD Unix的
- 简单
- 专为Unix设计
- 信任机制
Telnet和Rlogin两种。
本章讨论的内容
本章讨论的内容:
- Telnet协议
- Telnet选项协商
- Rlogin协议
- 远程登录的工作原理
- 两者的比较
本章介绍远程登录协议。
26.2 Telnet协议
什么是Telnet
Telnet:
- 远程登录协议
- 应用层
- 用TCP
- 端口23
- 通用的远程登录
- 跨平台
Telnet是标准的远程登录协议。
Telnet的特点
Telnet的特点:
-
通用
- 不针对特定系统
- 各种系统都能用
- 跨平台
-
网络虚拟终端(NVT)
- 定义了一个虚拟的终端
- 双方都按这个来
- 兼容各种终端
-
选项协商
- 可以协商各种选项
- 比如终端类型、窗口大小
- 灵活
-
对称
- 客户端和服务器是对称的
- 都可以发起协商
Telnet通用、灵活。
网络虚拟终端
网络虚拟终端(NVT, Network Virtual Terminal):
- Telnet定义的虚拟终端
- 双方都用NVT来通信
- 然后各自转换成本地的
- 这样就兼容各种终端
NVT的特点:
- 字符集:ASCII
- 行结束:CR+LF
- 控制字符:有定义
- 半双工,默认一次一行
NVT是虚拟的标准终端。
Telnet的工作过程
Telnet的工作过程:
-
建立TCP连接
- 客户端连服务器23端口
- TCP连接建立
-
选项协商
- 双方协商各种选项
- 终端类型、窗口大小等
- 互相说我能支持什么
-
登录
- 服务器发登录提示
- 用户输入用户名密码
- 登录
-
交互
- 用户输入,发过去
- 服务器输出,发回来
- 就像本地终端一样
-
退出
- 用户退出
- 连接关闭
建立连接→协商→登录→交互→退出。
26.3 Telnet选项协商
什么是选项协商
选项协商(Option Negotiation):
- Telnet可以协商各种选项
- 双方商量支持哪些功能
- 让功能更丰富
- 不只是最基本的NVT
选项协商让Telnet更灵活。
协商的命令
协商的命令:
- 都以IAC(Interpret As Command)开头
- IAC是字节255
四种协商命令:
| 命令 | 代码 | 说明 |
|---|---|---|
| WILL | 251 | 我想启用这个选项 |
| WONT | 252 | 我不想启用这个选项 |
| DO | 253 | 请你启用这个选项 |
| DONT | 254 | 请你不要启用这个选项 |
四种协商命令。
协商的规则
协商的规则:
-
一方说WILL
- 我想启用
- 对方可以回DO(同意)或DONT(不同意)
-
一方说DO
- 请你启用
- 对方可以回WILL(同意)或WONT(不同意)
-
一方说WONT
- 我不想启用
- 对方必须回DONT
-
一方说DONT
- 请你不要启用
- 对方必须回WONT
协商有规则。
常见选项
常见的Telnet选项:
| 选项 | 代码 | 说明 |
|---|---|---|
| Echo | 1 | 回显 |
| Suppress Go Ahead | 3 | 抑制继续(全双工) |
| Terminal Type | 24 | 终端类型 |
| Window Size | 31 | 窗口大小 |
| Terminal Speed | 32 | 终端速率 |
| Remote Flow Control | 33 | 远程流控 |
| Linemode | 34 | 行模式 |
很多选项。
子协商
子协商(Subnegotiation):
- 有些选项需要更多信息
- 不是光说启用就行
- 需要交换具体数据
- 用子协商
例子:终端类型
- 协商启用终端类型选项
- 然后子协商
- 服务器问:你是什么终端类型?
- 客户端答:我是xterm
- 这样服务器就知道了
子协商交换具体数据。
26.4 Rlogin协议
什么是Rlogin
Rlogin:
- Remote Login
- BSD Unix的远程登录协议
- 专为Unix设计
- 比Telnet简单
- 端口513
Rlogin是Unix的远程登录。
Rlogin的特点
Rlogin的特点:
-
专为Unix设计
- 只针对Unix
- 不用考虑其他系统
- 简单
-
信任机制
- 基于主机信任
- 可信主机可以免密登录
- 方便但不安全
-
简单
- 没有选项协商
- 连接建立时就把信息都发过去
- 比Telnet简单
-
端口
- 客户端用特权端口(<1024)
- 服务器用513
- 作为一种弱验证
Rlogin简单,专为Unix。
Rlogin的工作过程
Rlogin的工作过程:
-
建立TCP连接
- 客户端用特权端口
- 连服务器513端口
-
客户端发信息
- 一个字节的0
- 客户端用户名
- 服务器端用户名
- 终端类型和速率
- 窗口大小
- 等等
- 都在开头发过去
-
服务器验证
- 检查主机是否可信
- 检查用户
- 可信的话直接登录
- 不可信的话要密码
-
交互
- 正常交互
- 和Telnet类似
连接建立时就把信息都发过去。
Rlogin的信任机制
Rlogin的信任机制:
- 基于主机信任
- 服务器配置可信主机
- 可信主机上的同名用户
- 可以直接登录,不用密码
配置文件:
- /etc/hosts.equiv
- ~/.rhosts
问题:
- 不安全
- 容易被伪造
- IP可以伪造
- 现在很少用了
信任机制方便但不安全。
26.5 Telnet vs Rlogin
比较
Telnet vs Rlogin:
| 对比项 | Telnet | Rlogin |
|---|---|---|
| 设计目标 | 通用,跨平台 | Unix专用 |
| 复杂度 | 复杂,选项协商 | 简单 |
| 灵活性 | 高,很多选项 | 低,固定 |
| 端口 | 23 | 513 |
| 客户端端口 | 任意 | 特权端口 |
| 认证 | 用户名密码 | 主机信任+密码 |
| 安全性 | 一般(明文) | 差(信任机制) |
| 跨平台 | 好 | 差(Unix only) |
各有特点。
现在的情况
现在的情况:
- Telnet和Rlogin都不安全
- 都是明文传输
- 密码也是明文
- 现在都用SSH代替了
- SSH加密,安全
为什么还学:
- 历史意义
- 有些老设备还在用
- 理解远程登录的原理
现在都用SSH了。
26.6 小结
远程登录概述
-
什么是远程登录
- 通过网络登录远程计算机
- 就像本地一样操作
-
两种协议
- Telnet:通用
- Rlogin:Unix专用
Telnet协议
-
什么是Telnet
- 标准远程登录协议
- 端口23
- 跨平台
-
特点
- 通用
- NVT网络虚拟终端
- 选项协商
- 对称
-
NVT
- 虚拟终端
- 标准格式
- 双方转换
-
工作过程
- 建立连接
- 选项协商
- 登录
- 交互
- 退出
Telnet选项协商
-
什么是选项协商
- 协商各种功能
- 灵活
-
四种命令
- WILL:我想启用
- WONT:我不想启用
- DO:请你启用
- DONT:请你不要启用
-
常见选项
- 回显
- 终端类型
- 窗口大小
- 等等
-
子协商
- 交换具体数据
- 比如终端类型具体是什么
Rlogin协议
-
什么是Rlogin
- BSD Unix的远程登录
- 端口513
- 简单
-
特点
- Unix专用
- 简单
- 主机信任
- 特权端口
-
工作过程
- 建立连接
- 客户端发所有信息
- 服务器验证
- 交互
-
信任机制
- 主机信任
- 免密登录
- 不安全
比较
-
Telnet
- 通用、灵活、复杂
-
Rlogin
- 简单、Unix专用、信任机制
-
现在
- 都不安全
- 都用SSH代替
关键概念
-
远程登录
- 远程操作计算机
-
Telnet
- 标准协议
- NVT
- 选项协商
-
Rlogin
- Unix专用
- 简单
- 主机信任
-
选项协商
- WILL/WONT/DO/DONT
- 子协商
Telnet Rlogin