為什麼不能ping連接埠號?如何驗證連接埠號碼可用?
2023.10.11
為什麼不能ping連接埠號?如何驗證連接埠號碼可用?
Ping 不是透過連接埠號碼來測試網路連線的工具,因此,Ping 不會針對特定的連接埠號碼進行測試,而是測試目標電腦是否能夠回應ICMP 要求。
一、連接埠號碼為什麼不能ping?
Ping 是一種網路工具,經常用於測試兩台電腦之間的網路連接是否正常。Ping 使用Internet 控制訊息協定(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等工具功能和用途有所不同,在工作中使用的都很頻繁,它們能大大提升我們的工作效率,你學會了嗎?