TCP 接続の 3 ウェイ ハンドシェイクと 4 つのウェーブ

接続を確立する

クライアントとサーバーは、HTTP プロトコルを通じてリクエストを送信し、コンテンツを取得します。

リクエストを送信する前に、まず接続を確立し、ターゲット マシンがリクエストを受け入れられる状態であることを確認する必要があります。

たとえば、宅配業者 (第三者) に Zhang San の家から何かを取りに行くよう依頼したい場合は、まず彼に電話して在宅かどうかを尋ねる必要があります。これは接続を確立するプロセスです。

HTTPプロトコルはアプリケーション層のプロトコルであり、ステータスコード、ヘッダー、ボディなどのreqとresのデータ形式のみを規定します。

ネットワーク接続を確立するには、下位レベルの TCP プロトコルが必要です。

3回の握手

スリーウェイ ハンドシェイク、つまり TCP 接続を確立する場合、クライアントとサーバーは合計 3 つのパケットを送信する必要があります。

まずは例を挙げてみましょう。または、何かを取りに誰かを Zhang San の家に送りたい場合は、「接続を確立」するために (電話ではなく) テキスト メッセージを送信する必要があり、少なくとも 3 つの手順が必要ですが、どれも省略することはできません。

  • 家にいますか?
  • 張三:家にいます
  • あなた:分かった、そこに行きましょう(そしてあなたは誰かをドアに来させるように割り当てます、そして張三は彼を迎える準備ができています)

プロセス

  • クライアントがパケットを送信し、サーバーがそれを受信します。サーバー確認:クライアントの送信能力は正常です。
  • サーバーがパケットを送信し、クライアントがそれを受信します。クライアント確認:サーバーの受信能力は正常です。
  • クライアントがパケットを送信し、サーバーがそれを受信します。サーバーの確認: クライアントがデータを送信しようとしているので、それを受信する準備ができている必要があります。

接続が確立され、データと通信が開始されます。

4回手を振る

ハンドシェイクは接続を確立することです。手を振るということは、別れを告げ、つながりを閉じることを意味します。

先ほどと同じ例です。物を拾うのは一度では終わらず、何度も往復する必要があるかもしれません。さらに、それはすべてあなたが始めたわけではなく、その過程で張三が率先して誰かを送ってあなたに送ってもらうこともあります。

つまり、Chrome で表示されるのは http リクエストであり、実際には複数のネットワーク送信が必要になる場合がありますが、ブラウザはそれらを 1 つにマージします。

物を拾った後は、「接続を閉じてください」というテキスト メッセージを送信して、ドアを閉める時期が来たことを Zhang San に伝える必要があります。それには 4 つの手順が必要です。

[注意] ここでは、接続が完全に閉じられる前に、Zhang San がドアを閉めるのを待つ必要があります。ただ言って無視することはできません。日常生活とは違います。

  • あなた:終わりました
  • チャン・サン: わかりました (現時点ではメッセージを送信し続ける可能性がありますが、あなたはメッセージを受信し続ける必要があります。チャン・サンが送信を完了するまで)
  • 張三: 送信が完了したので、ドアを閉める準備ができています。
  • あなた: OK、ドアを閉めてください (その後、あなたは去っていいです、Zhang San はドアを閉めてください、接続は終了します)

プロセス

  • クライアントがパケットを送信し、サーバーがそれを受信します。サーバーの確認: クライアントはリクエストを完了しました
  • サーバーがパケットを送信し、クライアントがそれを受信します。クライアントの確認: サーバーが受信しました。サーバーが閉じるのを待っています
  • サーバーはコントラクトを送信し、クライアントはそれを受け入れます。クライアントの確認: サーバーは送信を完了し、閉じることができます。
  • クライアントがパケットを送信し、サーバーがそれを受信します。サーバー確認:クローズ可能

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/wuguidian1114/article/details/125964154