ホームページ システムチュートリアル Linux オペレーティング システムの理解を覆す - Linux ディストリビューションの概要

オペレーティング システムの理解を覆す - Linux ディストリビューションの概要

Feb 13, 2024 pm 09:15 PM
linux Linuxチュートリアル Linuxシステム Linuxコマンド シェルスクリプト NICドライバー 埋め込みLinux Linux を始める Linux学習

あなたが上級プログラマーであろうと初心者であろうと、Windows または macOS ユーザーであっても、コンピューターのオペレーティング システムについてある程度の知識があるのであれば、Linux という名前は間違いなく馴染みがあるでしょう。ただし、Linux オペレーティング システムの表面をなぞっただけかもしれません。実際、多くの Linux ディストリビューションがあり、それぞれに独自の機能とアプリケーション シナリオがあります。以下では、いくつかの一般的な Linux ディストリビューションを紹介し、オペレーティング システムの従来の理解を覆すのに役立ちます。

複数のデバイスがネットワークを介して相互に通信できるようにし、ネットワーク相互接続におけるさまざまなデバイスの互換性の問題を解決するために、国際標準化機構はオープン システム相互接続参照モデル (オープン システム相互接続参照モデル) を策定しました。 OSIネットワークモデルは、主にアプリケーション層、プレゼンテーション層、セッション層、トランスポート層、ネットワーク層、データリンク層、物理層の7層で構成されています。

オペレーティング システムの理解を覆す - Linux ディストリビューションの概要
各層は次のような異なる機能を担当します:

•アプリケーション層は、アプリケーションに統合インターフェイスを提供する責任があります;

•プレゼンテーション層は、データを別のシステムと互換性のある形式に変換する役割を果たします。

•セッション層。プレゼンテーション層エンティティ間の通信セッションの確立、管理、終了を担当します。

•トランスポート層、エンドツーエンドのデータ送信を担当します;

•ネットワーク層。データのルーティング、転送、断片化を担当します。

•データ リンク層。データ フレーミングとエラー検出、および MAC アドレス指定を担当します。

•物理層。物理ネットワーク内でのデータ フレームの送信を担当します。

OSI モデルは複雑すぎるため、提案されているのは概念的かつ理論的な階層化だけであり、具体的な実装計画は提供されていません。実際、より一般的で実用的な 4 層モデルは TCP/IP ネットワーク モデルであり、Linux システムはこのネットワーク モデルに従ってネットワーク プロトコル スタックを実装します。

TCP/IP のネットワーク モデルは、アプリケーション層、トランスポート層、ネットワーク層、ネットワーク インターフェイス層の 4 層で構成されており、各層の機能は次のとおりです。

•アプリケーション層。HTTP、DNS、FTP などの一連のアプリケーションをユーザーに提供する役割を果たします。;

•トランスポート層。TCP、UDP などのエンドツーエンド通信を担当します。;

•ネットワーク層。IP、ICMP などのネットワーク パケットのカプセル化、フラグメンテーション、ルーティング、転送を担当します。;

•ネットワーク インターフェイス層。ネットワーク パケット フレーミング、MAC アドレス指定、エラー検出、ネットワーク カードを介したネットワーク フレームの送信など、物理ネットワーク内でのネットワーク パケットの送信を担当します。

OSI ネットワーク モデルと比較して、TCP/IP ネットワーク モデルは非常にシンプルで覚えやすいため、両者の関係は次のとおりです。

ただし、私たちがよく話題にする 7 層および 4 層の負荷分散は、OSI ネットワーク モデルで記述されており、第 7 層はアプリケーション層に相当し、第 4 層はトランスポート層に相当します。

オペレーティング システムの理解を覆す - Linux ディストリビューションの概要
Linux ネットワーク プロトコル スタック

