一、telnet(Teletype Network)是指遵循telnet协议的用于访问远程终端的客户端程序,默认情况下,它使用23端口

Telnet 是一种基于 ‌TCP/IP 协议‌ 的远程终端协议,允许用户通过命令行界面(CLI)远程登录到其他计算机或设备。它的核心工作原理可以分为以下几个关键步骤:

‌1. 建立 TCP 连接‌

Telnet 客户端通过 ‌TCP 端口 23‌(默认)与服务端建立连接。如果目标端口不是 23,需显式指定(例如 telnet 192.168.1.1 8080)。

‌三次握手‌:客户端与服务端通过 TCP 的三次握手建立可靠连接。

‌2. 选项协商(Option Negotiation)‌

Telnet 协议支持多种功能选项(如终端类型、窗口大小等)。在连接建立后,客户端和服务端会通过 ‌协商‌ 确定双方支持的选项。

‌示例‌:

客户端发送 WILL 或 DO 指令表示支持或请求某个功能。

服务端回复 DO 或 DONT 确认或拒绝。

‌3. 数据传输(明文传输)‌

‌双向通信‌:客户端和服务端通过 TCP 连接发送和接收数据。

客户端输入的命令会以 ‌明文‌ 形式发送到服务端。

服务端执行命令后,将结果返回给客户端。

‌网络虚拟终端(NVT, Network Virtual Terminal)‌:

Telnet 使用 NVT 作为标准中间格式,屏蔽不同操作系统终端的差异(例如换行符处理)。

客户端和服务端负责将本地终端特性转换为 NVT 格式。

‌4. 连接终止‌

客户端或服务端发送 CLOSE 命令,触发 TCP 连接的 ‌四次挥手‌,释放资源。

‌关键特性与局限性‌

‌明文传输‌:Telnet 不加密数据,用户名、密码和命令容易被窃听。‌现代场景中已被 SSH(Secure Shell)取代‌。

‌灵活性‌:通过选项协商支持多种终端类型(如 VT100)。

‌跨平台‌:基于 TCP/IP,可在不同操作系统间使用。

‌Telnet 的现代替代‌

‌SSH(Secure Shell)‌:提供加密通信,支持身份验证和数据完整性校验。

‌用途演变‌:Telnet 现在常用于测试网络服务(如 HTTP、SMTP)的连通性,例如 telnet example.com 80 检查 Web 服务是否可达。

‌总结‌

Telnet 的核心是通过 TCP 建立连接,利用 NVT 标准化终端交互,并通过明文传输数据。尽管因安全性问题被 SSH 取代,其原理仍是理解远程协议的基础。

二、telnet(Teletype Network)是指通用的TCP客户端工具。也就是说,用户可以通过Telnet尝试连接到任何开放的TCP端口,而不仅仅是23端口。

Telnet 可以连接 Web 服务器的 ‌8080 端口‌,并不是因为 Telnet 协议本身支持 HTTP,而是因为 Telnet 客户端本质上是一个 ‌通用的 TCP 连接工具‌。以下是详细解释:

‌1. Telnet 客户端的本质:TCP 连接工具‌

Telnet 客户端虽然最初设计用于远程登录(通过 Telnet 协议,默认端口 23),但它实际上是一个 ‌原始的 TCP 套接字通信工具‌。

用户可以通过 telnet <端口号> 命令连接到 ‌任意开放的 TCP 端口‌(如 8080、80、3306 等),而不仅仅是 Telnet 服务的端口。

‌2. 连接 Web 服务器 8080 端口的流程‌

‌TCP 三次握手‌Telnet 客户端向目标服务器的 8080 端口发起 TCP 连接请求。如果该端口开放且未被防火墙拦截,双方完成三次握手,建立连接。

‌双向字节流通道‌连接建立后,Telnet 客户端和服务器之间会形成一个 ‌双向的字节流通道‌。此时:

Telnet 客户端可以发送‌任意数据‌到服务器的 8080 端口。

服务器会根据其监听的协议(如 HTTP)解析接收到的数据。

‌手动发送 HTTP 请求‌由于 8080 端口通常是 Web 服务(如 HTTP 服务器)的端口,用户可以通过 Telnet ‌手动输入 HTTP 请求‌与服务器交互。‌示例‌:

telnet example.com 8080

GET / HTTP/1.1

Host: example.com

服务器收到请求后,会返回 HTTP 响应(如 HTML 内容)。

‌3. 为什么能成功通信?‌

‌协议无关性‌:Telnet 客户端不关心目标端口运行的具体协议(如 HTTP、SMTP、MySQL)。它只是建立一个 TCP 连接,允许用户发送和接收原始字节流。

‌HTTP 的文本特性‌:HTTP 协议是基于文本的协议,用户可以通过 Telnet 手动输入符合 HTTP 规范的请求,服务器会正常解析并响应。

‌4. Telnet 的核心作用‌

‌测试端口连通性‌:快速验证目标端口是否开放(例如 telnet 192.168.1.1 8080)。

‌调试协议交互‌:手动发送原始协议指令(如 HTTP、SMTP),观察服务器响应,排查服务问题。

‌5. 与 SSH 的区别‌

‌SSH 是加密的协议‌:SSH 客户端只能连接 SSH 服务端口(默认 22),且通信内容加密。它无法像 Telnet 那样直接发送原始字节流到其他端口。

‌Telnet 的局限性‌:Telnet 不加密数据,‌不适合传输敏感信息‌(如密码)。现代场景中,SSH 已取代 Telnet 用于远程登录。

‌6. 实际应用示例‌

假设你有一个运行在 8080 端口的 Web 服务器,通过 Telnet 测试其连通性:

$ telnet localhost 8080

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

GET / HTTP/1.1

Host: localhost

HTTP/1.1 200 OK

Server: nginx/1.18.0

Content-Type: text/html

...

输入 GET 请求后,服务器返回了 HTTP 响应,证明服务正常运行。

‌总结‌

Telnet 能连接 Web 服务器的 8080 端口,本质是因为它建立了 ‌原始的 TCP 连接通道‌,允许用户手动发送符合目标协议(如 HTTP)的请求。这种方式虽然原始且不安全,但在 ‌调试网络服务‌ 时非常有用。