ホームページ  >  記事  >  運用・保守  >  Linuxプロトコルスタックとは何ですか?

Linuxプロトコルスタックとは何ですか?

WBOY
WBOYオリジナル
2022-07-13 16:05:532398ブラウズ

Linux では、プロトコル スタックは、ネットワーク内のすべての層のプロトコルの合計であるコンピュータ ネットワーク プロトコル スイートの特定のソフトウェア実装です。プロトコル スイート内のプロトコルは、通常、1 つのみのために設計されています。プロトコル スタックはネットワーク内のファイル転送プロセスを反映するため、設計が容易になります。

Linuxプロトコルスタックとは何ですか?

#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。

Linux のプロトコル スタックとは

プロトコル スタック (英語: Protocol stack) は、プロトコル スタックとも呼ばれ、コンピューター ネットワーク プロトコル スイートの特定のソフトウェア実装です。プロトコル スイート内のプロトコルは通常、1 つの目的のみのために設計されるため、設計が容易になります。各プロトコル モジュールは通常、その上下にある他の 2 つのプロトコル モジュールと通信するため、通常はプロトコル スタック内の層として考えることができます。最下位レベルのプロトコルは常にハードウェアとの物理的な相互作用を記述します。上級レベルごとにさらに多くの機能が追加されます。ユーザー アプリケーションはトップレベル プロトコルのみを処理します。

#説明: ネットワーク内のすべてのプロトコル層の合計は、ネットワーク内のファイル転送プロセスを反映します

Linux ストレージ プロトコル スタックの概要:

Linuxプロトコルスタックとは何ですか?

データ フロー:
アプリケーションは、システム コールを通じて書き込みリクエストを発行します。最終的な目標は、データをディスクに書き込むことです。ファイル システムは位置決めを担当します。これにより、リクエストの場所が書き込まれ、それがブロック デバイスに必要なブロックに変換され、リクエストがデバイスに送信されます。

    このプロセスではメモリがディスク キャッシュの役割を果たし、上部と下部が非同期で実行される 2 つのプロセスに分離されます。上部については、データをメモリに保持するのが最適です。メソッド、将来変更されるかどうかを予測する方法がないため、同じ場所を頻繁に変更する必要がある場合は、ディスクとの継続的なデータ同期は必要ありません。後半では、データがページ キャッシュ (Page Cache) からディスクに同期され、発行されたリクエストがリクエストにパッケージ化されます。リクエストには一連の BIOS が含まれており、各 BIOS には必要なデータ ページが含まれています。同期されること。
  1. #アプリケーション層

アプリケーションはシステム コールを通じてファイルにアクセスします。たとえば、オープン コール

システム コール

ユーザー アプリケーションがカーネルによって提供されるさまざまなサービスにアクセスして使用する方法は、システム コールを介して行われます。 カーネルは、アプリケーションがシステム ハードウェアおよびオペレーティング システム リソースにアクセスできる一連のシステム コール インターフェイスを提供します。 アプリケーションがシステム コール インターフェイスを呼び出す -> カーネル -> ハードウェアを操作する -> カーネルに戻る -> アプリケーション

ストレージ システムに関連する主なものは、読み取り、書き込み、オープンです

“mmap() (ファイルハンドル fd で指定された) ファイルのオフセット位置から始まる長さのブロックをメモリ領域にマッピングします。これにより、ファイルの特定のセクションがプロセスのアドレス空間にマッピングされます。プログラムは、ファイルにアクセスするためにメモリにアクセスできます。"
"典型的な例は、/dev/mem を使用して、MMU がアクセスできるいくつかの物理アドレスをアプリケーション層の仮想アドレスにマップし、特定の物理アドレスを直接アクセスできるようにすることです。アプリケーション層でアクセスされます。簡単なドライバー開発。」


仮想ファイル システム

共通の API セットを使用することで、Linux は複数のデバイスで複数のファイル システムをサポートできます。 。 ファイル システムは、ストレージ デバイス上にファイルとデータを保存および整理するためのメカニズムです。 Linux は複数のファイル システムをサポートします。

「仮想ファイル システムは、さまざまな特定のファイル システム上に抽象化層を確立することで、異なるファイル システム間の差異を保護します。仮想ファイル システムの階層化アーキテクチャを通じて、ファイルを操作するときに、関連するファイルが配置されている特定のファイル システムの詳細を気にする必要はありません。"
"異なるストレージ デバイスや異なるファイル システム間でこの種の操作を可能にするのは、仮想ファイル システムです。"
VFS が提供する共通 API は次のとおりです:

mount(), umount() …
 open(),close() …
 mkdir() …


ファイル システム

ファイル システムのこの層については誰もがよく知っていると思います。ほとんどの Linux ディストリビューションで使用されるデフォルトのファイル システムは通常 ext4 です。さらに、新世代の btrfs も登場しようとしています。ファイル システムの種類に関係なく、ファイル システムは次のような一連の mkfs.xxx コマンドによって作成されます。
mkfs.ext4 /dev/sda
mkfs.btrfs /dev/sdb
カーネルでサポートされているファイル システム タイプは、カーネル ディレクトリ ツリーの fs ディレクトリの内容から確認できます。

一般ブロック デバイス層

この層の役割は、異なるハード ドライブが異なる IO インターフェイスを提供することです。カーネルは、この乱雑なインターフェイスは、管理するには、これらのインターフェイスを抽象化して、統一された外部インターフェイスを形成する必要があります。この方法では、どのような種類のハードディスクやドライバーを使用していても、外部的には、それらが提供する IO インターフェイスに違いはなく、すべて扱われます。ブロックデバイスと同様です。 したがって、あるレベルで変更が行われると、ext3、ext4、またはその他のファイル システムであるかどうかに関係なく、すべてのファイル システムに直接影響します。このレベルで変更が行われる限り、すべてのファイル システムに影響が及びます。影響を受ける、影響を与える。

ハード ドライブ

一般的なハード ドライブ タイプには、PATA、SATA、AHCI などがあります。Linux システムでは、さまざまなハード ドライブに提供されるドライバー モジュールは、通常、カーネル ディレクトリ ツリー drivers / に保存されます。 ata、および汎用ハード ディスク ドライブの場合は、カーネルに直接コンパイルされ、モジュールとして表示されない可能性があります。これは、/boot/config-xxx.xxx ファイルを表示することで確認できます。

推奨学習: Linux ビデオ チュートリアル

以上がLinuxプロトコルスタックとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。