私たちの体をアプリケーション層のデータと比較し、基本的な衣服をトランスポート層の TCP ヘッダーと比較し、コートをネットワーク層の IP ヘッダーと比較し、帽子と靴をフレーム ヘッダーと比較できます。ネットワークインターフェース層とフレームの終端。

冬の季節、家から遊びに行くときは、当然のことながら、まずベースの服を着て、次に暖かいジャケットを着て、最後に帽子と靴を履いて出かけることになります。これは、TCP プロトコルを適用したときのようなものです。通信ネットワーク パケットが送信されると、アプリケーション層のデータはカプセル化され、ネットワーク プロトコル スタックに従って層ごとに処理されます。

下の図から、各層のアプリケーション層データのカプセル化形式がわかります。

で:###

•トランスポート層はアプリケーション データの前に TCP ヘッダーを追加します;オペレーティング システムの理解を覆す - Linux ディストリビューションの概要
•ネットワーク層、TCP パケットの前に IP ヘッダーを追加します;

•ネットワーク インターフェイス層は、IP パケットの前後にフレーム ヘッダーとフレーム トレーラーを追加します。

これらの新しい追加、ヘッダーと末尾はすべて独自の機能を持ち、特定のプロトコル形式に従って埋められます。各層は独自のプロトコル ヘッダーを追加するため、必然的にネットワーク パケットのサイズが増加します。ただし、物理リンクははいかなるサイズのデータ​​ パケットも送信できないため、イーサネットでは最大送信単位 (MTU) が 1500 バイトと規定されており、これにより 1 回の送信の最大 IP パケット サイズも指定されます。

ネットワーク パケットが MTU サイズを超えると、断片化された IP パケットが MTU サイズを超えないようにするために、ネットワーク層で断片化されます。MTU が小さい場合、より多くのパケットが必要になるため、ネットワーク スループット容量が低下します。逆に、MTU が大きいほど、必要なパケットが小さくなり、ネットワーク スループットが向上します。

TCP/IP ネットワーク モデルとネットワーク パケットのカプセル化原理を理解した後は、Linux ネットワーク プロトコル スタックがどのようなものかを推測できたはずです。実際には、TCP/IP の 4 層構造に似ています。

オペレーティング システムの理解を覆す - Linux ディストリビューションの概要
上の図のネットワーク プロトコル スタックから、次のことがわかります:

•アプリケーションはシステム コールを通じてソケット層と対話する必要があります;

•ソケット層の下には、トランスポート層、ネットワーク層、ネットワーク インターフェイス層があります。

•最下層はネットワーク カード ドライバーとハードウェア ネットワーク カード デバイスです;

Linux のネットワーク パケット受信プロセス

ネットワーク カードは、ネットワーク パケットの送受信を担当するコンピュータのハードウェアの一部です。ネットワーク カードがネットワーク パケットを受信すると、DMA テクノロジを通じてネットワーク パケットをリング バッファに入れます。これはリング バッファ: バッファはカーネル メモリ内のネットワーク カード ドライバ内にあります。

ネットワーク パケットを受信した後、ネットワーク パケットが到着したことをオペレーティング システムにどのように伝える必要がありますか?

最も簡単な方法は、割り込みをトリガーすることです。つまり、ネットワーク カードがネットワーク パケットを受信するたびに、割り込みをトリガーしてオペレーティング システムに通知します。

ただし、問題があります。高性能ネットワーク シナリオでは、ネットワーク パケットの数が非常に多くなり、多数の割り込みがトリガーされます。CPU が割り込みを受け取ると、CPU が割り込みを受け取ると、実行中の処理を停止します。これらのネットワーク パケットを処理するには、処理が完了した後でのみ、他の処理を続行するために戻ります。割り込みを頻繁にトリガーすると、CPU に無限の処理割り込みが発生し、他のタスクが実行できなくなる可能性があります。全体的な効率。

