← 返回题目列表

怎么测试一个端口通不通?telnet、nc、nmap 各怎么用?

高频 中等 第 11 / 26 题 更新于 2026/07/28
端口测试telnetnc连通性

简化版

测端口连通性最常用三个工具:telnet 目标 端口(最通用,能连上就说明端口通、TCP 能建连)、nc -vz 目标 端口(netcat,更现代,支持批量/UDP)、nmap 目标 -p 端口(扫描多个端口、看状态)。关键点:ping 通不代表端口通——ping 只测网络层「主机可达」,端口测的是传输层「服务在不在监听」,两者是两回事。测试结果分三种:连上=端口开着refused=主机在但端口没服务超时卡住=防火墙丢包

详细版

为什么不能用 ping 测端口:ping 走 ICMP(网络层),只能告诉你「这台主机在不在、网络通不通」,测不了某个端口上的服务是否可用。一台主机 ping 得通,但 80 端口的 web 服务可能根本没起。所以测「服务通不通」必须测端口(TCP 建连)

① telnet——最通用

telnet example.com 443
  • 能连上(黑屏光标/显示 Connected)→ 端口开着、TCP 三次握手成功。
  • Connection refused → 主机可达,但该端口没有程序监听
  • 一直卡住直到 timeout → 大概率防火墙丢包
  • 退出:Ctrl+] 再输 quit。缺点:默认没装、不支持 UDP。

② nc(netcat)——更现代、更强

nc -vz example.com 443           # -v 详细 -z 只探测不发数据
nc -vz example.com 20-25         # 扫一段端口范围
nc -vzu example.com 53           # -u 测 UDP 端口

比 telnet 强在:支持端口范围、支持 UDP、还能收发数据做调试。是运维测端口的首选。

③ nmap——端口扫描器

nmap -p 443 example.com          # 测单个端口
nmap -p 1-1000 example.com       # 扫一段端口
nmap example.com                 # 扫常见端口

nmap 会给出端口状态open(开放)、closed(关闭,主机回了 RST)、filtered(被防火墙过滤,没回应)。适合批量扫描 + 判断防火墙

④ Windows PowerShell 自带

Test-NetConnection example.com -Port 443

完整版教学

一、先破除最大误区:ping 通 ≠ 端口通

这是端口测试第一要理解的事。很多人「网站打不开,ping 一下服务器发现通的」,就以为服务器没问题——大错。原因在于 ping 和端口测试工作在不同的网络层次

  • ping 用 ICMP,工作在网络层,只验证「这台主机在线、网络能到达」。
  • 端口测试要建立 TCP 连接,工作在传输层,验证「目标端口上有没有服务在监听、能不能握手」。

一台服务器可以「主机活着(ping 通)」但「web 服务挂了(80 端口连不上)」。所以判断某个服务可不可用,必须测它的端口,而不是 ping 主机。反过来,有些服务器禁 ping(禁 ICMP),ping 不通但端口服务好好的。ping 和端口测试是互补的两件事,不能相互代替。

二、telnet:最经典的端口测试工具

telnet 本来是远程登录协议(已被 SSH 取代),但它「建立一条到指定端口的 TCP 连接」的能力,让它成了最通用的端口测试工具:

telnet example.com 80

它做的事就是向目标端口发起 TCP 三次握手,结果分三种,每种指向不同原因:

  • 握手成功:屏幕清空、光标闪烁或提示 Connected。说明端口开着、TCP 通。这时甚至可以手敲 HTTP 请求测试:输入 GET / HTTP/1.0 回车两次,能收到响应。
  • Connection refused(连接被拒绝):主机明确回了一个 RST——意思是「我在,但这个端口没有程序监听」。指向服务没启动 / 端口配错
  • 长时间无响应最后 timeout没有任何回应(包被丢弃),指向防火墙/安全组拦截,或主机不可达。

telnet 的短板:现在系统默认不装了,且只支持 TCP、不支持 UDP,不能扫端口范围。

小技巧:telnet 连上后想退出,按 Ctrl+] 进入命令模式,再输 quit

三、nc(netcat):网络界的瑞士军刀

nc(netcat)功能比 telnet 强得多,是运维测端口的首选。测连通性的标准姿势:

nc -vz example.com 443
#  -v 输出详细信息(成功/失败原因)
#  -z zero-I/O 模式,只做连接探测、不发送数据

