一、端口號為什么不能ping?
Ping 是一種網絡工具,經常用于測試兩臺計算機之間的網絡連接是否正常。Ping 使用 Inte.NET 控制消息協議(ICMP)來發送 ICMP 請求消息到目標計算機,如果目標計算機正常工作并且與網絡連接正常,它會回復 ICMP 響應消息。這是一種常用于測試網絡可達性和測量網絡延遲的工具。
然而,Ping 不是通過端口號來測試網絡連接的工具。它使用 ICMP 協議,而不是傳統的基于端口號的協議,如傳輸控制協議(TCP)或用戶數據報協議(UDP)。因此,Ping 不會針對特定的端口號進行測試,而是測試目標計算機是否能夠響應 ICMP 請求。
綜上所述,ping不能驗證系統端口號是否可用,主要原因如下:
-
協議不同:Ping 使用 ICMP 協議,而不是 TCP 或 UDP 協議。系統端口號通常與 TCP 或 UDP 協議相關聯。因此,Ping 無法測試特定的端口是否處于監聽狀態。
-
ICMP 請求與端口號無關:Ping 發送的 ICMP 請求消息是一種用于測試網絡可達性的探測工具,它只是發送一個消息給目標主機,請求一個簡單的回復。它不包含與端口號相關的信息。
-
端口是傳輸層概念:端口號是傳輸層協議(如 TCP 和 UDP)中的概念,用于區分不同的網絡應用程序或服務。Ping 位于網絡層,更專注于測試主機之間的可達性,而不關心傳輸層上的端口。
二、如何驗證端口號可用?
常見的用于驗證端口號是否可用的工具有telnet、curl、nc(netcat)、nmap等
-
使用telnet驗證端口:
[root@localhost ~]# telnet 192.168.15.137 22
Trying 192.168.15.137...
Connected to 192.168.15.137.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.4
Connection closed by foreign host.
-
使用curl驗證端口(還是調用telnet實現):
[root@localhost ~]# curl -v telnet://192.168.15.137:22
* About to connect() to 192.168.15.137 port 22 (#0)
* Trying 192.168.15.137...
* Connected to 192.168.15.137 (192.168.15.137) port 22 (#0)
SSH-2.0-OpenSSH_7.4
* Send fAIlure: Broken pipe
* Closing connection 0
curl: (55) Send failure: Broken pipe
-
使用curl驗證端口:
[root@localhost ~]# curl 192.168.15.137:22
SSH-2.0-OpenSSH_7.4
Protocol mismatch.
curl: (56) Recv failure: Connection reset by peer
-
使用nc驗證端口:
[root@localhost ~]# nc -zv 192.168.15.137 22
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 192.168.15.137:22.
Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.
-
使用nmap驗證端口:
[root@localhost ~]# nmap -p 22 192.168.15.137
Starting Nmap 6.40 ( http://nmap.org ) at 2023-10-10 15:13 CST
Nmap scan report for 192.168.15.137
Host is up (0.000057s latency).
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 1 IP address (1 host up) scanned in 0.26 seconds
總結,ping、telnet、curl、nc、nmap等工具功能和用途有所不同,在工作中使用的都很頻繁,它們能極大地提升我們的工作效率,你學會了嗎?