使用 telnet 测试服务/开放端口?

使用 telnet 测试服务/开放端口?

我经常看到人们这样测试端口:

//shell
telnet ip-address 80
telnet ip-address 25

AFAIK telnet 是访问远程设备的旧方法 - 对吗?或者我是这么想的...

例如,为什么您可以通过 telnet 连接到 smtp 端口?

答案1

这是为了方便,但也是低于用户级别的诊断。您可以通过这种方式隔离服务遇到的问题,例如:Joe 有一个数据库服务器和客户端。他们没有沟通。问题出在网络上吗?服务器?客户端?

Joe 转到客户端计算机并打开 shell。他使用 telnet,正如您所描述的:

telnet server.ip.com 3333

并输入命令,就好像他是客户端程序一样

WHO;

服务器回复

'11','JOE.CORP.COM'

(这是一个非常愚蠢的服务器)

这样,Joe 就知道到服务器的网络链接正常,并且他的客户端可能配置不正确。

答案2

Telnet 是一个非常简单的协议,您在客户端中输入的所有内容(少数例外)都会传输到网络上,而来自网络的所有内容都会显示在您的终端上。例外是 0xFF 字节,它设置了一些特殊的通信状态。只要您的通信不包含此字节,您就可以使用 telnet 作为任何 TCP 端口上的原始通信客户端。

换句话说:这纯粹是为了方便。

答案3

例如,为什么您可以通过 telnet 连接到 smtp 端口?

因为smtp和 telnet 协议都是以纯文本形式实现的。因此,使用telnet客户端,您基本上可以使用实现纯文本的特定协议连接到任何端口,并且您知道如何使用该协议进行通信。

答案4

为什么不使用 netcatnc而使用 telnet?

我们在测试工具 dda-serverspec - 精确命令中使用 netcat

nc [host] [port] -z -w [timeout]

(看https://github.com/DomainDrivenArchitecture/dda-serverspec-crate/blob/61f44990b07779328ffca0ce7081a7eb1ef9d46b/main/src/dda/pallet/dda_serverspec_crate/infra/fact/netcat.clj#L59

相关内容