在日常的网络排障或服务器部署中,我们经常需要测试本机与目标服务器的网络连接。很多同学的第一反应是打开终端输入 ping <IP>。
但是,ping 命令只能基于 ICMP 协议测试 IP 的连通性,它无法告诉你服务器的某个特定端口(比如 80、443、3306)是否开放并允许连接。 要测试特定端口的连通性,我们需要建立 TCP 连接。今天,我们就来盘点一下在 Windows、Ubuntu、macOS 和 Android 等主流系统中,测试特定 IP 和端口连通性的最佳方法。
1. Windows 系统:拥抱 PowerShell
很多老教程会教你使用 telnet,但现代 Windows 系统出于安全考虑,默认是关闭 Telnet 客户端的。因此,最推荐也是最优雅的方法是使用系统自带的 PowerShell。
方法一:使用 PowerShell(推荐,开箱即用)
打开你的 PowerShell,输入以下命令:
Test-NetConnection -ComputerName <IP地址> -Port <端口号>
- 示例:
Test-NetConnection -ComputerName 192.168.1.10 -Port 80 - 如何看结果: 在返回的详细信息中,找到
TcpTestSucceeded这一行。如果是True,恭喜你,端口畅通!如果是False,则说明无法连接。
方法二:使用经典 Telnet
如果你非常怀旧并开启了 Telnet 客户端(控制面板 -> 程序 -> 启用或关闭 Windows 功能),可以使用:
telnet <IP地址> <端口号>
- 如何看结果: 如果屏幕瞬间变黑或进入一个空白光标界面,说明连接成功。如果一直提示“正在连接...”最后报错,说明不通。
2. Linux (Ubuntu/CentOS):强大的命令行工具
Linux 玩家的工具箱里永远不缺网络神器,最常用的当属 Netcat (通常简称 nc) 和 Telnet。
方法一:Netcat / nc(网络界的瑞士军刀)
打开终端,直接输入:
nc -zv <IP地址> <端口号>
- 示例:
nc -zv 192.168.1.10 443 - 参数揭秘:
-z表示“零 I/O 模式”(只扫描不发送数据),-v表示“详细模式”(输出执行过程)。 - 如何看结果: 看到
succeeded!或Connected to...就是成功通关;如果显示Connection refused或Connection timed out,说明连接被拒绝或超时。
方法二:Telnet
与 Windows 类似,如果系统安装了该工具,可以直接测试:
telnet <IP地址> <端口号>
3. macOS:优雅的 Unix 核心
由于 macOS 底层基于 Unix,它的网络命令与 Linux 几乎如出一辙。需要注意的是,较新的 macOS(High Sierra 之后)为了安全,已经移除了内置的 telnet。
方法一:使用 Netcat (nc)(首选)
打开“终端”App,输入与 Linux 一样的命令:
nc -zv <IP地址> <端口号>
- 如何看结果: 输出
Connection to <IP> port <端口> [tcp/*] succeeded!表示连接成功。
方法二:用 curl 曲线救国
如果你的环境中恰好 nc 罢工了,强大的 curl 也能用来测试 TCP 端口:
curl -v telnet://<IP地址>:<端口号>
- 如何看结果: 看到
Connected to <IP>提示即代表端口开放,测试完毕后按Ctrl+C退出即可。
4. Android (安卓):移动端的排障指南
手机虽然没有原生的命令行供普通用户使用,但我们依然有办法进行专业的网络测试。
方法一:借助第三方 App(最适合大众)
在各大应用商店搜索并下载网络诊断工具,如 PingTools 或 Network Utilities。
打开 App,找到 Port Scanner(端口扫描)或 Telnet 功能模块,输入 IP 和端口即可获得直观的可视化结果。
方法二:使用 Termux(极客专属)
如果你是个极客,一定不要错过 Termux 这款终端模拟器。它能在手机上运行一个微型的 Linux 环境。
打开 Termux 后,输入以下命令:
pkg install netcat-openbsd # 初次使用先安装 nc 工具
nc -zv <IP地址> <端口号>
操作和结果判断与 Linux 完全一致!
💡 排错避坑指南
如果测试结果是不通(Connection refused / timed out),先别急着怀疑人生,通常是以下三个“嫌疑人”作祟:
- 服务未启动: 目标服务器上压根没有程序监听这个端口。
- 本机防火墙拦截: 目标服务器的内部防火墙(如 Linux 的 iptables/firewalld,Windows 防火墙)把你的请求拒之门外了。
- 网络安全策略: 你们之间的网络路由、机房防火墙,或是云服务器的“安全组”策略拦截了该端口的流量。
希望这篇文章能帮你告别“盲目 Ping”,精准定位网络问题!如果觉得有用,欢迎点赞收藏,也欢迎在评论区分享你的网络排障踩坑日常。
版权属于:soarli
本文链接:https://blog.soarli.top/archives/894.html
转载时须注明出处及本声明。