ICMP プロトコル 1 ポート xxx が ping 交換で到達不能であることの正確な意味

ICMP プロトコル 1 ポート xxx が ping 交換で到達不能であることの正確な意味

ping セッションの tcpdump には次の 2 行が表示されます。

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

最初のメッセージは理解できました。これは、 10.8.0.10 へのパケットでsomehostメインを煩わせるのではgatewayなく、そのままルーティングするように指示しているだけですothergateway

しかし、2 番目のメッセージは何を意味するのでしょうか。17 ミリ秒後に表示され、関連しているようです。protocol 1 port XXXこのコンテキストで何が起こっているのでしょうか。到達できないのは正確には何でしょうか。私の知る限り、ICMP (= プロトコル 1) にはポートがありません。これは何を意味するのでしょうか。

答え1

これはおそらくICMP 制御メッセージ タイプ 3 (宛先到達不能) コード 3 (ポート到達不能)

これは、宛先の TCP または UDP ポートに関連付けられたサーバー プロセスが存在しないことを意味します。

「UDP の 1 つのルールは、UDP データグラムを受信し、宛先ポートがプロセスが使用しているポートと一致しない場合、UDP は ICMP ポート到達不能で応答することです。」- からTCP/IP イラストレイテッド、スティーブンス

なぜUDPなのか?このpingコマンドは伝統的にICMPエコーリクエストを使用して実装されていますが、一部のプラットフォームでは、一部のツールは他のプロトコルを使用できます。例は次のとおりです。nmap -sU

答え2

protocol 1 port XXXこの文脈には何があるのでしょうか。

プロトコル番号 1 は ICMP です。ICMP はポートを使用しませんが、ここでは簡単にするために と呼ばれる 16 ビットの識別子を使用しますport。(おそらくプログラマーは区別する気にはなれなかったか、ラベルによってユーザーが混乱するでしょうidentifier。)

識別子フィールドは、NAT ルーターによって応答を元の NAT セッションにマッピングするためにも使用され、もちろん、ローカル IP スタック自体によって、エコー応答を要求の発信元プロセスにルーティングするためにも使用されます (トランスポート層ポート番号と非常によく似ています)。

関連情報