ネットワークの基礎
システム設計の世界では、ネットワークはさまざまなコンポーネントを結合する接着剤です。 Web アプリケーション、分散システム、または単純なバックエンド サービスを構築する場合でも、ネットワークの仕組みを理解することが、スムーズな通信、セキュリティ、パフォーマンスを確保するための鍵となります。この章では、スケーラブルで信頼性の高いシステムを構築するために重要なネットワーキングのいくつかの核となる側面について説明します。
1.コンピュータネットワークの基礎
基礎から始めましょう。 コンピュータ ネットワークは、相互に通信する相互接続されたデバイス (コンピュータ、サーバー、ルーターなど) の集合です。これはデータの郵便システムのようなもので、さまざまなデバイスがパケットの形式で情報を送受信できるようになります。ユーザーがオンライン サービス (フード デリバリー アプリなど) を操作するとき、これらのパケットはユーザーのデバイスとアプリを動作させるサーバーの間で常に送受信されます。
ネットワークの種類:
- ローカル エリア ネットワーク (LAN): これは、建物やキャンパスなどの限られたエリア内のデバイスを接続するネットワークです。たとえば、コンピュータとプリンタが有線または無線接続を介して通信するオフィス ネットワークなどです。 LAN の主な特徴は、高速であり、通常は狭いスペースに制限されることです。
例: 一般的なオフィスでは、従業員のコンピュータが LAN 経由でプリンタ、ファイル サーバー、場合によっては電話に接続されています。この設定により、リソースを高速に共有できます。
- ワイド エリア ネットワーク (WAN): これはより広いエリアをカバーし、複数の LAN を接続します。インターネットを WAN の最大の例として考えてください。これにより、世界のさまざまな地域が相互に通信できるようになります。
例: ニューヨーク、ロンドン、東京にオフィスを持つ大企業を想像してください。オフィス内には LAN がありますが、相互に通信するには WAN を使用し、おそらくインターネットまたはプライベート接続を利用します。
ネットワーク層と OSI モデル:
ネットワークがどのように動作するかを理解するために、ネットワークを 7 つの層に分割する OSI モデル を使用します。
- 物理層: これは、ケーブル、スイッチ、無線伝送などのハードウェアの側面です。
- データリンク層: 同じローカルネットワーク上のデバイス間の通信を管理します。
- ネットワーク層: データ パケットをあるデバイスから別のデバイスに送信する方法 (ルーティングなど) を決定します。
- トランスポート層: データの信頼性の高い送信を保証し、フロー制御を管理し、エラーを処理します (ここで TCP が動作します)。
- セッション層: 2 つのデバイス間の接続を管理し、必要な間セッションを開いたままにします。
- プレゼンテーション層: システムが相互に理解できるようにデータ形式を変換します。
- アプリケーション層: ブラウザや電子メール クライアントなどのアプリケーションが動作する層。ここで、操作するデータが関係します。
システム設計のほとんどの場合、特に通信プロトコル、セキュリティ、データ フローを扱う場合は、レイヤー 3 から 7 に焦点を当てます。
2. HTTP/HTTPS、TCP/IP、DNS、ロードバランサー
HTTP/HTTPS:
HTTP (ハイパーテキスト転送プロトコル) と HTTPS (HTTP Secure) は、Web 上の通信に使用される主要なプロトコルです。これらは、メッセージがどのようにフォーマットされ、クライアント (ブラウザーなど) とサーバー間で送信されるかを定義します。
- HTTP は、Web サイトに対するリクエストの背後にあるプロトコルです。たとえば、Web ページを読み込むと、ブラウザはその Web ページをホストしているサーバーに HTTP リクエストを送信し、サーバーはページのコンテンツを含む HTTP 応答を送り返します。
例: ブラウザに「www.fooddelivery.com」と入力すると、ホームページを取得するための HTTP リクエストが送信されます。
- HTTPS は HTTP の安全なバージョンです。送信されるデータを暗号化し、パスワードやクレジット カード番号などの機密情報が攻撃者によって傍受されないようにします。
例: ユーザーがフードデリバリー アプリで注文すると、デバイスからサーバーに送信される際の支払い詳細が HTTPS によって暗号化され、安全に保たれます。
TCP/IP:
TCP (伝送制御プロトコル) と IP (インターネット プロトコル) は、インターネットに電力を供給する 2 つの基本プロトコルです。
- TCP は、デバイス間の信頼性の高い通信を保証します。メッセージをパケットに分割し、メッセージが正しい順序で正しく配信されるようにします。パケットが途中で失われた場合、TCP はパケットを再送信します。これは、ファイル転送や Web ブラウジングなど、データの整合性が重要なアプリケーションに最適です。
例: 食品配達アプリが顧客の詳細をサーバーに送信している場合、TCP はメッセージ全体がどの部分も欠落することなく配信されることを保証します。
- IP は、パケットのアドレス指定と正しい宛先へのルーティングを担当します。 IP アドレスは封筒の住所と考えてください。ネットワークにデータの送信先を指示します。
例: 携帯電話からリクエストを行うと、IP アドレスを使用してデータがサーバーにルーティングされます。サーバーには独自の IP アドレスがあり、パケットが正しく返されるようになります。
TCP/IP は共にインターネット通信のバックボーンを形成します。これは信頼性の高い郵便サービスのようなものです。TCP は荷物の内容が損なわれていないことを保証し、IP は荷物が正しい場所に届くことを保証します。
DNS (ドメインネームシステム):
DNS はインターネットの電話帳のようなものです。 IP アドレス (サーバーの電話番号のようなもの) を記憶する代わりに、「www.example.com」のようなドメイン名を使用します。 DNS はこれらの名前を IP アドレスに解決するため、デバイスはリクエストの送信先を認識します。
- 例: ユーザーがブラウザに「www.fooddelivery.com」と入力すると、デバイスは DNS サーバーにクエリを実行してそのドメインに関連付けられた IP アドレスを見つけ、そのサーバーにリクエストを送信します。
ロードバランサー:
ロードバランサーは、水平方向にスケーリングする場合に重要です。これは、受信トラフィックを複数のサーバーに分散して、単一のサーバーが過負荷にならないようにするツールです。これにより、システムのスケーラビリティと耐障害性が向上します。
- 例: ランチタイムで、みんながフードデリバリー アプリで注文しようとしていると想像してください。リクエストを処理できるサーバーが 10 台ありますが、すべてのトラフィックが 1 つのサーバーに送信されるのではなく、ロード バランサーによってリクエストが均等に分散されます。これにより、どのサーバーも過負荷になることがなくなり、ダウンタイムが防止され、ユーザーの応答時間が短縮されます。
3.コンテンツ配信ネットワーク (CDN)
CDN は、さまざまな場所に分散しているユーザーの待ち時間を短縮し、パフォーマンスを向上させる優れた方法です。 CDN は、コンテンツのキャッシュされたバージョンを保存する、世界中に配置されたサーバーの分散ネットワークです。ユーザーが Web サイトから何かをリクエストすると、CDN はメイン サーバーではなくユーザーに最も近いサーバーからそのコンテンツを提供し、読み込みにかかる時間を短縮します。
例: フードデリバリー アプリの顧客はインドと米国にありますが、メイン サーバーはヨーロッパにあるとします。 CDN がないと、インドのユーザーはリクエストをヨーロッパまで送らなければならないため、読み込み時間が遅くなる可能性があります。しかし、CDN を使用すると、インドのサーバーでキャッシュされた画像、レストランの詳細、静的コンテンツを提供できるため、アプリの動作が速く感じられます。
CDN の利点:
- 待ち時間の短縮: データはユーザーに近いサーバーから提供されるため、読み込み時間が短縮されます。
- 負荷分散: CDN は、画像、CSS ファイル、スクリプトなどの静的コンテンツのリクエストをオフロードすることで、メイン サーバーの負荷を軽減します。
- 可用性の向上: メインサーバーがダウンした場合でも、CDN はサイトのキャッシュされたバージョンを提供し続けることができるため、可用性が向上します。
4. SSL、TLS、およびネットワークにおけるセキュリティ
セキュリティはどのシステムにおいても大きな懸念事項であり、ネットワーク上で安全な通信を確保するための主要なテクノロジーは、SSL (Secure Sockets Layer) と TLS (Transport Layer Security) です。これらのプロトコルは、クライアントとサーバー間で送信されるデータを暗号化し、パスワードや支払い詳細などの機密情報を盗聴者から確実に保護します。
SSL と TLS:
- SSL は通信を保護するための元のプロトコルでしたが、その大部分はより安全な TLS に置き換えられました。 Web サイトの URL に「https://」が表示されている場合は、接続が SSL/TLS を使用して保護されていることを意味します。
例: フードデリバリー アプリでは、ユーザーが支払いのためにクレジット カード情報を送信すると、データはサーバーに送信される前に TLS を使用して暗号化されます。これにより、たとえ誰かがデータを傍受したとしても、データは暗号化されているため読み取ることができません。
- ハンドシェイク プロセス: TLS は、ハンドシェイク プロセスを使用して安全な接続を確立します。クライアント (ユーザーのブラウザ) とサーバーは暗号キーを交換して、安全な接続を確立します。接続が確立されると、その後の通信はすべて暗号化されます。
例: ユーザーがアプリを開くと、ログインの詳細や支払い情報などの機密情報が送信される前に、ユーザーのデバイスとサーバーがこのハンドシェイクを通過してデータの暗号化方法に同意します。
ネットワークにおけるセキュリティの重要性:
データがネットワーク上を移動するシステムでは、セキュリティが最も重要です。ここでは、安全なシステムを確保するための重要なセキュリティ慣行をいくつか示します:
- 暗号化: 中間者攻撃を防ぐために、TLS などのプロトコルを使用して転送中の機密データを常に暗号化します。
- ファイアウォール保護: ファイアウォールを使用してサーバーへのアクセスを制限します。事前定義されたポートを経由する信頼できるトラフィックのみを許可し、未承認の試行をブロックします。
- API レート制限: 特定の時間枠内で各クライアントが実行できるリクエストの数を制限することで、DDoS (分散型サービス拒否) 攻撃からシステムを保護します。
例: 悪意のある攻撃者が、何百万もの偽のリクエストを送信して食品配達アプリを圧倒しようとしているとします。 API レート制限により、これらのリクエストを抑制し、システムのクラッシュを防ぐことができます。
- セキュリティ監視: 監視ツールを使用して、異常なトラフィック パターンや潜在的な侵入を検出します。 **侵入検知システム ( ) などのツール
IDS)** は、ネットワークへの侵入が試みられたときに警告を発するのに役立ちます。
証明書:
SSL/TLS を有効にするには、Web サイトまたはサーバーの ID を検証する SSL 証明書が必要です。証明書は、認証局 (CA) と呼ばれる信頼できる機関によって発行され、Web サイトが正当であることを保証します。
例: フードデリバリーアプリのドメイン用の SSL 証明書を購入すると、Let’s Encrypt や DigiCert などの CA によって発行されます。これにより、ユーザーは自分のデータが安全であり、実際にアプリを操作しているのは偽者ではないことがわかります。
2 要素認証 (2FA):
2FA の実装は追加のセキュリティ層であり、ユーザーに 2 つの形式の ID (通常はパスワードなどの知っているものと、モバイル デバイスなどの所有しているもの) の提供を要求します。これにより、攻撃者がアカウントを侵害することが非常に困難になります。
例: 食品配達アプリでユーザーの 2FA を有効にすると、パスワードが盗まれた場合でも不正アクセスを防ぐことができます。
以上がネットワークの基礎の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











