システム設計の世界では、ネットワークはさまざまなコンポーネントを結合する接着剤です。 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 サイトの他の関連記事を参照してください。

OpenSSLは、安全な通信で広く使用されているオープンソースライブラリとして、暗号化アルゴリズム、キー、証明書管理機能を提供します。ただし、その歴史的バージョンにはいくつかの既知のセキュリティの脆弱性があり、その一部は非常に有害です。この記事では、Debian SystemsのOpenSSLの共通の脆弱性と対応測定に焦点を当てます。 Debianopensslの既知の脆弱性:OpenSSLは、次のようないくつかの深刻な脆弱性を経験しています。攻撃者は、この脆弱性を、暗号化キーなどを含む、サーバー上の不正な読み取りの敏感な情報に使用できます。

この記事では、プロファイリングの有効化、データの収集、CPUやメモリの問題などの一般的なボトルネックの識別など、GOパフォーマンスを分析するためにPPROFツールを使用する方法について説明します。

この記事では、GOでユニットテストを書くことで、ベストプラクティス、モッキングテクニック、効率的なテスト管理のためのツールについて説明します。

この記事では、ユニットテストのためにGOのモックとスタブを作成することを示しています。 インターフェイスの使用を強調し、模擬実装の例を提供し、模擬フォーカスを維持し、アサーションライブラリを使用するなどのベストプラクティスについて説明します。 articl

この記事では、GENICSのGOのカスタムタイプの制約について説明します。 インターフェイスがジェネリック関数の最小タイプ要件をどのように定義するかを詳しく説明し、タイプの安全性とコードの再利用性を改善します。 この記事では、制限とベストプラクティスについても説明しています

この記事では、コードのランタイム操作に使用されるGoの反射パッケージについて説明します。シリアル化、一般的なプログラミングなどに有益です。実行やメモリの使用量の増加、賢明な使用と最高のアドバイスなどのパフォーマンスコストについて警告します

この記事では、GOでテーブル駆動型のテストを使用して説明します。これは、テストのテーブルを使用して複数の入力と結果を持つ関数をテストする方法です。読みやすさの向上、重複の減少、スケーラビリティ、一貫性、および

この記事では、トレースツールを使用してGOアプリケーションの実行フローを分析します。 手動および自動計装技術について説明し、Jaeger、Zipkin、Opentelemetryなどのツールを比較し、効果的なデータの視覚化を強調しています


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ホットトピック



