検索

Network fundamentals

システム設計の世界では、ネットワークはさまざまなコンポーネントを結合する接着剤です。 Web アプリケーション、分散システム、または単純なバックエンド サービスを構築する場合でも、ネットワークの仕組みを理解することが、スムーズな通信、セキュリティ、パフォーマンスを確保するための鍵となります。この章では、スケーラブルで信頼性の高いシステムを構築するために重要なネットワーキングのいくつかの核となる側面について説明します。


1.コンピュータネットワークの基礎

基礎から始めましょう。 コンピュータ ネットワークは、相互に通信する相互接続されたデバイス (コンピュータ、サーバー、ルーターなど) の集合です。これはデータの郵便システムのようなもので、さまざまなデバイスがパケットの形式で情報を送受信できるようになります。ユーザーがオンライン サービス (フード デリバリー アプリなど) を操作するとき、これらのパケットはユーザーのデバイスとアプリを動作させるサーバーの間で常に送受信されます。

ネットワークの種類:
  1. ローカル エリア ネットワーク (LAN): これは、建物やキャンパスなどの限られたエリア内のデバイスを接続するネットワークです。たとえば、コンピュータとプリンタが有線または無線接続を介して通信するオフィス ネットワークなどです。 LAN の主な特徴は、高速であり、通常は狭いスペースに制限されることです。

: 一般的なオフィスでは、従業員のコンピュータが LAN 経由でプリンタ、ファイル サーバー、場合によっては電話に接続されています。この設定により、リソースを高速に共有できます。

  1. ワイド エリア ネットワーク (WAN): これはより広いエリアをカバーし、複数の LAN を接続します。インターネットを WAN の最大の例として考えてください。これにより、世界のさまざまな地域が相互に通信できるようになります。

: ニューヨーク、ロンドン、東京にオフィスを持つ大企業を想像してください。オフィス内には LAN がありますが、相互に通信するには WAN を使用し、おそらくインターネットまたはプライベート接続を利用します。

ネットワーク層と OSI モデル:

ネットワークがどのように動作するかを理解するために、ネットワークを 7 つの層に分割する OSI モデル を使用します。

  1. 物理層: これは、ケーブル、スイッチ、無線伝送などのハードウェアの側面です。
  2. データリンク層: 同じローカルネットワーク上のデバイス間の通信を管理します。
  3. ネットワーク層: データ パケットをあるデバイスから別のデバイスに送信する方法 (ルーティングなど) を決定します。
  4. トランスポート層: データの信頼性の高い送信を保証し、フロー制御を管理し、エラーを処理します (ここで TCP が動作します)。
  5. セッション層: 2 つのデバイス間の接続を管理し、必要な間セッションを開いたままにします。
  6. プレゼンテーション層: システムが相互に理解できるようにデータ形式を変換します。
  7. アプリケーション層: ブラウザや電子メール クライアントなどのアプリケーションが動作する層。ここで、操作するデータが関係します。

システム設計のほとんどの場合、特に通信プロトコル、セキュリティ、データ フローを扱う場合は、レイヤー 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 EncryptDigiCert などの CA によって発行されます。これにより、ユーザーは自分のデータが安全であり、実際にアプリを操作しているのは偽者ではないことがわかります。

2 要素認証 (2FA):

2FA の実装は追加のセキュリティ層であり、ユーザーに 2 つの形式の ID (通常はパスワードなどの知っているものと、モバイル デバイスなどの所有しているもの) の提供を要求します。これにより、攻撃者がアカウントを侵害することが非常に困難になります。

: 食品配達アプリでユーザーの 2FA を有効にすると、パスワードが盗まれた場合でも不正アクセスを防ぐことができます。

以上がネットワークの基礎の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
スレッドの安全性のために、Mutexesとロックを実装しますスレッドの安全性のために、Mutexesとロックを実装しますMay 05, 2025 am 12:18 AM