GO言語は、効率的でスケーラブルなシステムの構築においてうまく機能します。その利点には次のものがあります。1。高性能:マシンコードにコンパイルされ、速度速度が速い。 2。同時プログラミング:ゴルチンとチャネルを介してマルチタスクを簡素化します。 3。シンプルさ:簡潔な構文、学習コストとメンテナンスコストの削減。 4。クロスプラットフォーム:クロスプラットフォームのコンパイル、簡単な展開をサポートします。

Golangは並行性がCよりも優れていますが、Cは生の速度ではGolangよりも優れています。 1)Golangは、GoroutineとChannelを通じて効率的な並行性を達成します。これは、多数の同時タスクの処理に適しています。 2)Cコンパイラの最適化と標準ライブラリを介して、極端な最適化を必要とするアプリケーションに適したハードウェアに近い高性能を提供します。

GolangとCにはそれぞれパフォーマンス競争において独自の利点があります。1)Golangは、高い並行性と迅速な発展に適しており、2)Cはより高いパフォーマンスと微細な制御を提供します。選択は、プロジェクトの要件とチームテクノロジースタックに基づいている必要があります。

Golangは、パフォーマンスとスケーラビリティの点でPythonよりも優れています。 1)Golangのコンピレーションタイプの特性と効率的な並行性モデルにより、高い並行性シナリオでうまく機能します。 2)Pythonは解釈された言語として、ゆっくりと実行されますが、Cythonなどのツールを介してパフォーマンスを最適化できます。

GolangとPythonにはそれぞれ独自の利点があります。Golangは高性能と同時プログラミングに適していますが、PythonはデータサイエンスとWeb開発に適しています。 Golangは同時性モデルと効率的なパフォーマンスで知られていますが、Pythonは簡潔な構文とリッチライブラリエコシステムで知られています。

Cは、ハードウェアリソースと高性能の最適化が必要なシナリオにより適していますが、Golangは迅速な開発と高い並行性処理が必要なシナリオにより適しています。 1.Cの利点は、ハードウェア特性と高い最適化機能に近いものにあります。これは、ゲーム開発などの高性能ニーズに適しています。 2.Golangの利点は、その簡潔な構文と自然な並行性サポートにあり、これは高い並行性サービス開発に適しています。

speed、効率、およびシンプル性をspeedsped.1)speed:gocompilesquilesquicklyandrunseffictient、理想的なlargeprojects.2)効率:等系dribribraryreducesexexternaldedenciess、開発効果を高める3)シンプルさ:

GolangとCのパフォーマンスの違いは、主にメモリ管理、コンピレーションの最適化、ランタイム効率に反映されています。 1)Golangのゴミ収集メカニズムは便利ですが、パフォーマンスに影響を与える可能性があります。
