traceroute
の実装のように、誰かがUDPパケットを送信するとします。パケットのIPヘッダーにTTL of 1が含まれているため、最初のルーターはパケットを破棄し、送信者にICMP TimeExceeded応答を生成します。
ルーターには、送信者が生成して送信したICMP Time Exceededエラーメッセージを受信するという保証がありますか?
ICMPはUDPの上に実装されていますか?もしそうなら、ICMPの一部として実装されているエラー制御メカニズムはありますか?
かなり基本的な簡単な答えが欲しいのですが、質問をいくつかの方法で処理して、より明確になると思いました。
ICMPはUDPではなく、実際にはIPでもありません。これは、IPと並んで別のOSIレイヤー3プロトコル(ネットワークレイヤー)です。とはいえ、パケットの先頭にIP互換のヘッダーがあります。
ICMPパケットが配信される保証はありません。インターネット上の他のパケットと同じ配信保証があります:なし。確実に配信されるようにする試みはなく、再試行メカニズムもありませんが、IPヘッダーとICMPヘッダーの両方にチェックサムがあります。より高いレベルのプロトコルは、エラーを生成したパケットの送信を再試行する必要があります。これにより、別のTime Exceededパケットが生成され、最終的にこれらの1つが送信者によって受信されます。
http://www.networksorcery.com/enp/protocol/icmp.htm には、ICMPヘッダーの例(IPヘッダーと同じものの中にカプセル化されています)と、さまざまな種類のICMPメッセージに関する情報があります。
人々がこの投稿に反対票を投じて誤解していることを踏まえて、明確にします:
IPはインターネットの共通語です。パケットはIPヘッダーによってルーティングされます。ほとんどのアプリケーションレベルの通信では、プロトコルはIP(TCP、UDP、SCTPなど)内にカプセル化されます。
IP層の通信で問題が発生した場合、どのように通信しますか?これにはICMPが使用されます。 IPでIP層エラーを伝えることができますか?これは鶏が先か卵が先かという問題であり、RFCで示されているように、泥だらけになります。 ICMPメッセージにはIPヘッダーがあり、IPプロトコルはそれらのために予約されていますが、ICMPはIP層プロトコルであり、IPパケット内にカプセル化されていません。したがって、IPと一緒に使用されるプロトコルだと思います。
「ICMPがIPであるかどうか」については、一日中口論することができますが、私が認めるのは、そうです、それはIP、「一種の」です。
ICMPはUDPではなくIPですが、その通り、信頼性はありません。
これが リスト の使用法です。