ホームページ  >  記事  >  Web の普及にはどのような基礎知識が必要ですか?

Web の普及にはどのような基礎知識が必要ですか?

青灯夜游
青灯夜游オリジナル
2020-07-24 13:18:585550ブラウズ

Web の普及にはどのような基礎知識が必要ですか?

#Web ペネトレーションの基礎知識

ネットワークの基礎

IP プロトコル

IP プロトコルは OSI-RM の第 3 層で定義されます————

ネットワーク層

IP プロトコル

コネクションレス型の場合、IP ネットワーク内のノード ルータは各 IP パケットのヘッダーの IP アドレスに従ってアドレス指定されるため、同じメッセージに属する IP パケットは同じメッセージから送信されます。ホストは宛先ホストへの別のパスを経由する可能性があります。 TCP/IP プロトコルは、OSI 7 層参照モデルに完全には準拠していません。

#これらの

#7 層は低位から高位まで:1 物理層、2 データリンク層、3 ネットワーク層、4 トランスポート層、5 セッション層、6 プレゼンテーション層、7 アプリケーション層。

上位層 (つまり、層 7、6、5、および 4) は、アプリケーションの機能を定義します。

下位 3 つの層 (つまり、層 3、2、および1) は主にネットワークのエンドツーエンドのデータ フロー用です。

TCP/IP 通信プロトコルは 4 層の階層構造を採用しており、各層は次の層が提供するネットワークを呼び出して、それぞれのニーズを満たします。

これらの

4 層は、

アプリケーション層、トランスポート層、相互接続ネットワーク層、およびネットワーク インターフェイス層です。

UDP プロトコルUDP はユーザー データグラム プロトコルであり、OSI 参照モデルの

Connectionless## です。

#トランスポート層プロトコルUDP には、 がパケット グループ化

アセンブリ、および パケットをソートできないという欠点があります。つまり、メッセージが一度送信されると、発送されても、それが無事に到着したかどうかを知る方法はありません。 TCP プロトコル

TCP は 接続指向

信頼性の高い

、# に基づいています##トランスポート層 バイト ストリームの通信プロトコルは、IETF の RFC 793 によって定義されています。 アプリケーション層は、ネットワーク間送信用の 8 ビット バイトで表されるデータ ストリームを TCP 層に送信します。その後、TCP はデータ ストリームを適切な長さのセグメントに分割します (通常、データ ストリームが送信されるネットワークの影響を受けます)。コンピュータが接続されています) データリンク層の 最大伝送単位 (MTU) 制限)。

次に、TCP は結果のパケットを IP 層に渡し、IP 層はそのパケットをネットワークを通じて受信側エンティティの TCP 層に送信します。 TCP では、パケット損失が発生しないように各パケットにシーケンス番号を付与すると同時に、受信側エンティティに送信されたパケットが順番に受信されることを保証します。

その後、受信エンティティは、送信エンティティが妥当な 往復遅延 (RTT##) 以内であれば、正常に受信されたパケットに対応する

確認応答 (ACK

) を送り返します。肯定応答が #) 内で受信されると、対応するデータ パケットは失われたとみなされ、再送信されます。 TCP は、

チェックサム関数

を使用して、データにエラーがあるかどうかをチェックします。 チェックサム は、送受信時に計算する必要があります。 TCP 3 方向ハンドシェイクと 4 方向ウェーブの簡単な説明

3 方向ハンドシェイク

初回ハンドシェイク: サーバーと通信するには、クライアントはまずサーバーに通知し、次に

SYN=1

という接続要求信号を送信する必要があります。「ブラザーサーバー、私はあなたに何か言ってあげたいのです。」 2 回目のハンドシェイク:

サーバーがクライアントの接続要求を受信したとき

、サーバーはクライアントに確認メッセージ「了解しました (ACK) 、準備完了です」を送信する必要があります。 、今すぐ接続できますか (SYN)」。

3 番目のハンドシェイク: クライアントがサーバーから確認接続情報を受信したら 、クライアントはサーバーに「わかりました、接続を開始しましょう (ACK )」と丁寧に通知する必要があります。 )」。 接続を確立するプロセス全体が終了しました。次のステップは、双方が同時に通信し、情報を送信するプロセスです。

4 回手を振る 第一波: 双方の意思疎通がほぼ完了しました。

この時点でクライアントも終了しました

、次のステップは通信接続を切断するので、サーバーに「完了しました

(FIN

)」と伝えますが、この時点では接続の終了を待っている状態です。

