文章目录
1. 文章引言
我们在工作的过程中,经常会使用
ping端口
,来查看服务是否正常运行,因为它是最有效的故障排除技术之一。
运维或后端人员每天都使用
ping命令
,它依靠
ICMP协议
来检索有关远程主机的操作信息,如下所示:
PS C:\Users\superjson>ping www.baidu.com
正在 Ping www.a.shifen.com [180.101.50.242] 具有 32 字节的数据:
来自 180.101.50.242 的回复: 字节=32 时间=21ms TTL=52
来自 180.101.50.242 的回复: 字节=32 时间=12ms TTL=52
来自 180.101.50.242 的回复: 字节=32 时间=12ms TTL=52
来自 180.101.50.242 的回复: 字节=32 时间=18ms TTL=52180.101.50.242 的 Ping 统计信息:
数据包: 已发送 =4,已接收 =4,丢失 =0(0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 12ms,最长 = 21ms,平均 = 15ms
但仅对主机进行
ping操作
并不总是足够的:**你可能需要对服务器上的特定端口执行
ping操作
**。
此特定端口可能与如下相关:
- 数据库
Apache Web
服务器- 网络上的代理服务器
接下来,我便详细介绍如何使用各种不同的命令来
ping特定端口
。
2. ping特定端口
为什么
ping
特定端口?上文也已解释清楚。
但正赶上
ChatGPT
比较火,可以借助
ChatGPT
来回答,如下所示:
ping特定端口
可以帮助确认网络是否有效,并确定与特定主机的连接状态。
2.1 使用telnet ping特定端口
首先,我们可以使用
telnet
命令,后跟IP地址和端口,如下所示:
$ telnet <ip_address><port_number>
telnet
命令对
Windows
和
Unix
操作系统都有效,比如我想执行如下命令:
telnet 172.16.0.12 80
但报出
-bash: telnet: command not found
错误,如下图所示:
可以执行如下命令,在系统上安装
telnet
:
$ sudoapt-getinstall telnet
或
$ yum install telnet
我的服务器已安装
telnet
,假设我想
ping
百度的
80
端口,来查看该端口是否处于活动状态,如下所示:
[root@VM_0_12_centos ~]# telnet 36.152.44.95 80
Trying 36.152.44.95...
Connected to 36.152.44.95.
Escape character is '^]'.
能够连接到远程主机,仅意味着远程端口已启动并正在运行。
为了退出
Telnet
实用程序,您可以使用
Ctrl + ]
击键来转义,并执行
q
命令来退出,如下图所示:
当然,你还可以指定域名而不是
IP
地址,然后指定要
ping
的特定端口,如下所示:
$ telnet <domain_name><port_number>
2.2 使用nc ping特定端口
为了对特定的端口号执行
ping
操作:
- 请对
netcat
命令执行nc
命令 - 对
verbose
执行v
选项 - 对
scanning
执行z
- 并指定主机和要进行
ping
操作的端口,如下所示:
$ nc-vz<ip_address><port_number>
当然,你还可以指定域名,然后指定要
ping
的端口,如下所示:
$ nc-vz<domain_name><port_number>
该命令适用于
Unix
系统,但你可以在线找到适用于
Windows
的
netcat
替代产品。
Windows
的
netcat
替代产品链接地址为:https://github.com/diegocr/netcat
如果你在系统上未找到
nc
命令,如下图所示:
可以执行如下命令,使用sudo命令在系统上安装
nc
,如下所示:
$ sudoapt-getinstall netcat
或
$ yum install netcat
假设,你要远程
ping
亚马逊的
80
端口,则可以运行以下命令:
$ nc-vz amazon.com 80
如上图所示,连接已在端口
80
上成功打开。
如果尝试对未打开的特定端口执行
ping
操作,比如远程亚马逊的
389
端口,如下所示:
$ nc-vz amazon.com 389
则会收到以下错误消息:
amazon.com [<ip_address>]389(ldap): Connection refused
2.3 使用nmap ping端口
ping
特定端口的一种非常简单的方法,是将nmap命令与端口的
-p
选项一起使用,并指定端口号以及要扫描的主机名,如下所示:
$ nmap -p<port_number><ip_address>
当然,你也可以指定扫描的域名,如下所示:
$ nmap -p<port_number><domain_name>
**注意:如果您使用的是
nmap
,请注意,您应该了解它可能附带的法律问题。**
对于本教程,我们假设您正在扫描本地端口仅出于监视目的。
如果主机上没有
nmap
命令,则必须安装它,可以使用如下命令:
$ sudoapt-getinstall nmap
或
$ yum install nmap
比如,您要在默认LDAP端口
389
上对本地网络上的
192.168.178.35/24
执行
ping
操作。
$ nmap -p389192.168.178.35/24
如上图所示,该虚拟机上的端口
389
已打开,表明其中正在运行
OpenLDAP
服务器。
使用nmap扫描端口范围
为了使用
nmap
扫描一定范围的端口,你可以对
端口
使用
p
选项执行
nmap
,并指定要
ping
的范围,如下所示:
$ nmap -p1-100 <ip_address>
或
$ nmap -p1-100 <hostname>
同样,如果我们尝试扫描
192.168.178.35/24
上的端口范围,则将运行以下命令:
$ nmap -p1-100 192.168.178.35/24
2.4 使用Powershell Ping特定端口
如果你在
Windows
环境中运行计算机,则可以使用
Powershell ping
特定的端口号。
如果你计划在自动脚本中包含此功能,则此选项非常有用。
**【注意】为了使用
Powershell ping
特定端口,您必须使用
Test-NetConnection
命令,后跟要
ping
的
IP
地址和端口号,如下所示:**
$ Test-NetConnection <ip_address>-p<port_number>
假如,我们要对端口
389
上的
192.168.178.35/24
主机执行
ping
操作,如下所示:
$ Test-NetConnection 192.168.178.35 -p389
在最后一行,您可以看到
TCP
调用是否成功:在我们的例子中,它确实到达了
389
端口上的端口。
3. 补充说明
3.1 apt-get还是yum的区别
可以参考博文:详细分析yum和apt-get的区别
3.2 解决sudo: apt-get: command not found的错误
可以参考博文:解决sudo: apt-get: command not found的错误
3.3 解决-bash: xxx: command not found的问题
可以参考博文:解决-bash: xxx: command not found的问题
4. 文章总结
在本教程中,您学习了可用于
ping特定端口
的所有方法。
但从技术上讲,没有诸如
ping
主机上的特定端口之类的事情。
向远程主机发送
ping
请求,意味着你正在使用
ICMP协议
来检查网络连接。
ICMP
主要用于诊断将阻止您访问主机的网络问题。
当您
ping端口
时,实际上是在计算机和特定端口上的远程主机之间建立
TCP
连接。
但是,工程师通常说他们正在
ping端口
,但实际上他们正在扫描或打开
TCP
连接。
当然,本教程中使用的大多数命令都可以在
Windows
,
Unix
或
MacOS
操作系统上使用。
祝你学习愉快!!!
版权归原作者 互联网全栈开发实战 所有, 如有侵权,请联系我们删除。