菜鸟科技网

ping如何检测指定端口是否开放?

标准的 ping 命令(使用 ICMP 协议)是无法直接检测端口的

ping如何检测指定端口是否开放?-图1
(图片来源网络,侵删)
  • ping 的工作原理ping 发送的是 ICMP Echo Request(回显请求)包,目标是对方的 IP 地址,它只关心目标主机是否在线、网络是否通畅,不关心该主机上开启了哪些应用程序或服务。
  • 端口的作用:端口是 IP 地址之上的一层,用于区分同一台主机上的不同网络服务(Web 服务在 80 端口,SSH 服务在 22 端口),要检测端口,你需要的是 TCP/UDP 协议,而不是 ICMP。

当你想“ping”一个端口时,你的真实意图是:“测试我能否与目标主机的某个特定端口建立 TCP 或 UDP 连接。”

下面我将为你介绍几种在不同操作系统下实现这一目标的命令。


使用 telnet 命令(最常用、最简单)

telnet 是一个传统的网络工具,它默认使用 TCP 协议,你可以用它来尝试连接一个端口,如果连接成功,说明该端口是开放的。

Windows 系统

  1. 打开命令提示符(CMD)或 PowerShell。
  2. 输入以下命令:
    telnet <目标IP地址> <端口号>
  3. 示例:测试 google.com 的 80 端口(HTTP 服务)。
    telnet google.com 80
    • 如果连接成功:你会看到一个空白屏幕,并且光标在左上角闪烁,这表示 TCP 连接已建立,端口是开放的,按 Ctrl+] 然后输入 quit 退出。
    • 如果连接失败:你会看到类似 "Connecting To google.com...Could not open connection to the host, on port 80: Connect failed" 的错误信息,表示端口是关闭的或被防火墙阻拦了。

注意:Windows 10/11 默认可能没有安装 telnet,如果提示命令不存在,你需要手动启用它:

ping如何检测指定端口是否开放?-图2
(图片来源网络,侵删)
  1. 进入 "设置" -> "应用" -> "可选功能"。
  2. 点击 "添加功能"。
  3. 在搜索框中输入 "telnet",然后安装 "Telnet 客户端"。

Linux / macOS 系统

telnet 在 Linux 和 macOS 上通常是默认安装的。

  1. 打开终端。
  2. 命令格式与 Windows 相同:
    telnet <目标IP地址> <端口号>
  3. 示例:测试本地 localhost 的 22 端口(SSH 服务)。
    telnet localhost 22
    • 成功:会显示类似 "Escape character is '^]'. Connected to localhost." 的信息,然后进入空白界面。
    • 失败:会显示 "telnet: connect to address 127.0.0.1: Connection refused"。

使用 nc (Netcat) 命令(功能更强大)

nc (或 netcat) 被称为“网络工具中的瑞士军刀”,它功能非常强大,可以轻松进行 TCP 和 UDP 端口扫描。

Linux / macOS 系统

nc 在大多数 Linux 和 macOS 发行版中默认可用。

  1. 打开终端。

    ping如何检测指定端口是否开放?-图3
    (图片来源网络,侵删)
  2. 测试 TCP 端口

    nc -zv <目标IP地址> <端口号>
    • -z:表示扫描模式,只连接端口,不发送数据。
    • -v:表示详细输出,显示连接结果。
    • 示例
      nc -zv google.com 80
      # 输出类似: Connection to google.com 80 port [tcp/http] succeeded!
  3. 测试 UDP 端口

    nc -uzv <目标IP地址> <端口号>
    • -u:表示使用 UDP 协议。
    • 示例
      nc -uzv 8.8.8.8 53
      # 输出类似: Connection to 8.8.8.8 53 port [udp/domain] succeeded!

Windows 系统

Windows 10/11 的较新版本(1809 及以后)在 "PowerShell" 中包含了 Test-NetConnection cmdlet,其功能类似于 nc,对于旧版 Windows,可以从 netcat 官方页面 下载 nc.exe

使用 PowerShell (推荐):

# 测试 TCP 端口
Test-NetConnection -ComputerName google.com -Port 80
# 测试 UDP 端口 (需要 -InformationLevel 详细)
Test-NetConnection -ComputerName 8.8.8.8 -Port 53 -InformationLevel Detailed

输出示例:

ComputerName     : google.com
RemoteAddress    : 142.250.185.78
RemotePort      : 80
InterfaceAlias   : Ethernet
SourceAddress    : 192.168.1.100
TcpTestSucceeded : True

TcpTestSucceeded: True 表示端口开放。


使用 nmap 命令(专业端口扫描器)

nmap (Network Mapper) 是业界标准的网络扫描和安全审计工具,功能最全面,可以检测端口是否开放、开放服务的版本信息、操作系统类型等。

安装 nmap

  • Windows: 从 nmap.org 官网 下载并安装。
  • Linux: sudo apt-get install nmap (Debian/Ubuntu) 或 sudo yum install nmap (CentOS/RHEL)。
  • macOS: brew install nmap

使用 nmap

  1. 打开终端或命令提示符。

  2. 扫描单个端口

    nmap -p <端口号> <目标IP地址>
    • -p:指定要扫描的端口。
    • 示例
      nmap -p 80 google.com
  3. 扫描多个端口

    nmap -p 22,80,443 <目标IP地址>
  4. 扫描一个端口范围

    nmap -p 1-100 <目标IP地址>

输出示例:

Starting Nmap 7.92 ( https://nmap.org ) at 2025-10-27 10:30 CST
Nmap scan report for google.com (142.250.185.78)
Host is up (0.028s latency).
PORT   STATE SERVICE
80/tcp open  http
Nmap done: 1 IP address (1 host up) scanned in 0.35 seconds

STATEopen 表示端口开放。


总结与对比

工具/命令 协议 操作系统 优点 缺点
telnet TCP All (需安装) 简单、通用,无需额外参数 功能单一,只支持 TCP;Windows 需手动安装
nc (Netcat) TCP/UDP Linux/macOS/Win 功能强大,支持 TCP/UDP,轻量级 Windows 默认无,需手动安装
Test-NetConnection TCP/UDP Windows (PowerShell) 现代,集成在 PowerShell 中,信息详细 仅限 Windows
nmap TCP/UDP/SCTP All 功能最强大,信息最全面(版本、OS等) 安装稍大,对于简单任务可能“杀鸡用牛刀”

场景选择建议

  • 快速、简单的 TCP 端口检查:使用 telnet
  • 在 Linux/macOS 上检查 UDP 或 TCP 端口:使用 nc
  • 在 Windows (PowerShell) 上进行标准检查:使用 Test-NetConnection
  • 专业网络扫描、安全审计或需要详细信息:使用 nmap

希望这个详细的解释能帮助你正确地“ping”指定的端口!

分享:
扫描分享到社交APP
上一篇
下一篇