2 回目の手を振る: サーバーは、クライアントが何も言うことがないことを知っています。 サーバーはクライアントにまだ 2 つのことを言います 、「話が終わったことはわかっています ( ACK ) で、もう少しお話しさせてください。&*……%¥」。

3 回目の手を振る: この時点では、クライアントはすべての耳を傾けて終了を待ち続けており、サーバーは話し終えています。接続を閉じ、クライアントに「完了しました。切断しましょう(FIN)」と伝えます。

4 回目の手を振る:

クライアントはサーバーが話し終えたことを知っており、接続と切断には双方がボタンを押す必要があるため、サーバーに通知する必要もあります (ACK)。オンでは、クライアントは、今言った文がサーバーに正確に到達できるかどうかがわからないため (ネットワークの不安定性や他の要因によるネットワークの理由)、クライアント自身のタイマーも定義します。デフォルト時間が設定されています 2 つの通信の最大時間の合計です。この時間を超えると、サーバーは独自の確認情報を受信したものとみなされます。 この時点で、クライアントは自身の接続を閉じます。サーバーはクライアントから確認通知を受信し、ただちにサーバー側の接続を閉じます。

この時点で、双方間の通信プロセス全体が終了します。

ここでステートメントを作成する必要があります:

リンクを切断するのは必ずしもクライアントではありません。誰でも最初に切断コマンドを開始できます。さらに、クライアントとクライアントの間に固定された標準はありません。誰が最初にそれを開始しますか? リクエストを行う人は誰でもクライアントです。

なぜ 3 ウェイ ハンドシェイク メカニズムを使用するのですか?

次の異常な状況を想定します。

クライアントは最初のリクエスト メッセージをサーバーに送信しましたが、メッセージはネットワーク内で破棄されませんでしたが、どこかでブロックされました。長い間メッセージが送信され、クライアントはサーバーから確認を受信できません。メッセージが失われたと考えられるため、クライアントはメッセージを再送信します。今度は、メッセージはサーバーに正常に到達します。スリーウェイ ハンドシェイクが使用されない場合、サーバーはメッセージが確認され、接続が確立されるだけです。

接続が確立され解放された後、ネットワーク内で送信されブロックされた最初のメッセージがサーバーに到着します。サーバーは、クライアントが接続要求を再送信したと考えます (実際には、クライアント側では、接続はすでに完了しています)。期限切れ)、別の確認がクライアントに送信されます。

しかし、クライアントはリクエスト メッセージを送信していないと考えたため、サーバーから送信された確認を無視し、サーバーは新しい接続が確立されたと考え、A がデータを送信するのを待ち続けました。

原因 サーバー リソースの無駄であり、セキュリティ リスクを引き起こす可能性があります

したがって、3 ウェイ ハンドシェイク メカニズムが使用されている場合、サーバーが確認を送信し、クライアントから確認を受信しなかった後、接続が確立されていないことが認識されるため、リソースはこの無意味な待ち時間を無駄にしないでください。

TCP/IP とはこれら 2 つのプロトコルを指しますか?

TCP/IP

(伝送制御プロトコル/インターネット プロトコル) は、すべての通信機器、特にフォーマットとプロトコルを規制するネットワーク通信プロトコルです。あるホストと別のホスト間のデータ交換の伝送方式。

スライディング ウィンドウ プロトコル

スライディング ウィンドウ プロトコルは、TCP

プロトコルのアプリケーションであり、## に使用されます。 # ネットワークデータ送信中のフロー制御

により輻輳を回避します。 このプロトコルを使用すると、送信者は停止して確認応答を待つ前に複数のデータ パケットを送信できます。 送信者はパケットが送信されるたびに停止して確認を待つ必要がないため、このプロトコルによりデータの送信が高速化され、

ネットワーク スループットが向上します。

HTTP

HTTP は ハイパーテキスト転送プロトコル インターネット上で最も広く使用されているネットワーク プロトコルです。 すべての WWW

ドキュメントはこの標準に準拠する必要があります。

通常、 HTTP クライアントは、サーバーの指定されたポート (デフォルトは 80

ポート) に対して

TCP## を確立するリクエストを開始します。 ) #接続する###。 HTTPサーバーは、クライアントから送信されたリクエストをそのポートでリッスンします リクエスト を受信すると、サーバーは「HTTP/1.1 200 OK」などの ステータス行 と (応答) メッセージを (クライアントに) 送り返します。 may 要求されたファイル、エラー メッセージ、またはその他の情報です。

HTTPUDP の代わりに TCP を使用する理由は、Web ページを開くには大量のデータを送信する必要があり、TCP プロトコルは送信制御とデータの編成を提供するためです。順番に、そしてエラーを修正します。