GOでは、ミューテックスとロックを使用することが、スレッドの安全性を確保するための鍵です。 1)相互に排他的なアクセスにsync.mutexを使用し、2)読み取​​りおよび書き込み操作にsync.rwmutexを使用します。これらのツールとその使用スキルをマスターすることは、効率的で信頼できる同時プログラムを作成するために不可欠です。

ベンチマークとプロファイリング同時GOコードベンチマークとプロファイリング同時GOコードMay 05, 2025 am 12:18 AM

同時GOコードのパフォーマンスを最適化する方法は? GOEST、GOBENCH、PPROFなどのGOの組み込みツールを使用して、ベンチマークやパフォーマンス分析を行います。 1)テストパッケージを使用してベンチマークを書き込み、同時関数の実行速度を評価します。 2)PPROFツールを使用して、パフォーマンス分析を実行し、プログラム内のボトルネックを特定します。 3)ガベージ収集設定を調整して、パフォーマンスへの影響を減らします。 4)チャネル動作を最適化し、ゴルチンの数を制限して効率を改善します。継続的なベンチマークとパフォーマンス分析により、同時GOコードのパフォーマンスを効果的に改善できます。

同時GOプログラムでのエラー処理:一般的な落とし穴の回避同時GOプログラムでのエラー処理:一般的な落とし穴の回避May 05, 2025 am 12:17 AM

同時GOプログラムでのエラー処理の一般的な落とし穴を回避する方法には、次のものが含まれます。1。エラー伝播、2。処理タイムアウト、3。集約エラー、4。コンテキスト管理、5。エラーラッピング、6。ロギング、7。テスト。これらの戦略は、同時環境でエラーを効果的に処理するのに役立ちます。

Go:The Power of Duck Typingでの暗黙のインターフェイスの実装Go:The Power of Duck Typingでの暗黙のインターフェイスの実装May 05, 2025 am 12:14 AM

inclicitInterfaceImplementationingombodiesducktypingtosatisistosistosInterfaces withoutexplicitdeclaration.1)itPromotesflexulivyby byfocusingonbehavior.2)

エラー処理を行う:ベストプラクティスとパターンエラー処理を行う:ベストプラクティスとパターンMay 04, 2025 am 12:19 AM

GOプログラミングでは、エラーを効果的に管理する方法には、1)例外の代わりにエラー値の使用、2)エラーラッピング技術の使用、3)カスタムエラータイプの定義、4)パフォーマンスの再利用、パフォーマンスと回復の使用、5)エラーメッセージは明確で一貫性があることを保証する、7)エラーの処理を補うエラーこれらのプラクティスとパターンは、より堅牢で保守可能で効率的なコードを書き込むのに役立ちます。

Goに同時性をどのように実装しますか?Goに同時性をどのように実装しますか?May 04, 2025 am 12:13 AM

GORoutinesとチャンネルを使用して、GOで同時性を実装できます。 1)音楽を楽しんだり、同時に友人を観察したりするなど、ゴルチンを使用して並行してタスクを実行します。 2)生産者モデルや消費者モデルなどのチャネルを介してゴルチン間でデータを安全に転送します。 3)ゴルチンやデッドロックの過度の使用を避け、同時プログラムを最適化するためにシステムを合理的に設計します。

GOの同時データ構造を構築しますGOの同時データ構造を構築しますMay 04, 2025 am 12:09 AM

goooffersmultipreapproaches forbuildingconcurreantdatastructures(mutexes、channels、andatomicoperations.1)mutexexexexexexexexexexexexexprovidesimprovidesedsafetybutcancauseperformancebottlenecks.2)チャネルオフェルスケーリビリティButmaybutlorempty.3)

GOのエラー処理が他のプログラミング言語と比較しますGOのエラー処理が他のプログラミング言語と比較しますMay 04, 2025 am 12:09 AM

goserrorhandlingisexplicit、treatingErrorsassedededededededededectectionsは、pythonandjava.1とは異なります

See all articles

ホット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衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

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

メモ帳++7.3.1

メモ帳++7.3.1

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。