ホームページ >よくある問題 >メッセージを 3 つも指に挟むとはどういう意味ですか?

メッセージを 3 つも指に挟むとはどういう意味ですか?

藏色散人
藏色散人オリジナル
2020-06-29 09:22:135724ブラウズ

3 メッセージ ハンドシェイクとは、毎回送信されるデータ量を追跡および交渉し、送受信データ セグメントの同期を確保し、受信したデータ量に基づいてデータ送受信を確認することを指します。取り消され、仮想接続が確立されます。

メッセージを 3 つも指に挟むとはどういう意味ですか?

いわゆる「3 ウェイ ハンドシェイク」: 毎回送信されるデータ量を追跡およびネゴシエートし、データの送受信が確実に行われるようにするため。データ セグメントは、受信したデータに従って同期されます。データが送受信されると、接続がキャンセルされ、仮想接続が確立されます。

信頼性の高い配信を提供するために、TCP は新しいデータを送信する前に特定の順序でデータ パケットにシーケンス番号を付け、これらのパケットがターゲット マシンに配信された後に確認メッセージを要求します。 TCP は、大量のデータを送信するために常に使用されます。 TCP は、アプリケーションがデータを受信した後に確認する必要がある場合にも使用されます。

TCP 接続を確立するには、通信する双方の当事者が相手から次の情報を知っている必要があります:

スリーウェイ ハンドシェイク

1 . 相手側のメッセージ送信の開始シーケンス番号。

2. 相手が送信したデータのバッファサイズ。

3. 受信できるメッセージセグメントの最大長、MSS。

4. サポートされている TCP オプション。

TCP プロトコルでは、通信当事者は 3 つの TCP メッセージ セグメントを通じて上記の情報を理解し、これに基づいて TCP 接続を確立します。通信当事者間での 3 つの TCP メッセージ セグメントの交換プロセスは、次のとおりです。これは、TCP 接続を確立するスリーウェイ ハンドシェイク プロセスとして一般に知られています。

接続が確立されると、次のようになります:

1. TCP 接続の通信当事者は両方とも、接続の相手によって送信される最初のバイトのシーケンス番号を知ることができます (相手側に送信される)確認番号、A が B に送信する確認番号は B が送信するシーケンス番号であり、B にも同じことが当てはまります);

2. 両当事者は、その MSS を知ることができます。接続上で送信できるため、ハンドシェイク フェーズ中に交換することを選択できます。SYN メッセージと SYN ACK メッセージの MSS オプションの小さい方の値が実際の値として使用されます (

3)。両方とも相手の受信バッファ サイズを知ることができます;

4. 相手が SACK、ウィンドウ スケーリング、その他のオプションを使用できるかどうかを知ることができます。

この情報に基づいて、双方は TCP 接続 (x, y) を確立し、この接続に基づいてメッセージ セグメントの送信を開始できます。

TCP 接続の確立には 3 ウェイ ハンドシェイク方式が使用されます。2 つのホストが同時に同じソケット間で接続を確立しようとした場合、確立される接続は 1 つだけです (これら 2 つの接続は 1 つの接続とみなされます)。すべての接続はそのエンドポイントによって識別されるため、同一、つまり同じ接続です。最初のリクエストの結果として (x, y) で識別される接続が確立され、2 番目のリクエストでも (X, y) で識別される接続が確立される場合、TCP エンティティ内には TCP 接続テーブルが 1 つだけ存在します。 (x,y)。

プロセス

初回

最初のハンドシェイク: 接続を確立するとき、クライアントは syn パケット (seq=j) をサーバーに送信します。そして、SYN_SENT 状態に入り、サーバーの確認を待ちます; SYN: シーケンス番号を同期します。

2 回目のハンドシェイク: サーバーは syn パケットを受信し、クライアントの SYN (ack=j 1) を確認する必要があり、この時点で SYN パケット (seq=k)、つまり SYN ACK パケットも送信します。サーバーは SYN_RECV 状態になります。

3 回目

3 回目のハンドシェイク: クライアントはサーバーから SYN ACK パケットを受信し、確認パケット ACK (ack=k 1) をサーバーに送信します。 、クライアントはサーバーと ESTABLISHED (TCP 接続成功) 状態に入り、3 ウェイ ハンドシェイクを完了します。

3 ウェイ ハンドシェイクが完了すると、クライアントとサーバーはデータの送信を開始します。上記のプロセスには、いくつかの重要な概念があります:

(1) 未接続のキュー

3 回後 ハンドシェイク プロトコルでは、サーバーは未接続のキューを維持し、各クライアントの SYN パケット (seq=j) のエントリを開きます。このエントリは、サーバーが SYN パケットを受信し、クライアントに確認を送信したことを示します。クライアントの確認を待っています。これらのエントリによって識別される接続は、サーバー上で Syn_RECV 状態にあり、サーバーがクライアントの確認パケットを受信すると、エントリは削除され、サーバーは ESTABLISHED 状態になります。

(2) バックログ パラメータ

は、対応するソケットに対してカーネルによってキューに入れられる接続の最大数を示します。 SYN-ACK 再送信回数 サーバーが SYN-ACK パケットを送信した後、顧客確認パケットを受信しない場合、サーバーは最初の再送信を実行します。一定の時間待機しても顧客確認パケットを受信できない場合、サーバーは最初の再送信を実行します。再送回数がシステムで指定された最大再送回数を超えた場合、システムは準接続キューから接続情報を削除します。各再送の待ち時間は必ずしも同じではないことに注意してください。

(3) 半接続生存時間

# は、半接続キューのエントリが存続する最長時間、つまりサーバーが SYN パケットを受信して​​からの最長時間を指します。メッセージが無効であることを確認するまでの時間の値は、すべての再送要求パケットの最長待ち時間の合計です。半接続生存時間をタイムアウト時間や SYN_RECV 生存時間と呼ぶこともあります。

以上がメッセージを 3 つも指に挟むとはどういう意味ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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