ネットワークプログラミングを学ぶNo.1【ネットワークの基礎】

序章:

北京時間: 2023/8/4/22:40、空は青く、野生は広大で、風が大地を吹いて牛や羊を見て、この時、私の心は高鳴り、とても幸せです、アハハハ!だって、今やっとシステムプログラミングの知識を学び終えた、あはははは!本当に努力は報われますよ!うおおお、空に向かって泣いて、忘れて、緊張しないで、ははは!今日、マルチスレッドの知識に関する最後のレッスンを終えたので、システム プログラミングとはしばらくおさらばできます。そう思うなら夢を見ているよ、ウーウーウー!私は頭の回転が速いので、システム プログラミング関連の知識を学ぶことが、実際にネットワーク関連の知識への道を開くことを知っています。さて、まだ良いニュースがあります。少なくとも私たちはオンラインでの学習を本格的に開始する予定です。システムプログラミング学習最終章のブログは明日更新します 最終章ということで文章が長くなり、乾物満載です!そして昨日は、予想通り、不眠症ではなかったようで、ぐっすり眠ったのですが、朝はまだ目が覚めず、8時の目覚まし時計も聞こえませんでした。理由はわかりません、ハハハ!このブログでは、本格的にネットワークの知識を学び始めましょう!

ここに画像の説明を挿入

ネットワークの基本を理解する

オペレーティング システムに関する知識を学んだ後、今度は正式にネットワークの学習に入ります。同様に、オペレーティング システムに関する知識は、ネットワークをより深く理解するための道を開くだけです。最も重要なことは、概念よりもネットワーク プロトコルの理解が重要です。プロトコルとは何ですか? 用途は何ですか? 現時点では、私たちは途方に暮れていると思いますが、このプロトコルがネットワークにとって非常に重要であることだけはわかっているので、基本から始めて、段階的にプロトコルに向かって進んでいきましょう。

ネットワーク開発の背景と関連概念の理解

前世紀、清政府がまだ爆竹を鳴らすために火薬を使用していた頃、欧米の資本主義勢力は軍需産業を精力的に発展させ始めており、それがわが国の無差別侵略に直結した。清朝は本当に豊かだったと言えますが、それが間接的に危機感の弱さにつながり、最終的には... 第二次世界大戦が終わるまでに、世界中で戦争が起こっていましたが、アメリカだけは、私たちがまだ飢えていたときに、すでにコンピューターを作り始めていました。

当時は技術がまだ非常に遅れていたため、多くの科学研究は多くの科学者の協力によって完了しましたが、当時インターネットがなかった時代、科学者全員が共同研究を完了するためにコンピュータを使用したい場合、科学者のコンピュータがすべて連携していることが前提ですが、たとえ科学者のコンピュータが連携していても、コンピュータ内のデータを共有することはできません。本質は、コンピュータ内のデータをエクスポートして別のコンピュータに転送できることですが、大規模な共同作業では、この作業モードには大きな欠点があるため、科学者はコンピュータ内のデータを送信するためにケーブル/電波を使用し始めました。 、科学者 このような共同作業の下で、彼らはオペレーティング システムの研究開発を完了し、オペレーティング システムが誕生しました。しかし、ケーブル・電波を使うとコンピュータ間で長距離のデータ通信ができないという欠点もあり、その後、米軍の管理下でインターネットも登場しました。オペレーティングシステムとネットワークの誕生は必然であり、それらはすべてコンピュータが連携して動作するための必要条件であると言えます。もちろん、特定のネットワークが情報伝達をどのように実現するかは、ハードウェア (スイッチ、ルーター) のサポートと切り離せないことは間違いありません。その後 1990 年代になると、米軍は金儲けのためにコンピューター ネットワークの制御を解放しました。ネットワークの実現 技術の商業化以来、ネットワークは急速に発展しました。