HTTP または HTTPS プロトコル経由でリクエストされたリソースは、Uniform Resource Identifiers (より正確には URL) によって識別されます。

HTTPS

HTTPS は、 Secure Sockets Layer Hypertext Transfer Protocol、 セキュリティに重点を置いた HTTP チャネルです。簡単に言えば、これは HTTP の安全なバージョン です。

ハイパーテキスト転送プロトコル HTTP プロトコルは、Web ブラウザと Web サイト サーバーの間で情報を転送するために使用されます。 HTTP プロトコルはコンテンツを 平文 で送信し、いかなる形式のデータ暗号化も提供しません。攻撃者が Web ブラウザと Web サイト サーバー間の送信メッセージを傍受すると、そのメッセージを読み取ることができます。そのため、HTTP プロトコルはクレジット カード番号やパスワードなどの一部の機密情報の送信には適していません。

HTTP プロトコルのこの欠点を解決するには、別のプロトコル、Secure Sockets Layer Hypertext Transfer Protocol HTTPS を使用する必要があります。データ送信のセキュリティを確保するために、HTTPS は HTTP に基づいた SSL プロトコルを追加します。SSL は証明書に依存してサーバーの ID を確認し、ブラウザ間の通信を提供します。およびサーバー通信の暗号化。

HTTP ハイジャック

Https転送中の暗号化のみ、HTTPS公開キー暗号化、プライベートキーの復号化 公開鍵と秘密鍵は、非対称暗号化アルゴリズムによって 生成されます。

HTTPS ハイジャック:

クライアントはサーバーにリクエストを送信し、サーバーは公開キー CA 証明書をクライアントに返し、クライアントが公開キーを取得した後、 certificate クライアント上で対称キー をランダムに生成します。この 対称キー は、後続のすべてのデータ トラフィック の暗号化に使用され、その後、 対称キーは公開鍵を使用して 暗号化してサーバーに送信します。 サーバーは公開鍵に対応する秘密鍵 を持っているので、それを復号します。

HTTPS と HTTP の主な違いは次の 4 つの点です:

1. https プロトコルには

ca が必要です。 証明書を申請する、通常、無料の証明書はほとんどなく、料金を支払う必要があります。

2. http はハイパーテキスト転送プロトコルであり、情報は

平文送信ですが、https は安全な ssl暗号化送信プロトコルです。

3. httpとhttpsでは接続方法が全く異なり、使用するポートも異なります。

前者は80後者は443です。

4. http 接続は非常にシンプルで

ステートレス です。HTTPS プロトコルは SSL HTTPprotocol から構築されており、 #暗号化された送信、ID 認証 ネットワーク プロトコルは、http プロトコルよりも安全です。

注:

ステートレス (プロトコルにはトランザクション処理用のメモリがありません。人生は最初の会議のようなものです):

クライアントとサーバー間のすべての通信は独立したプロセスです、Web アプリケーションはクライアント セッションを追跡する必要があります (マルチステップ通信)、Cookie を使用しないアプリケーション、クライアントはリクエストごとに再認証する必要があります (非現実的)、セッションはユーザー認証後のユーザー行動追跡に使用されます (改善されました)ユーザー エクスペリエンスは向上しますが、攻撃トラフィックが増加します)

DNS ドメイン名解決

クライアントは、IP アドレスまたはホスト名を変換する DNS リクエストを発行します。 .DNS サーバー クライアントのリクエストを受信後:

1,

DNS サーバーのキャッシュを確認し、リクエストされたアドレスまたは名前が見つかった場合は、応答メッセージをクライアントに送信します

2. 見つからない場合は、

データベースの を検索します。要求されたアドレスまたは名前が見つかった場合は、応答メッセージがクライアント

3 に送信されます。見つからない場合は、次に、

ルート ドメイン DNS サーバーにリクエストを送信し、順に ルート ドメインからトップレベル ドメインを検索、次にトップレベルからセカンドレベル ドメインを検索します。を実行し、解決対象のドメインが見つかるまで第 2 レベル ドメインから第 3 レベル ドメインを検索し、クライアントが存在するネットワークの DNS サーバーにアドレスまたは名前、つまり応答メッセージを送信します。応答を受信すると、DNS サーバーは応答をキャッシュに保存し、解析結果をクライアント

4 に送信します。見つからない場合は、

エラー メッセージを返します

関連知識の詳細については、

PHP 中国語 Web サイト をご覧ください。

以上がWeb の普及にはどのような基礎知識が必要ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。