私はネットワーキングに関するビデオ講義を行っていましたが、そこで講師はトランスポート層プロトコルとしてICMPについて言及しています。ただし、グーグルすると、ネットワーク層プロトコルとして説明しているさまざまなフォーラムが表示されます。これは私を大いに混乱させました。誰かが明確にすることができますか?
トランスポート層プロトコルは、エンドツーエンドでデータを送信し、信頼性を保証する(または明示的に保証しない)ことに関係しています。 TCPは、あるコンピューターから別のコンピューターにデータを送信するために使用され、データが正しく転送されるようにするために必要なロジックを含みます。一方、UDPは、信頼性を確保しながら、あるコンピューターから別のコンピューターにデータを送信するために使用されます。
ICMPは実際にはこれを行いません。その仕事は、ルーターがインターネットの形と、さまざまなプロトコルでパケットを送信する方向を理解するのを支援することです。したがって、データが適切な場所にルーティングされるようにすることがその仕事であるが、実際にはデータをルーティングしないため、ネットワーク層プロトコルと見なされます。
お役に立てれば!
間違いなくそれはネットワーク層プロトコルです。トランスポート層と混同されることが多い理由は、ICMPがトランスポート層なしで機能するためです。例えば。 pingまたはtracerouteには、明確に定義されたポートがありません。代わりに、各マシンのtcp/ipスタックは、(他のすべてのアプリケーションの場合のように、ポートを検索して対応するアプリケーションに渡すのではなく)着信ICMPメッセージの処理と応答を担当します。
更新:
どうやらそれは読者を混乱させるように聞こえるので、ここに概念と意図を説明するリチャード・スティーブンスによって説明されたTCP/IPからのスナップショットがあります。
本からの引用。
「ICMPとIGMPのラベルが付いたプロトコルボックスを配置することは常に課題です。以前は、IPの付属物であるため、IPと同じレイヤーに表示しました。ただし、ここではIPの上に表示して、ICMPメッセージとIGMPメッセージを繰り返します。 IPデータグラムにカプセル化されています」
「いくつかのプロトコルとアプリケーション」が異なるタスクを担当する各レイヤーの標準的な概念(エンドツーエンドであるトランスポート)とは異なる動作するという概念を教えるネットワークがホップツーホップであるため)は困難であり、消化に時間がかかります。
次に学ぶべき最も重要なことは、
同じマシンから別のマシンに複数のsayコンソールを使用してpingを実行した場合でも、すべての個別のいわゆる接続を追跡できます(メッセージ交換に関連するだけで、それ以外の場合は接続がありません) tcpのように)
上記がどのように行われるかは、OS固有です。 Linuxスタックは、元のアプリケーション層がトリガーされたポートを含むICMPのデータフィールドに8バイトを配置します。これは、pingプログラムの同じ本でも説明されています。
同じことがARP/RARPなどの下位層プロトコルにも当てはまります。