すべてのアプリケーションが独自の完全な IP スタックを持っているのか、それともシステムにスタックがあり、すべてのアプリケーションがそれを使用しているのか疑問に思います。または、一部のレイヤー (アプリケーション レイヤーなど) はアプリケーションごとに分離されており、残りは共通ですか?
2 に答える
それは完全にアプリケーションに依存します。手短に言えば、一般的なフルスタック ネットワーキングの実装が既に存在し、各アプリケーションの再実装はできるだけ少なくなるということです。特に:
多くの最新のアプリケーションでのネットワーキングは、URL を受け取り、その URL にあったもののファイルまたはおそらく解析された JSON オブジェクトを返すライブラリ関数の呼び出しに制限されています。これらのアプリケーションは、基本的にレベル 7 アプリケーション層の上で動作します。ネットワーク スタック全体が共有されます。
Django Web アプリケーションなど、渡される HTTP をより詳細に制御する必要があるアプリケーションは、追加の HTTP 処理を実装します。これらはレベル 7 アプリケーション レイヤーで動作し、他のすべては共通ライブラリとオペレーティング システムに任せます。
HTTP が扱いにくい、または十分に高速でないデータベースなどのアプリケーションは、TCP の上に独自の上位レベルのプロトコルを実装します。たとえば、MySQL ネットワーク プロトコルです。これらのアプリケーションは、レベル 6 のプレゼンテーション層で動作しています。
Skype や一部の VPN などの通信アプリケーションには、遅延など、TCP がサポートできない特殊なネットワーク要件があります。したがって、これらのアプリケーションは、独自のレイヤー 5 セッションまたは場合によってはレイヤー 4 トランスポート プロトコルを実装する必要があります。オペレーティング システムは、他のすべてを処理します。
Wireshark パケット ダンパーなどのデバッグ ツールは、レイヤー 3 ネットワークおよびレイヤー 2 データ リンク レベルで動作する必要があります。このレベルで動作する必要がある他のアプリケーションには、新しいネットワーク プロトコルの作成を実験する人々が含まれます。しかし、これはほとんどのアプリケーションにとって価値のない多くの作業です。
最後に、イーサネットでさえ不十分であると考えられる高頻度の株式取引のような非常に特殊なアプリケーション領域があり、ネットワーク スタック全体が、インフィニバンド光ファイバー、カスタム プロトコルの使用などの別の実装でレベル 1 物理に置き換えられます。 、およびカスタム スイッチ。
通常、レイヤ 1 物理実装はハードウェアで固定されています。レイヤー 5 セッションを介したレイヤー 2 データ リンクは通常、オペレーティング システム カーネルに実装されますが、アプリケーションは必要なレベルで「プラグイン」できます。また、OpenSSL などのレイヤー 6 プレゼンテーション用の標準ライブラリや、レイヤー 7 アプリケーション用の標準ライブラリも多数あります。そのため、ほとんどのプログラムはネットワーク スタック全体、またはほぼすべてを共有しますが、特殊な要件を持つアプリケーションは、一部またはすべてのレイヤーをカスタム実装する場合があります。
アプリケーション層以上はアプリケーション内にあります。
残りはそうではありません。