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