相比 telnet,nc 的优势:

  • 扫端口范围nc -vz example.com 20-25 一次测多个端口。
  • 支持 UDPnc -vzu example.com 53 测 UDP 端口(DNS、DHCP 等)。注意 UDP 无连接,探测结果不如 TCP 确定。
  • 能收发数据:不加 -z 时可以真正发数据,用来调试协议、传文件、甚至搭个临时服务端(nc -l 8080 监听端口)。

所以 nc 不只是「测端口」,还是抓协议、临时通信的多面手,值得掌握。

四、nmap:批量扫描与看防火墙

一次测很多端口、或判断防火墙行为,用 nmap(端口扫描器):

nmap -p 80,443,3306 example.com    # 测指定几个端口
nmap -p 1-65535 example.com        # 全端口扫描(慢)

nmap 的价值是它把端口状态分得更细:

  • open:端口开放,有服务监听。
  • closed:端口关闭——主机回了 RST(对应 telnet 的 refused),主机可达但没服务。
  • filtered被防火墙过滤——探测包被丢弃,没有任何回应(对应 telnet 的 timeout)。

closedfiltered 的区分特别有用:closed 说明主机在、只是没起服务filtered 说明防火墙把包拦了。这直接告诉你该去查服务还是查防火墙。

注意:nmap 是渗透/安全工具,扫描别人的服务器可能违法/违规,只能扫自己有权限的目标。

五、把三种结果对应到三类原因(最重要)

无论用哪个工具,测端口的结果都归为三类,务必记牢它们指向的原因:

结果现象原因下一步
成功连上/open端口开着、服务在监听问题在应用层,用 curl 查
拒绝 refused立刻被拒/closed主机在,但端口没服务(RST)查服务是否启动、端口配置
超时 timeout一直卡住/filtered防火墙丢包或主机不可达查防火墙/安全组规则

「拒绝」和「超时」的区别是精髓:拒绝是主机主动告诉你「没这服务」(有回应),超时是根本没人理你(无回应)。前者去查服务端进程,后者去查防火墙。

六、服务端视角:端口到底有没有监听

测端口是「客户端视角」。如果你能登上服务器,还要从「服务端视角」确认端口是否真的在监听:

ss -tlnp | grep 443       # 查看本机哪些端口在 TCP 监听(现代)
netstat -tlnp | grep 443  # 同上(传统)
  • 有输出LISTEN 状态)→ 服务确实在监听这个端口。若客户端还连不上,那就是防火墙问题。
  • 没输出 → 服务根本没监听这个端口(没启动、或监听在 127.0.0.1 只允许本机、或端口配错)。这时客户端测到的 refused 就说得通了。

「客户端测不通 + 服务端在监听」→ 防火墙;「客户端测不通 + 服务端没监听」→ 服务问题。两个视角一对照,问题就清楚了。

七、常见误区与追问

考点正确口径
本机监听ss/netstat 查看端口是否 LISTEN
链路连通telnet/nc/tcping 测 TCP 建连
策略检查防火墙、安全组、ACL、负载均衡健康检查
server: ss -lntp | grep 8080
client: nc -vz host 8080
client: curl -v http://host:8080/
capture: tcpdump port 8080

端口排障要分清“服务有没有监听”和“客户端能不能连到这个监听”。

  • 误区:服务器进程启动就代表端口可访问。 进程可能只监听 127.0.0.1,或被防火墙/安全组挡住。
  • 误区:telnet 失败就一定是服务没启动。 也可能是路由不通、防火墙丢包、端口未暴露或负载均衡未转发。
  • 误区:端口通就代表协议正确。 TCP 建连成功只说明端口通,HTTP/TLS/应用协议仍可能不匹配。
  • 追问:refused 和 timeout 怎么区分? refused 通常收到 RST,timeout 通常是 SYN 无响应或被丢弃。
  • 追问:为什么要在服务端抓包? 能确认客户端 SYN 是否到达,以及服务端是否返回 SYN+ACK/RST。
  • 追问:云环境还要看哪些层? 安全组、网络 ACL、路由表、LB 监听、后端健康检查和容器端口映射。

八、加强记忆

测端口用 telnet 目标 端口(最通用、TCP 建连)、nc -vz(现代、支持端口范围和 UDP)、nmap -p(批量扫描、区分 open/closed/filtered)。核心:ping 通 ≠ 端口通——ping 到网络层(主机可达),端口测传输层(服务是否监听)。结果三分:成功=端口开 / refused=主机在但端口没服务(RST) / timeout=防火墙丢包(无回应)。配合服务端 ss -tlnp 看端口是否 LISTEN:连不上+在监听=防火墙,连不上+没监听=服务问题。