コース内容#
概要#
ネットワークアプリケーションのアーキテクチャは主にCS 構造とP2P 構造に分かれます。
- 前者はクライアント(Client)/ サーバー(Server)構造で、WeChat、QQ、ゲームなどがあります。
- 後者はピア(Peer)からピアへの構造で、対等アーキテクチャとも呼ばれ、迅雷、百度网盘などがあります。
- プロセス間通信では、明確な C/S はなく、発起者がクライアント、サービスを提供する者がサーバーとなります。
アプリケーションプログラムサービスの要求には信頼性のあるデータ転送、スループット、タイミング(時効)およびセキュリティが含まれます。異なるアプリケーションはネットワークサービスに異なる要求を持ち、データの喪失の可否、帯域幅の要求、時間の敏感性などがあるため、異なるアプリケーション層プロトコルと輸送層プロトコルが生まれました:
- アプリケーション層プロトコルは、メッセージの種類、メッセージの構文、フィールドの意味、および送信、応答のルールを定義し、ネットワークプロトコルの三要素(構文、意味、同期)に似ています。
- 輸送層プロトコル
- TCP:接続指向のサービスで、信頼性のあるデータ転送を提供します。
- UDP:必要なサービスを提供しない軽量輸送サービスで、信頼性のあるデータ転送を提供しません。
- PS
- ソケットはアプリケーションとネットワークの間のインターフェースであり、輸送層の制御は輸送層プロトコルの選択とパラメータの設定に限られます。
- UDP は独自に信頼性のあるデータ転送を実装できます。
WEB と HTTP プロトコル#
WEB 用語:オブジェクト、ハイパーテキストマークアップ言語 HTML、統一リソースロケータ URL、WEB ページ、WEB ブラウザ、WEB サーバー(httpd、apache、tomcat)
HTTP:ハイパーテキスト転送プロトコル
- HTTP の動作:リクエストメッセージ、レスポンスメッセージ
- HTTP の特徴
- データの喪失を心配する必要がない
- ステートレスプロトコルで、サーバーはクライアントに関連する状態情報を保存しない
- HTTP サーバーは常にオープン状態で、固定の IP を持つ
- CS 構造を使用
- 非持続接続と持続接続、別名、短接続と長接続
- HTTP は短接続に属し、サーバーはリクエストに応じた後、TCP に接続を切断するよう通知するため、複数のオブジェクトに対して接続と切断を繰り返します。
- HTTP リクエストプロセスには TCP の三回のハンドシェイクが含まれ、一般的に 3 回目のハンドシェイクにはリクエストが含まれ、対応するファイルを受け取るまで続きます。
- リクエストメッセージ
- リクエストメソッド:
- GET-- 取得
- POST-- フォームの送信
- HEAD-- テスト、接続の確認、すべてのデータを取得する必要はない
- PUT-- データを遠隔地に送信(PUT は冪等ですが、POST はそうではありません)
- DELETE-- 遠隔地のデータを削除
- ヘッダーフィールド名にはブラウザの種類などが含まれます。
- レスポンスメッセージ
- フレーズは一般的にステータスコードの説明です。
- 一般的なステータスコードとフレーズ:
- 200 OK
- 301 Moved Permanently
- 400 Bad Request
- 404 Not Found
- 505 HTTP Version Not Supported
- ユーザーとサーバーの相互作用 ——COOKIE
- リクエストとレスポンスメッセージの両方に COOKIE ヘッダー行が追加されます
- ユーザー側ではブラウザが対応する COOKIE ファイルを管理します
- サーバー側ではデータベースを維持します
- 一度も jd サーバーにリクエストを送信したことのないクライアントホストがリクエストを開始すると、サーバーはその COOKIE を作成し、クライアントに返します;
- 次回 jd サーバーにリクエストを送信する際、サーバーは COOKIE に基づいて特定のデータを返します。
- PS:
- サーバーはクライアントの行動に基づいて人物像を生成し、COOKIE にバインドできます。
- 企業間でデータベースを共有する可能性があります。
- WEB キャッシュ🌟
- 別名プロキシサーバー、CDN など。
- シナリオ:大量のユーザーが特定のサーバーのデータにアクセスする場合、トラフィックが多すぎるとサーバーがクラッシュすることは確実です。
- 最適化プロセス:ブラウザは最初に WEB キャッシュにアクセスし、そこに欲しいデータがない場合は、さらに上流でデータを探し、最終的にデータを返し、そのデータを WEB キャッシュに保存します。
- 利点:クライアントのリクエストに対する応答時間を短縮し、データセンターの通信量を減少させ、アプリケーションのパフォーマンスを改善します。
- PS:WEB キャッシュは定期的に上流サーバーにデータの更新をリクエストします。
HTTPS プロトコル#
HTTPS:安全性のある SSL 暗号化転送プロトコル
HTTPS は HTTP 通信の中間プロセスにSSL/TLS(暗号化 / 復号化)プロセスを追加します。
HTTPS の特徴:
- CA に証明書を申請する必要があり、費用がかかります;
- それは安全性のある SSL 暗号化転送プロトコルであり、HTTP ハイパーテキスト転送プロトコルは情報が平文で転送されます;
- それは HTTP とは完全に異なる接続方式を使用し、ポートも異なり、前者は 443、後者は 80 です。
HTTP/2 プロトコル#
新機能:接続の再利用。同期の制限がなく、一度に複数のメッセージを転送でき、往復する必要がありません。
FTP プロトコル#
FTP:ファイル転送プロトコル
ユーザーはリモートサーバーに接続し、リモートデスクトップフォルダーを表示し、ユーザーはそれを操作できます。
二重接続——FTP の TCP 接続:
- 制御接続:21 ポート、長接続;
- データ接続:20 ポート、短接続。
- 特徴:同時接続量が少ないシナリオに適しており、ビジネス実装を簡素化できます。
PS:個人ユーザーはあまり使用せず、一般的にはローカルエリアネットワークにサービスを提供します。
SMTP、POP3、IMAP プロトコル#
メール関連、初期のインターネットビジネス
ユーザー A のプロキシから始まり、SMTP を介して自分のメールサーバーに接続し、次にユーザー B のメールサーバーに接続し、最終的にユーザー B のプロキシに到達します。
- メールサーバーはメールの内容が規則に準拠しているかを確認します;
- SMTP プロトコルはプッシュのみを担当し、最終ステップはユーザー B が他のプロトコルに基づいてプルを要求することです。
PS:
- ユーザーのホストと直接通信するわけではありません
- 基盤は TCP に基づいています
DNS プロトコル#
ホスト名 / ドメイン名を IP アドレスに変換する;負荷分散サービスを提供
- ドメイン名を解析する
- 負荷分散:同じドメイン名がトラフィックに応じて異なる適切な IP アドレスに変換され、主にトラフィックの分流に使用されます。
集中型 DNS の問題:
- 単一障害点:小さな問題が全体に影響を与える(現在はマイクロサービスが流行しており、さまざまなサービス間の結合度を減少させています)
- 通信容量が大きい
- 距離が遠いと遅延が高くなる
- メンテナンスが難しい(現在、銀行もこの問題を抱えており、システムのバージョンが低く、移行したいが難しい)
DNS ドメインシステム
- ルート DNS サーバーはインターネット上に 13 個あり、中国にはありません
- トップレベルドメイン DNS サーバー、略して TLD、com、cn など
- 権威 DNS サーバー、Tencent などの DNS サービスプロバイダー
- ローカル DNS サーバー、複数存在する可能性があり、ローカルエリアネットワークや学校など
DNS 解析プロセス:
ホストからローカル DNS への接続は再帰的で、ホストは一度だけリクエストを送信し、ローカル DNS が結果を得た場合にのみ返されます。
ローカル DNS がリクエストを開始するのは反復的で、失敗した場合は再度リクエストを送信します。図を見て感じてください。
DNS レコード
- Name:名称 / ホスト / エイリアス
- Value:IP アドレス / 応答アドレス / ターゲットアドレス
- Type:レコードのタイプ
- TTL:ドメイン名 - IP 関係の有効時間、つまりローカルキャッシュの時間
一般的なタイプは次のとおりです:
自分の DNS サービスプラットフォームで DNS レコードを追加してみてください~
PS:ホスト名の可読性を規範化するのはやや難しいですが、DNS records——CloudFlare を参考にしてください。
追加知識点#
- ネットワークプロトコルの三要素:構文、意味、同期(痕跡がある)