そこで、頻繁な割り込みによって引き起こされるパフォーマンスのオーバーヘッドを解決するために、Linux カーネルはバージョン 2.6 で、「割り込みとポーリング」を組み合わせてネットワーク パケットを受信する NAPI メカニズムを導入しました。その中心的な概念は、割り込みを使用しないことです。データを読み取りますが、最初に割り込みを使用してデータ受信のためにサービス プログラムを起動し、次にポーリング メソッドを使用してデータをポーリングします。

例えば、ネットワークパケットが到着すると、ネットワークカードはハードウェア割り込みを発生させ、ネットワークカードのハードウェア割り込み処理関数が実行されますが、割り込み処理関数の処理後に「一時的に割り込みをマスクする」必要があります。を起動し、データをポーリングして処理するために「ソフト割り込み」を起動します。新しいデータがなくなるまで割り込みは再開されません。このようにして、1 回の割り込みで複数のネットワーク パケットが処理されるため、ネットワーク カードによるパフォーマンスのオーバーヘッドが軽減されます。中断。

ソフト割り込みはネットワーク パケットをどのように処理しますか?データはリング バッファからカーネル構造体 sk_buff バッファにコピーされ、レイヤーごとの処理用のネットワーク パケットとしてネットワーク プロトコル スタックに渡されるようになります。

まず、ネットワークインターフェイス層に入ります。この層では、パケットの正当性がチェックされ、不正な場合は破棄されます。正当な場合は、そのパケットの上位層プロトコルの種類が決まります。 IPv4 や IPv6 などのネットワーク パケットが検出され、フレーム ヘッダーとフレーム トレーラーが削除されて、ネットワーク層に渡されます。

ネットワーク層では、IP パケットを取り出し、上位層に渡して処理するか転送するかなど、ネットワーク パケットの次の方向を決定します。ネットワーク パケットがローカル マシンに送信されることが確認されると、IP ヘッダーを見て上位層プロトコルの種類が TCP か UDP かを確認し、IP ヘッダーを削除してローカル マシンに渡します。トランスポート層。

トランスポート層は、TCP ヘッダーまたは UDP ヘッダーを取り出し、「送信元 IP、送信元ポート、宛先 IP、宛先ポート」の 4 つのタプルを識別子として使用して、対応するソケットを見つけ、データをソケットの受信側にコピーします。バッファ。

最後に、アプリケーション層プログラムはソケット インターフェイスを呼び出し、新しく到着したデータをカーネルのソケット受信バッファからアプリケーション層に読み取ります。

この時点で、ネットワーク パケットの受信処理は終了です。下図の左側からもネットワーク パケットの受信処理がわかります。右側はその逆で、送信処理です。ネットワークパケット。

オペレーティング システムの理解を覆す - Linux ディストリビューションの概要

Linux のネットワーク パケット送信プロセス

上の図の半分に示されているように、ネットワーク パケットの送信プロセスは受信プロセスとまったく逆です。

まず、アプリケーションはデータ パケットを送信するために Socket のインターフェイスを呼び出します。これはシステム コールであるため、ユーザー モードからカーネル モードのソケット層に落ちます。ソケット層はアプリケーション層のデータをコピーします。ソケット送信バッファに。

次に、ネットワーク プロトコル スタックはソケット送信バッファからデータ パケットを取り出し、TCP/IP プロトコル スタックに従って上から下まで層ごとに処理します。

TCP 伝送プロトコルを使用してデータを送信する場合、TCP ヘッダーがトランスポート層に追加されてからネットワーク層に渡され、ネットワーク層はデータ パケットに IP パケットを追加して、ルーティング テーブルにクエリを実行してネクスト ホップ IP を取得し、MTU サイズに応じてフラグメント化します。

断片化されたネットワーク パケットはネットワーク インターフェイス層に送信され、ARP プロトコルを通じてネクスト ホップの MAC アドレスが取得され、フレーム ヘッダーとフレーム トレーラーが追加されてパケット送信キューに配置されます。 。

