ping 交換中 ICMP 協定 1 port xxx unreachable 的確切意義

ping 交換中 ICMP 協定 1 port xxx unreachable 的確切意義

ping 會話的 tcpdump 顯示以下兩行:

IP gateway.comp.com > somehost.comp.com: ICMP redirect 10.8.0.10 to host othergateway.comp.com, length 68
IP gateway.comp.com > somehost.comp.com: ICMP 10.8.0.10 protocol 1 port 21475 unreachable, length 68

我明白第一條訊息。它只是告訴somehost不要將gateway資料包發送到 10.8.0.10 來打擾主程序,而是直接將它們路由到othergateway

但第二條訊息是什麼意思呢?它晚了 17 毫秒,似乎是相關的。在這個背景下是什麼protocol 1 port XXX。到底是什麼是遙不可及的呢? ICMP(=協定 1)沒有端口,據我所知,這是什麼意思?

答案1

這大概是ICMP 控制訊息類型 3(目標不可達)代碼 3(連接埠不可達)

這意味著目標處沒有與該 TCP 或 UDP 連接埠關聯的伺服器進程。

“UDP 的一條規則是,如果它收到 UDP 數據報並且目標端口與某個進程正在使用的端口不對應,則 UDP 會以無法訪問的 ICMP 端口進行響應。”- 從TCP/IP 插圖,史蒂文斯

為什麼選擇UDP?該ping命令傳統上是使用 ICMP 回顯請求來實現的,但在某些平台上,某些工具可以使用其他協定。一個例子是nmap -sU

答案2

在這個背景下是什麼protocol 1 port XXX

1 號協議是 ICMP。 ICMP 不使用端口,但它使用 16 位標識符,port為簡單起見,此處引用該標識符。 (也許程式設計師懶得去區分,否則使用者會對標籤感到更加困惑identifier。)

NAT 路由器也會使用識別碼欄位將回覆對應到原始 NAT 會話,當然,本機 IP 堆疊本身也使用該識別碼欄位將回顯回覆路由回發起請求的進程 - 非常類似於傳輸層連接埠號碼。

相關內容