上の図はコンピュータ間のコラボレーションを実現するプロセスですが、もちろんネットワークを実現するプロセスでもあるので、次に関連する概念を見てみましょう。スイッチ:もちろん、特定のスイッチの実装原理は気にしません。その機能を理解する必要があるだけです。スイッチはデータ パケットを 1 つのポートから別のポートに転送し、スイッチに接続されているコンピュータがデータを実行できるようにします。このようにして、複数のコンピュータがリソースや情報を共有し、共同作業を実現できます。ルーター: コンピュータがスイッチに接続されると、小規模なデータ共有環境が形成されます。この環境はローカル エリア ネットワークと呼ばれ、スイッチがルーターに接続されると、スイッチは 1 つのポートから別のポートにデータを転送できます。ルータは、データ パケットの転送機能と測位機能 (IP アドレス) を使用してターゲット ネットワークにデータを正しく送信し、ある LAN から別の LAN へのデータの転送を実現します。このプロセスはワイド エリアとも呼ばれます。通信網。もちろん、LAN と WAN は相対的な概念にすぎず、地域によっては、コンピュータ間の接続範囲に応じて、コンピュータが LAN になったり WAN になったりすることがあります。

上記の知識により、各コンピュータが独自の IP アドレスを持つ理由と、コンピュータ間でのデータ共有の大原則が理解できるようになりました。まず、共有する必要があるデータをスイッチに送信します。スイッチは MAC アドレスを判断します。MAC アドレスがスイッチが配置されているローカル エリア ネットワーク内にある場合、スイッチはそのデータをネットワーク アダプタに直接送信します。受信したデータに対応するコンピュータ(ネットワークカード)にMACアドレスを介して送信すると、オペレーティングシステムの一連の動作により、受信したデータに対応するコンピュータはデータ処理を完了します。ただし、MAC アドレスがスイッチが配置されているローカル エリア ネットワークにない場合、スイッチは接続されているルーターにデータを送信します。ルーターはデータを受信した後、受信側コンピューターの IP アドレスを判断します (自身が属する対象ネットワークは、最終的に対象ネットワーク(サーバー)にデータを送信し、対象ネットワークにデータが到達すると、対象ネットワークはさらに内部のルーターやスイッチを経由してデータを転送し、最後にルーターを経由してデータを受信するコンピューターにデータを渡し、IPアドレスを判定してルーターに接続されているスイッチにデータを送り、最後にスイッチがMACアドレスを判定して対象のコンピューターのネットワークアダプターに送信します。同様に、最終的なオペレーティング システムがデータ処理を完了します。もちろん、具体的なプロセスはさらに深める必要があり、ネットワークの階層構造を理解した後に多くの知識を理解する必要があります。

ネットワークプロトコルとは何ですか

上記のネットワーク開発の背景とネットワーク関連の知識をある程度理解した後、ネットワークで最も重要な知識であるネットワーク プロトコルを見てみましょう。もちろん、ネットワークプロトコルの知識点は多く、現時点ではネットワークの基礎を学習しているだけなので、基本的な概念を理解するだけで十分で、その後のシーケンスを深く学習する必要があります。

ネットワークプロトコルはその名前からして協定であり、一般的に協定は日常生活における協定の一種として理解されていますが、この種の協定は単純な口頭協定ではなく、審査を経て承認された非常に厳格な協定です。契約書に署名したら、それを履行しなければなりません。では、なぜ契約書に署名するのでしょうか? 本質は、協力を保証し、後の段階でのコミュニケーションコストを削減し、効率を向上させ、経済を最大化することです。ネットワークプロトコルと同様に、コンピュータを使用してデータを送受信するためには、対応するネットワークプロトコルに従わなければなりません。コンピュータのハードウェアとオペレーティング システムは、専門家によってデフォルトでプロトコルと同期されています。もちろん、コンピュータだけでなく、ルーターやその他のネットワークに接続する必要があるデバイスも同期されているため、私たちには理解できません。プロトコルは何ですか。合意を遵守する方法がわかりません、ははは!したがって、私たち一般人は消費についてのみ責任を負い、ネットワーク プロトコルの同期は機器メーカーに任せるだけで済みます。ただし、この点から、ネットワーク プロトコルはハードウェアを制御する必要があり、それは単なるハードウェアの一種ではなく、すべてのハードウェアが調整される必要があることもわかります。この方法でのみ、すべてのコンピュータをネットワークに正常に接続できます。ネットワーク、ようやく理解しました ネットワークプロトコルとは、異なるコンピュータ間でのデータ共有と交換のためのルール/合意を指します。

プロトコルを知る プロトコル
とは規則・協定であり、コンピュータをネットワークでデータ伝送する際のプロトコルであることが分かったところで、具体的にはネットワークを使ってデータ伝送する場合、プロトコルは何を規定しているのでしょうか?この時点で、プロトコルはデータ伝送時の伝送形式を規定するだけでなく、データパケットのカプセル化や解析方法、エラー検出なども規定していることが分かりました。ネットワークとの対話に関する限り、すべての操作は標準化され、同期されています。その中で、データ間の伝送形式については私たちが最もよく知っており、バイナリが標準フォーマットですが、バイナリはデータの伝送に使用されるだけでなく、より重要なことに、ネットワーク内でバイナリ列が表現する意味に対応していることを理解する必要があります。プロトコルには、さまざまな機器であれ、コンピューター ハードウェアであれ、特定のバイナリ シーケンスの意味について厳密な制御と規制があり、対応するハードウェアがこのバイナリ シーケンスを受信する限り、データを送信できるように対応するアクションを完了する必要があります。成功しました。したがって、あらゆる種類のデバイスまたはコンピューター ハードウェアをこのプロトコルに準拠させたい場合は、これらのデバイスまたはハードウェアが対応するバイナリ シーケンスを生成および認識できるようにする必要があることが前提となるため、現時点では磁気を使用する必要があります。電気信号、高電位と低電位、電圧、山と谷、ピクセル、および 0 と 1 を区別するために使用される一連の物理要素。これにより、さまざまなデバイスとさまざまなハードウェア間の効果的な通信とデータ交換が実現されます。ネットワーク 協定の遵守により、協調して運用されるコンピュータネットワークシステムが構築されます。

プロトコル階層構造

上記のプロトコルの基礎知識を理解すると、日常生活において、データの送受信にかかわらず、さまざまなデバイスやさまざまなハードウェアがネットワークに準拠しているため、ネットワークプロトコルと切り離せないことがわかります。生産プロセスにおけるプロトコルの標準化、一般的なデータ共有を実現するための標準化されたデフォルト処理。また、最下層の最も基本的なデータ送信形式はバイナリであるため、すべてのデバイスとハードウェアがバイナリ シーケンスの認識と処理をサポートしている場合にのみ、対応するデータを送受信できることを理解してください。データを送信するプロセスでは、データのセキュリティやデータ損失などの一連の問題が発生するため、これらの問題の具体的な原理を理解するには、ネットワーク プロトコルを深く理解する必要があります。

なぜネットワークプロトコルは階層化されているのでしょうか?
現時点での上記の知識により、データ伝送は私たちが想像しているほど単純ではないことがわかります。データ伝送をよりよく理解するには、データ伝送はネットワーク プロトコルに基づいているため、ネットワーク プロトコルをしっかりと理解する必要があります。合意が確立されれば、将来的にコードを使用してデータ伝送の問題を解決する際に、より論理的な能力を身につけることができます。もちろん、今回はネットワーク基盤に基づいてプロトコルを見ているので、プロトコルの具体的なコード動作については今回は説明せず、概念に基づいてノックアウトします。

まず第一に、国間または地方間のデータ伝送に直面する場合、最初に直面する問題は距離の問題であることを理解してください。光信号は光ファイバーで伝送されるときに減衰し、損失が発生し、この損失は比例するからです。距離が増加するにつれて、光信号は徐々に減衰し、その結果、信号強度が弱まり、信号品質に影響を及ぼし、信号損失が発生する可能性があります。もちろん、現時点では問題を分析しているだけなので、この部分の知識は拡張は行われません。2 つ目は、ホストを見つける問題です。つまり、コンピューターのホストが非常に多いため、データを転送する必要があるコンピューターをどのように見つけるべきかということです。データ分割の問題、データ転送の問題、ユーザー認証の問題など、まだ多くの問題が残っています...したがって、現時点でこれらの問題を解決するには、設計する必要があり、実際には非常に多くの問題が見つかります。設計プロセス 非常によく似た問題もあれば、まったく関係のない問題もあり、前の問題を解決することによってのみ解決できる問題もあります。そこで、現時点では、これらの問題に基づいて階層構造を設計しました。これらの問題を分割し、関連する問題を 1 つの階層に、関係のない問題を別の階層に分けて、問題解決の優先順位を達成するために進めます。したがって、層構造から始めて、高い凝集性と低い結合性の効果が達成されていることがわかりました。高い凝集性は、各層で解決される問題が類似していることを反映し、低い結合性は層間(モジュール間)に反映されます。直接関係はありません。これらを理解した後、高凝集性と低結合性の利点を理解すれば、なぜネットワーク プロトコルを階層化して設計する必要があるのか​​が理解できるでしょう。その中でも、低結合は、各層構造のコードが独立して開発および保守でき、どの層で問題が発生しても他の層に影響を与えず、層間の通信が実行できるため、異なるメーカーが開発したプロトコルを使用できることを実現できます。相互に協力して使用します。また、結合度が高いと、解決する問題が類似しているため、この層でのさまざまなモジュール コードの再利用性が向上します。

OSI 7 層モデル

上記の知識を理解した後、ネットワーク プロトコル スタックを階層的に設計する必要がある理由がわかりました。今回は、オープン システム相互接続参照モデルである OSI (開発システム相互接続)、つまり任意のネットワークを見ていきます。プロトコル スタック ロジックの定義と仕様。以下の図に示すように、OSI ネットワーク プロトコル スタックでは、各層が異なる問題を解決する必要があり、各層には順序関係があることがわかります。

ここに画像の説明を挿入
上図に示すように、OSI モデルのネットワーク プロトコル スタックは 7 つの異なる層構造に分かれており、各層は対応する機能を持っていることがわかります。具体的な分析については省略します。その分布と機能を認識し、大まかに理解できる限り。また、OSI ネットワーク プロトコル スタックは標準のネットワーク プロトコル スタック モデルであり、現在の主流のネットワーク プロトコル スタックは TCP/IP ネットワーク プロトコル スタックであることに注意してください。ただし、TCP/IP プロトコル スタックは元々 OSI プロトコル スタック モデルに基づいて設計されました。しかし、実際のアプリケーションでは、TCP/IP プロトコル スタックを 7 層に分割することは実用的ではなく、必要であることが判明したため、現在主流のネットワーク プロトコル スタック TCP/IP は、一般に物理層である 5 層のみになっています。データリンク層、ネットワーク層、トランスポート層、アプリケーション層。次に、この時点の TCP/IP ネットワーク プロトコル スタックに基づいて、OSI モデルよりも 2 層少ないことが判明したため、一部の学生はこの時点で、TCP/IP プロトコル スタックの層が 5 層しかないのであれば、 session レイヤーとプレゼンテーションレイヤーの役割をどのように実現すべきか?この問題に直面しても、現時点では心配する必要はありません。本質的に、オペレーティング システムの観点から見ると、プレゼンテーション層とセッション層の機能はユーザー層で実装され、オペレーティング システムはは、プレゼンテーション層とセッション層の対応する機能を実装するためのインターフェイスを提供していないため、ネットワーク プロトコル スタックを使用してデータ送信を完了したい場合は、セッション層とプレゼンテーション層の機能も実装する必要があります。ですが、今回はユーザー層に実装されます。したがって、現時点では、TCP/TP プロトコル スタックの場合、アプリケーション層にセッション層とプレゼンテーション層の両方が含まれるため、TCP/IP プロトコル スタックの場合は 5 層のみになります。それでは、TCP/IP プロトコル スタックに基づいてデータがどのように送信されるかを見てみましょう。

TCP/IPネットワークプロトコルの5層構造

まず、TCP/IP プロトコル スタックでは、各層に対応するプロトコルがあることを理解してください。その中で最も重要なのは、ネットワーク層の IP プロトコルとトランスポート層の TCP プロトコルです。そのため、プロトコル スタックと呼ばれます。これは TCP/IP プロトコル スタックのためです。このため、この知識には多くのことが含まれることを理解しています。上記のどの層が役割を果たすかを示すほど単純ではありません。これらの知識は、目的にのみ使用されます。基礎を築くには、これらの機能をどのように実装して分析するかが重要です。各層の実装原理と層間の関係を理解することによってのみ、将来のデータ伝送に関連する問題の解決が容易になります。

この点を理解した上で、ネットワークプロトコルスタックがシステム構成の中でどのような位置を占めるのかを見てみましょう!なぜネットワーク プロトコル スタックをアーキテクチャから見るのでしょうか? 上記のことから、ネットワーク通信を実現するには、ネットワークプロトコルを満たすことが前提であり、ネットワーク通信では解決すべき問題が多く発生するため、凝集性が高く、結合度が低い階層構造を実現する必要があることもわかります。カップリング、つまりネットワークを統合する必要があります。プロトコルはネットワーク プロトコル スタックの形式で実装されます。その後、ネットワーク プロトコル スタックでは各層が異なる役割を果たしていることがわかり、これらの機能を通じて、最終的にネットワーク通信にコンピュータを使用することによるすべての問題が解決されるため、コンピュータに特定の機能を実装するには、現時点ではオペレーティング システムが分離不可能である必要があり、同じ理由でアーキテクチャも分離不可能です。ネットワーク プロトコル スタックがアーキテクチャ内でどのような役割を果たしているかに注目してください。以下に示すように:

ここに画像の説明を挿入
この時点で、ネットワークプロトコルスタック自体がアーキテクチャに付属していることがわかりました。もちろんこれは避けられませんが、そうでない場合、さまざまな機能のコーディングをどのように実現するか?したがって、現時点では、物理層には、データのバイナリ列が電気信号に変換され、最終的にデータの送受信が実現されるネットワークカードなどのハードウェアが含まれると理解しています。リンク層 一般に、その機能はネットワークカードドライバーとカーネルコードによって実現されますが、ネットワーク層とトランスポート層の機能は当然システムカーネルコードによって完成します。ソフトウェア内のデータはアプリケーション層で管理されており、現在は様々なAPPが蔓延していますが、OSが提供する様々なシステムコールインターフェースを介して様々な機能を実装することができます。コール インターフェイスは、ネットワーク通信を実装するために特別に使用されます。以前にプロセス管理、メモリ管理、ファイル管理を学んだときと同じように、関連するシステム コール インターフェイスをバッチごとに学びました。ネットワーク管理を適切に実装するには、いくつかのシステムもあります私たちが使用するネットワーク通信用の呼び出しインターフェイス。システムネットワークは分離されていません!

そして、以前にファイル システムについて学んだとき、すべてがファイルであるという概念を理解していたことを理解する必要があります。つまり、オペレーティング システムがネットワーク カードを使用するためにネットワーク カード ドライバーを呼び出すとき、ファイル構造も実行されます。ネットワーク カード ドライバーの本体のカプセル化、関数ポインターの形式でネットワーク カード ドライバーの関数を呼び出し、オペレーティング システムによるネットワーク カードの使用を実現するため、この時点でネットワーク プロトコル スタックと組み合わせて、管理ネットワークの管理はファイル システムの管理に基づいています。

物理層を理解する
ここではソフトウェア関連の知識だけを考えているため、物理層についてはあまり意識しません。ここで関連する概念をある程度理解できます。以下の順序で他の 4 つの層を中心に学習していきます。 TCP/IP プロトコル スタックの各層 プロトコルは問題ありません。物理層については、LAN と WAN 間のデータ転送にスイッチとルーターを使用する方法をある程度理解しています。この時点で、さらに深く掘り下げていきます。上記では、物理層の機能はネットワーク カード (ネットワーク アダプター) に依存しており、ネットワーク カードの機能は、対応するバイナリ シーケンスと電気信号を変換することです。信号。

ラップトップの場合、インターネットにアクセスする最も一般的な 2 つの方法は、WLAN に接続するか、ネットワーク ケーブルに接続することです。どの方法を使用するにしても、重要なのはバイナリ シーケンスから電気信号への変換を実現することです。変換のみ 電気信号になって初めて伝送できる もちろん、現在の伝送プロセスは距離があるため、一般的には光信号が使用されます。電気信号により、データ伝送の品質が向上します。もちろん、この時点で、バイナリ シーケンスを電気信号に変換する方法に興味があるかもしれません。WLAN を例に挙げると、コンピュータには無線送信機が 1 つしかないため、データを送信する必要がある場合、データはバイナリ シーケンスに処理され、無線送信機は対応するバイナリ シーケンスを送信します。通常、ルーターには小さなスイッチが付属しており、最終的にルーターは受信した無線信号を電気信号に変換して送信します。もちろん、対応するハードウェアがバイナリ シーケンスをどのように認識して処理するかについては、上記の知識 (山と谷) ですでに詳しく説明しました。もちろん、物理層の知識に関連するハードウェアはまだたくさんあります。興味のある学生はそれについて学ぶことができます。ここではあまり理解していません。焦点は TCP/IP の他の 4 層の理解です。プロトコルとネットワーク伝送プロセスの理解。

概要: 最初にネットワークに関する基礎知識を学びます。時間の都合上、残りの知識については次のブログをご覧ください。

おすすめ

転載: blog.csdn.net/weixin_74004489/article/details/132113491