如何ping特定的端口号
ping可能是用于检查到远程系统的网络连接最常用的工具。
使用ping很容易。
我们只需将命令与远程服务器的IP或者URL一起使用。
ping faebook.com PING faebook.com (157.240.24.20) 56(84) bytes of data. 64 bytes from edge-star-shv-01-sin2.facebook.com (157.240.24.20): icmp_seq=1 ttl=51 time=307 ms 64 bytes from edge-star-shv-01-sin2.facebook.com (157.240.24.20): icmp_seq=2 ttl=51 time=225 ms
但是ping命令的默认端口是什么?
答案是没有的。
ping基于ICMP,而不是TCP或者UDP,ICMP协议没有端口号。
那么如何ping远程服务器的特定端口号?
使用ping命令不能这样做。
但是,还有其他工具允许我们ping特定的TCP或者UDP端口。
让我向我们展示一些这样的工具以及如何使用它们来ping给定的端口号。
ping特定端口与nmap
NMAP是一个网络扫描工具。
虽然我们可以使用NMAP做很多,但将介绍如何使用它来ping特定端口。
但首先,确保系统上安装了NMAP。
在基于Debian/Ubuntu的分布式上,我们可以使用以下命令安装nmap。
sudo apt install nmap
确保安装了NMAP后,我们可以按以下方式使用它来ping端口:
nmap -p 443 facebook.com
输出将是这样的:
Starting Nmap 7.60 ( https://nmap.org ) at 2019-01-07 10:40 IST Nmap scan report for facebook.com (157.240.24.35) Host is up (0.49s latency). Other addresses for facebook.com (not scanned): 2a03:2880:f10c:83:face:b00c:0:25de rDNS record for 157.240.24.35: edge-star-mini-shv-01-sin2.facebook.com PORT STATE SERVICE 443/tcp open https Nmap done: 1 IP address (1 host up) scanned in 10.35 seconds
正如我们在输出中看到的,服务器已启动,并且它响应了TCP类型的端口号443是打开的。
如果要扫描多个端口,我们也可以执行此操作。
例如,我们可以提供一系列类似的端口号:
nmap -p 80-88 facebook.com
输出将提供有关每个端口的信息:
Starting Nmap 7.60 ( https://nmap.org ) at 2019-01-07 10:48 IST Nmap scan report for facebook.com (157.240.24.35) Host is up (0.34s latency). Other addresses for facebook.com (not scanned): 2a03:2880:f139:183:face:b00c:0:25de rDNS record for 157.240.24.35: edge-star-mini-shv-01-sin2.facebook.com PORT STATE SERVICE 80/tcp open http 81/tcp filtered hosts2-ns 82/tcp filtered xfer 83/tcp filtered mit-ml-dev 84/tcp filtered ctf 85/tcp filtered mit-ml-dev 86/tcp filtered mfcobol 87/tcp filtered priv-term-l 88/tcp filtered kerberos-sec Nmap done: 1 IP address (1 host up) scanned in 4.49 seconds
我们还可以使用端口名称而不是端口号:
nmap -p https facebook.com
输出保持与上一个命令相同。
如果我们想要专门ping tcp端口,我们也可以指定:
nmap -p 443 -sT facebook.com
对于UDP端口,我们可以使用
nmap -p 443 -sU facebook.com
nmap不是唯一的工具。
我们也可以使用其他工具。
使用telnet在远程服务器上ping特定端口
Telnet是一个类似于SSH的远程连接工具,但是SSH比Telnet更安全。
在使用Telnet之前,我们应该确保已安装它。
在Debian/Ubuntu上,我们可以使用此命令安装Telnet:
sudo apt install telnet
有Telnet后,我们可以使用它来连接到远程系统的特定端口。
telnet facebook.com 443
如果成功,我们应该看到这样的输出:
telnet facebook.com 443 Trying 157.240.24.35… Connected to facebook.com. Escape character is '^]'.
我们可以使用键盘快捷键CTRL +关闭连接或者简单地按CTRL + C.
为什么端口没有回应?
到目前为止我展示的所有例子都有一个成功的回应。
但如果没有回应怎么办。
这是什么意思?
我可能没有响应的原因可能有一些可能的原因。
- 没有任何服务听端口,所以没有什么可以回应。
- 防火墙阻止了特定端口上的传入流量。
- 实际上,我们和所讨论的服务器之间存在网络连接问题。