iT邦幫忙

0

請問在win10的命令列下ping 某IP的指令時, 它是去掃瞄哪一個PORT來判斷是否活著?

我查到的資料說是 23 port(這也是 telnet 預設的port!)
但我發現很矛盾。

舉例,區網內有一個ip:192.168.1.101確定是活著的,
用ping去ping它回覆如下
「回覆自 192.168.1.101: 位元組=32 時間=1ms TTL=63」

但一般設備應該不會開啟 23 port服務才是,
所以我驗證想法

  1. 使用網路建議的方法 telnet 192.168.1.102 23時, 也的確連線不上, 回應如下:
    「正連線到 192.168.1.101...無法開啟到主機的連線, 在連接埠 23: 連線失敗」

  2. 實際執行 paping 指定23 port 的指令的確是回傳該設備的 23 port 沒有打開!回覆如下:


paping v1.5.5 - Copyright (c) 2011 Mike Lovell

Connecting to 192.168.1.101 on TCP 23:

Connection timed out
Connection timed out
Connection timed out
Connection timed out

Connection statistics:
Attempted = 4, Connected = 0, Failed = 4 (100.00%)
Approximate connection times:
Minimum = 0.00ms, Maximum = 0.00ms, Average = 0.00ms


所以ping 的指令卻能正確傳回設備活著的訊息難道這表示ping不是透過檢查23 port是否打開來判斷的?

如果ping不是透過檢查23 port是否打開來判斷的, 那它又是依據什麼來判斷的?

不知道我哪裡弄錯了?

樓下都有解釋了,
我這邊要關Ping的話就是把ICMP關掉即可,
防火牆裡面的PING不會是透過調整PORT來開關
一般我都建議把 ICMP 關掉,網管型交換器都能辦到
內部是在PING啥,打各分機問一下電腦死了沒很難嘛
還有要知道誰活著有更簡單的方法,每台電腦SHARE一個只有網管可以進去的FLODER,然後網管MOUNT到電腦內,哪台斷線看一下就知道了
或是有一堆有AGENT的管理軟體也能拿來用,不需要ICMP這種協定
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
3
黃彥儒
iT邦高手 1 級 ‧ 2021-06-10 00:36:15

Port是TCP和UDP的東西
Ping是ICMP的東西

嗯!這話我的理解是...ping與 port 是否有打開並沒有關係, 換句話說就算這設備所有的 port 都關起來(沒有服務), ping還是會回傳回覆是嗎?

如果我要寫一支程式來快速的掃瞄局網中所有的IP有哪些是活著的, 不知道要從哪個方向了?

黃彥儒 iT邦高手 1 級 ‧ 2021-06-10 01:41:26 檢舉

ARP

ARP +1

9
Ray
iT邦大神 1 級 ‧ 2021-06-10 00:48:21

你可能要先去熟習一下通訊工程裡面的 OSI 七層模型:

Ping 使用 ICMP 協定, 他是在 OSI 第三層裡面運行, 不會到第四層;

而你所熟知的 TCP/UDP port 屬於第四層協定, 所以 ICMP 用不到它們:

ICMP 協定並不是透過 Port 互連, 他使用 IP Datagram 來傳遞與回應:

OSI 網路七層模型的說明:
http://noc.twaren.net/~liangmc/nuk/nsm982/exam/A0963355.pptx

https://ithelp.ithome.com.tw/upload/images/20210610/20001787BdxRiCJWDu.jpg

0
bluegrass
iT邦高手 1 級 ‧ 2021-06-10 14:05:39

SON, 你應該用arp去來檢查

因為DEVICE也可以不回應PING的

windows的話, cmd指令是 arp -a

我要發表回答

立即登入回答