これらが準備された後、ソフト割り込みがトリガーされ、送信する必要のある新しいネットワーク パケットがあることをネットワーク カード ドライバーに伝えます。最後に、ドライバーは DMA を通じてパケット送信キューからネットワーク パケットを読み取り、それらを配置しますハードウェア ネットワーク カードのキューに格納され、物理ネットワーク カードがそれを送信します。

要約

コンピュータは通常、通信ネットワーク カード、スイッチ、ルータなどのネットワーク デバイスによって相互に接続されています。ネットワーク デバイスの異種性のため、国際標準化機構は 7 層の OSI ネットワーク モデルを定義しています。ただし、このモデルは比較的複雑なため、実際のアプリケーションでは使用されません。代わりに、より単純化された TCP/IP モデルが使用されます。Linux ネットワーク プロトコル スタックは、このモデルに従って実装されます。

TCP/IP モデルは主に 4 つの層に分かれています: アプリケーション層、トランスポート層、ネットワーク層、ネットワーク インターフェイス層です。各層は異なる責任を負います。これは Linux ネットワーク プロトコル スタックの主要コンポーネントでもあります。

アプリケーションがソケット インターフェイスを介してデータ パケットを送信すると、データ パケットはネットワーク カード キューに送信される前にネットワーク プロトコル スタックによって上から下までレイヤーごとに処理され、その後ネットワーク カードはネットワークパケットアウト。

ネットワーク パケットを受信すると、最終的にアプリケーション プログラムに送信される前に、ネットワーク プロトコル スタックの下から上まで層ごとに処理する必要があります。

つまり、Linux は無料のオープンソース オペレーティング システムとしてテクノロジーの分野に登場し、広く使用されています。経験豊富なプログラマーであっても、一般ユーザーであっても、自分に合った Linux ディストリビューションを選択すると、実際に多くの予期せぬメリットがもたらされます。この記事が Linux ディストリビューションについての理解を深めるのに役立つと思います。また、ご自身のコンピュータで Linux の魅力を体験していただければ幸いです。

以上がオペレーティング システムの理解を覆す - Linux ディストリビューションの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

web.xmlを開く方法 web.xmlを開く方法 Apr 03, 2025 am 06:51 AM

web.xmlファイルを開くには、次の方法を使用できます。テキストエディター(メモ帳やテキストエディットなど)を使用して、統合開発環境(EclipseやNetBeansなど)を使用してコマンドを編集できます(Windows:Notepad web.xml; Mac/Linux:Open -A Textedit Web.xml)

マルチスレッドをC言語で実装する4つの方法 マルチスレッドをC言語で実装する4つの方法 Apr 03, 2025 pm 03:00 PM

言語のマルチスレッドは、プログラムの効率を大幅に改善できます。 C言語でマルチスレッドを実装する4つの主な方法があります。独立したプロセスを作成します。独立して実行される複数のプロセスを作成します。各プロセスには独自のメモリスペースがあります。擬似マルチスレッド:同じメモリ空間を共有して交互に実行するプロセスで複数の実行ストリームを作成します。マルチスレッドライブラリ:pthreadsなどのマルチスレッドライブラリを使用して、スレッドを作成および管理し、リッチスレッド操作機能を提供します。 Coroutine:タスクを小さなサブタスクに分割し、順番に実行する軽量のマルチスレッド実装。

Linuxは何に最適なものですか? Linuxは何に最適なものですか? Apr 03, 2025 am 12:11 AM

Linuxは、サーバー管理、組み込みシステム、デスクトップ環境として最適です。 1)サーバー管理では、LinuxはWebサイト、データベース、アプリケーションをホストするために使用され、安定性と信頼性を提供します。 2)組み込みシステムでは、Linuxは柔軟性と安定性のため、スマートホームおよび自動車電子システムで広く使用されています。 3)デスクトップ環境では、Linuxは豊富なアプリケーションと効率的なパフォーマンスを提供します。

