ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

为什么使用 telnet 命令可以探测目标主机的某个端口是否开放?

为什么使用 telnet 命令可以探测目标主机的某个端口是否开放?

为什么使用 telnet 命令可以探测目标主机的某个端口是否开放?

Telnet 属于应用层协议,传输层采用 TCP,服务器默认监听 23 端口,通过 telnet 协议可以实现远程登录设备,并以命令方式进行交互。

使用 Telnet 传输数据时,包括用户名、密码等敏感内容都会以明文形式在网络上传输,因此存在严重安全隐患,目前已被 SSH 取代。

由于 Telnet 的输出非常简洁,因此使用 telnet 命令来探测 TCP 端口是否开放时非常方便。


telnet 命令语法telnet <IP> <PORT>

  • 若出现 Connected to xxx 或进入空白界面,表示端口开放
  • 若提示 Connection refused,表示端口未开放

例如:探测服务器 3306端口是否开放: telnet 10.0.28.88 3306


为什么 telnet 可以用来探测端口? 因为 telnet 协议基于 TCP 实现,它会先通过 TCP 三次握手建立连接,然后再进入应用层交互,因此只要 TCP 能连接成功,就能判断目标端口处于监听状态。

实际上除了 telnet,HTTP、FTP、SSH 等基于 TCP 的协议都可以用于判断端口是否开放,只是输出内容较复杂,不如 telnet 直观。


端口开放,建立连接后为什么会显示空白界面和混乱字符?

例如:假设用 telnet 命令与 MySQL 服务(3306端口)建立连接,服务器会发送 MySQL 协议格式的数据。若使用 MySQL 客户端,它会按照 MySQL 协议解析数据,而 Telnet 客户端并不具备 MySQL 协议解析能力,只会将收到的字节流原样显示,因此看起来像乱码。

若 Telnet 建立连接后显示空白界面,则说明服务器端没有主动发送任何内容。

返回列表