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 スタック自体によって、エコー応答を要求の発信元プロセスにルーティングするためにも使用されます (トランスポート層ポート番号と非常によく似ています)。