Debian Hadoopの互換性はどうですか Debian Hadoopの互換性はどうですか Apr 02, 2025 am 08:42 AM

DebianLinuxは、その安定性とセキュリティで知られており、サーバー、開発、デスクトップ環境で広く使用されています。現在、DebianとHadoopとの直接的な互換性に関する公式の指示が不足していますが、この記事では、DebianシステムにHadoopを展開する方法について説明します。 Debianシステムの要件:Hadoop構成を開始する前に、DebianシステムがHadoopの最小動作要件を満たしていることを確認してください。これには、必要なJavaランタイム環境(JRE)とHadoopパッケージのインストールが含まれます。 Hadoop展開手順:Hadoopをダウンロードして解凍:公式ApachehadoopのWebサイトから必要なHadoopバージョンをダウンロードして解決します

GOを使用してOracleデータベースに接続するときにOracleクライアントをインストールする必要がありますか? GOを使用してOracleデータベースに接続するときにOracleクライアントをインストールする必要がありますか? Apr 02, 2025 pm 03:48 PM

GOを使用してOracleデータベースに接続するときにOracleクライアントをインストールする必要がありますか? GOで開発するとき、Oracleデータベースに接続することは一般的な要件です...

Debian文字列は、複数のブラウザと互換性があります Debian文字列は、複数のブラウザと互換性があります Apr 02, 2025 am 08:30 AM

「DebianStrings」は標準的な用語ではなく、その特定の意味はまだ不明です。この記事は、ブラウザの互換性について直接コメントすることはできません。ただし、「DebianStrings」がDebianシステムで実行されているWebアプリケーションを指す場合、そのブラウザの互換性はアプリケーション自体の技術アーキテクチャに依存します。ほとんどの最新のWebアプリケーションは、クロスブラウザーの互換性に取り組んでいます。これは、次のWeb標準と、適切に互換性のあるフロントエンドテクノロジー(HTML、CSS、JavaScriptなど)およびバックエンドテクノロジー(PHP、Python、Node.jsなど)を使用することに依存しています。アプリケーションが複数のブラウザと互換性があることを確認するには、開発者がクロスブラウザーテストを実施し、応答性を使用する必要があることがよくあります

rootとしてmysqlにログインできません rootとしてmysqlにログインできません Apr 08, 2025 pm 04:54 PM

ルートとしてMySQLにログインできない主な理由は、許可の問題、構成ファイルエラー、一貫性のないパスワード、ソケットファイルの問題、またはファイアウォール傍受です。解決策には、構成ファイルのBind-Addressパラメーターが正しく構成されているかどうかを確認します。ルートユーザー許可が変更されているか削除されてリセットされているかを確認します。ケースや特殊文字を含むパスワードが正確であることを確認します。ソケットファイルの許可設定とパスを確認します。ファイアウォールがMySQLサーバーへの接続をブロックすることを確認します。

libvは2つです libvは2つです Apr 03, 2025 pm 08:03 PM

私はLua-Libuvというプロジェクトを開発しましたが、私の経験を喜んで共有しています。プロジェクトの当初の意図は、libuv(cで書かれた非同期I/Oライブラリ)を使用して、C言語を深く学習せずに簡単なHTTPサーバーを構築する方法を探ることです。 ChatGptの助けを借りて、http.cの基本コードを完了しました。永続的な接続を扱うとき、私は正しいタイミングでリソースを閉鎖し、解放することに成功しました。最初は、接続を閉じることでメインプログラムを終了するシンプルなサーバーを作成しようとしましたが、いくつかの問題がありました。ストリーミングを使用してデータのブロックを送信しようとしましたが、機能している間、これによりメインスレッドがブロックされます。最終的に、私の目標はC言語を深く学ぶことではなかったので、このアプローチをあきらめることにしました。最後に、i

See all articles