ping 和 telnet 到底有什么区别?

0 阅读4分钟

ping 和 telnet 到底有什么区别?

做后端开发、运维、测试的同学,几乎每天都在跟网络打交道。 遇到接口不通、服务挂了、连接超时,第一反应往往就是两条命令:

  • ping
  • telnet

但很多人其实只会用,却讲不清区别,面试被问到也容易含糊其辞。 今天这篇就用最直白、最接地气的方式,把 ping 和 telnet 彻底讲明白。


一、先一句话总结区别

  • ping:测“能不能到达”(网络层 ICMP,只看 IP 是否通)
  • telnet:测“端口能不能连上”(应用层 TCP,看服务是否活着)

简单说: ping 通 ≠ 服务可用;telnet 通 = 服务真的能连。


二、ping 是什么?能干什么?

ping 是基于 ICMP 协议(网络层)的工具,作用只有一个:

判断目标主机是否可达、网络链路是否通畅。

你可以把它理解成:

对着远方喊一声,看有没有回声。

ping 能做什么

  1. 判断本机能不能到达目标 IP/域名
  2. 看网络延迟(time)
  3. 看丢包率,判断网络稳不稳定
  4. 排查 DNS 是否解析正常

ping 不能做什么

  • 不能判断端口是否开放
  • 不能判断服务是否启动
  • 不能判断防火墙是否放行了端口
  • 更不能判断应用是否正常响应

比如: 服务器明明在运行,但防火墙封了 8080 端口,ping 依然是通的,但你业务就是访问不了。

这就是为什么 ping 通了,服务却连不上的根本原因。


三、telnet 是什么?能干什么?

telnet 是基于 TCP 协议 的工具,作用是:

尝试与目标主机的指定端口建立 TCP 连接。

你可以把它理解成:

走到对方家门口,敲敲门,看开不开门。

telnet 能做什么

  1. 判断目标端口是否开放
  2. 判断服务进程是否在监听
  3. 排查防火墙是否拦截端口
  4. 简单测试 HTTP、Redis、MySQL 等端口连通性

用法很简单:

telnet 192.168.1.100 8080
  • 出现 Connected → 端口通、服务在跑
  • 出现 Connection refused → 端口没开或服务没启动
  • 出现 Timeout → 防火墙拦截或网络不通

telnet 为什么比 ping 更贴近业务?

因为我们后端服务都是监听某个端口提供服务的:

  • 80 / 443 → HTTP/HTTPS
  • 3306 → MySQL
  • 6379 → Redis
  • 8080、8088 → SpringBoot

网络通,不代表端口通;端口通,才代表服务真的能访问。


四、最经典的面试题:ping 通但 telnet 不通,为什么?

这道题后端、运维、测试都常被问,标准答案就这几类:

  1. 目标端口没有开启(服务没启动)
  2. 防火墙拦截了端口(firewalld、安全组、iptables)
  3. 云服务器安全组未放行端口(阿里云/腾讯云最常见)
  4. 服务监听了 127.0.0.1,外部无法访问
  5. 端口被其他进程占用

一句话总结: ping 只负责路通不通,telnet 负责门开没开。


五、一张表看懂所有区别(面试直接背)

对比项pingtelnet
协议ICMP(网络层)TCP(传输层+应用层)
作用检测主机是否可达检测端口是否开放、服务是否可连
是否需要端口不需要必须指定端口
能判断什么网络通不通服务能不能连
防火墙影响可能禁 ICMP,ping 不通可能封端口,telnet 不通
代表场景路修好了门打开了
结论ping 通 ≠ 服务可用telnet 通 = 服务可连接

六、实际工作中怎么用?(后端排查标准流程)

给你一套工作中最常用的排查顺序,你以后遇到问题直接照这个来:

  1. ping 域名/IP
    • 不通:网络问题、DNS 问题、主机宕机
  2. ping 通了,就用 telnet 测端口
    • 不通:防火墙、安全组、服务未启动、监听配置错误
  3. telnet 通了,业务还是不行
    • 应用内部错误、Nginx 配置错、账号密码错、接口逻辑错

这一套流程,就是后端网络排查的标准思维模型


七、结尾小结

最后用最通俗的话收尾:

  • ping 是看路通不通
  • telnet 是看门开没开

路通了,门不一定开; 门开了,服务才能真正用。