IP層がネットワークスタックの上位層を認識するのはなぜですか?


7

IPパケットヘッダーには、「次のレベルのプロトコル」を保持する8ビットのプロトコルフィールド(オフセット9)があり、割り当てられた番号はRFC 790で指定されています。たとえば、TCPは6です。私の質問は、なぜIPなのかです。レイヤーはネットワークスタックの上位レイヤーを認識していますか?

ここに画像の説明を入力してください


1
何か回答がありましたか?もしそうなら、質問が永遠にポップアップし続けないように答えを受け入れ、答えを探します。または、独自の回答を提供して受け入れることもできます。
Ron Maupin

回答:


7

すべての「ヘッダー」には、何らかの「次のプロトコル」識別フィールドがあります。ネットワーク上では、データは1と0の文字列にすぎないため、これが必要です。受信エンドポイントには、次のビットが参照するものを解釈する方法が必要です。

次の1と0のセットを解釈する方法を明確に示すそのようなフィールドがない場合、次の32ビットがTCPシーケンス番号またはIP送信元アドレス(たとえば)であるかどうかを判断する方法はありません。これらのフィールドはどちらも実際には32ビットであるため、これらの1と0が実際に何を意味するかをプログラムで判断する方法はありません-ある種の「次のプロトコル」フィールド以外は。


これは100%正しいわけではありません。各プロトコルにこれがあるわけではありません。たとえば、tcp / udpでは、プロトコルから派生し、ローカルな意味しかありません。ポート17782は、最初にブラウザがHTTP用に使用し、次にダウンロードクライアントがFTPを使用して使用できます。また、たとえばMPLSにはそのようなフィールドはまったくなく、すべてコンテキストによって定義されます。
KillianDS、2015

@KillianDS私はあなたのポイントを理解しています。TCP / UDPがそれぞれの宛先に到達すると、その時点で残っているのはアプリケーションがビットのストリームを単に受信/送信することだけです...そしてその時点で、アプリケーションまでさらにカプセル化/セッションの識別が必要かどうかを判断します。そして、MPLSに関しては、true、それはヘッダーにはありませんが、インターフェイスは明示的にMPLSタグを予期するように構成されているため、これはルールというよりも例外のように見えます。それでもなお、私はあなたの主張を確認し、認めます-私の回答を自由に編集して改善してください。
Eddie

2

IPv4プロトコルフィールドを使用すると、エンドポイントはパケット内のデータのタイプを判別できます。エンドポイントのIP層は、プロトコルフィールドを使用して、パケットを渡すプロトコルを決定します。


0

ウィキペディアから:

レイヤー3:ネットワークレイヤー

ネットワーク層は、あるノードから同じネットワークに接続されている別のノードに可変長データシーケンス(データグラムと呼ばれます)を転送する機能的および手続き的な手段を提供します。ネットワークとは、多くのノードを接続できる媒体であり、すべてのノードにアドレスがあり、ネットワークに接続されたノードは、メッセージのコンテンツと宛先のアドレスを提供するだけで、ネットワークに接続された他のノードにメッセージを転送できます。ノードを使用して、ネットワークにメッセージを宛先ノードに配信(「ルーティング」)する方法を見つけさせます。ネットワークはメッセージのルーティングに加えて、メッセージをいくつかのフラグメントに分割し、各フラグメントを個別のルートで配信し、フラグメントを再構成し、配信エラーを報告するなど、メッセージ配信を実装する場合としない場合があります。

ネットワーク層でのデータグラム配信の信頼性は保証されていません。多数の層管理プロトコル、管理付属書、ISO 7498/4で定義されている機能がネットワーク層に属しています。これらには、ルーティングプロトコル、マルチキャストグループ管理、ネットワーク層の情報とエラー、およびネットワーク層のアドレス割り当てが含まれます。これらをネットワーク層に属させるのはペイロードの機能であり、それらを運ぶプロトコルではありません。

各レイヤーは、そのレイヤーをサポートします。つまり、OSIモデルの設計方法です。

ここに画像の説明を入力してください


6
NEコミュニティへようこそ。私は先に進んで、それがあなたのためにウィキペディアから直接来たように見えるコンテンツを引用しました。Stack Exchangeのサイトでは、クレジットが期日どおりに提供されるようにし、盗用の非難を避けたいと思います。他のサイトからのコンテンツを引用することは問題ありませんが、それが将来の元となった参照を提供してください。
YLearn

0

複数の上位層プロトコルをカプセル化できるプロトコルには、その上位層プロトコルが何かを示す何らかの方法が必要です。イーサネットはEthertypeフィールドを使用し、0x0800はIPを示し、0x0806はARPを示します。TCPはよく知られたポート番号を使用します。たとえば、80はHTTPを表します。HTTPはContent-Type:ヘッダーフィールドを使用します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.