ホームページ  >  記事  >  運用・保守  >  TCPの3ウェイハンドシェイクと4ウェイウェーブについて詳しく解説

TCPの3ウェイハンドシェイクと4ウェイウェーブについて詳しく解説

青灯夜游
青灯夜游転載
2019-11-29 16:43:352245ブラウズ

TCPの3ウェイハンドシェイクと4ウェイウェーブについて詳しく解説

1. TCP (伝送制御プロトコル)

TCP は接続指向であり、信頼性の高いプロセスです。 -プロセス間通信プロトコル
TCPは全二重サービスを提供します。つまり、データは同時に両方向に送信できます

2. TCPセグメント(カプセル化) IP データグラム内)

TCPの3ウェイハンドシェイクと4ウェイウェーブについて詳しく解説

1、ポート番号

1) 送信元ポート番号: 送信者に対応するポート番号process では、送信元 IP とポートの機能は、メッセージの返信アドレスをマークすることです。

2) ターゲット ポート番号: 受信側のプロセスに対応し、受信側はデータ セグメントを受信した後、このポートに基づいてデータをアプリケーション インターフェイスにマッピングします。

注: TCP ヘッダーの送信元ポート番号と宛先ポート番号は、TCP 接続を一意に決定するための IP データグラムの送信元 IP と宛先 IP と同じです。

2. シーケンス番号: 送信側は、受信側による正しい再構成を容易にするために各バイトに番号を付けます。

3. 確認番号: 送信者からの情報を確認するために使用されます。

4. 制御ビット

1) URG: 緊急ポインタ有効ビット。
2) ACK: シーケンス番号確認ビット このビットが 1 の場合、送信者のデータを確認するために使用されます。
3) PSH: フラグビットが 1 の場合、受信アンプはデータエンドをできるだけ早くアプリケーション層に配信する必要があります。
4) RST: 1 の場合、TCP 接続を再確立します。
5) SYN: 同期シーケンス番号ビット。TCP が接続を確立する必要がある場合は、この値を 1 に設定します。
6) FIN: TCP の場合この位置を 1

5 に設定します。ウィンドウ値: ローカルで受信可能なデータ セグメントの数を示すために使用されます。ウィンドウ サイズは可変です。これにより、送信側がデータを送信する速度が制御され、フロー制御が実現されます。

6. チェックサム: エラー制御に使用されます

7. 緊急ポインタ: 緊急ポインタは、URG フラグが 1 に設定されている場合にのみ有効です。

8. オプション: TCP ヘッダーにある 40 バイトのオプション情報 最も一般的なオプション フィールドは、最長のメッセージ サイズです。

注: 8 つのフィールドのうち、より重要なものは、ポート番号、シーケンス番号、確認シーケンス番号、および ACK、SYN、および FIN の 3 つの制御ビットです。

3. TCP スリーウェイ ハンドシェイク (Wireshark によるパケット キャプチャ分析)

TCPの3ウェイハンドシェイクと4ウェイウェーブについて詳しく解説

#PC1実マシンの場合、PC2 は仮想マシン CentOS です。PC1 と PC2 は同じ仮想ネットワーク カード VNet8 にバインドされています。PC1 の IP アドレスは 192.168.90.10、PC2 の IP アドレスは 192.168.90.40 です。事前に CentOS 上にアカウント Web サイトを構築し、PC1 が PC2 にアクセスし、次に示すようにパケット キャプチャ ツールを使用して TCP レポートをキャプチャします:

1. 最初のハンドシェイク

TCPの3ウェイハンドシェイクと4ウェイウェーブについて詳しく解説

上記のように、パケット キャプチャ ツールを使用すると、送信元アドレス (source) は 192.168.90.10、送信元ポート番号 (source port) は 55604、宛先アドレス (destination) は 192.168.168.90 であることがわかります。 .40、宛先ポート番号(宛先ポート)は80です。初期シーケンス番号(シーケンス番号)と確認シーケンス番号(確認応答番号)は両方とも 0 です。最初のハンドシェイクでは、PC1 はランダムなポート番号を使用して、PC2 のポート 80 に接続確立要求を送信します。このプロセスの最も一般的な表現は、TCP の SYN 制御ビットが 1 で、他の 5 つの制御ビットがすべて 0 であることです。

2. 2 番目のハンドシェイク

TCPの3ウェイハンドシェイクと4ウェイウェーブについて詳しく解説

上に示すように、2 番目のハンドシェイク、送信元アドレス、ポート番号、宛先アドレス、およびポートは、ハンドシェイクと同じです。最初のハンドシェイク 代わりに、初期シーケンス番号は 0、確認応答シーケンス番号は 1、制御ビットの ACK と SYN は両方とも 1 です。 2 番目のハンドシェイクは、実際には 2 つの部分で完了します:

1) PC2 は PC1 からの要求を受信し、PC1 に確認メッセージで応答します。このプロセスの兆候は、TCP ACK 制御ビットが 1 で、他の 5 つの制御ビットが 1 であることです。がすべて 0. であり、シリアル番号が PC1 の最初のシリアル番号に 1 を加えたものであることを確認します。
2) PC2 も PC1 への接続を確立する要求を送信します。このプロセスのフラグは最初のハンドシェイクと同じです。TCP の SYN 制御ビットは 1 で、他の 5 つの制御ビットはすべて 0 です。

3. 3 回目のハンドシェイク

TCPの3ウェイハンドシェイクと4ウェイウェーブについて詳しく解説

図に示すように、送信元アドレス、ポート番号、宛先アドレス、ポート番号は最初のハンドシェイクと同じです。ここで、最初のシーケンス番号は 2 番目のハンドシェイクの確認シーケンス番号 1 であり、確認シーケンス番号は 2 番目のハンドシェイクの最初のシーケンス番号に 1 を加えたものです。 PC1 が PC2 の応答 (要求と確認を含む) を受信すると、PC2 に確認メッセージで応答する必要もあります。このプロセスの最も一般的な兆候は、TCP ACK 制御ビットが 1、他の 5 つの制御ビットが 0、および確認シーケンス番号は、PC2 の初期シリアル番号に 1 を加えたものです。これにより、3 ウェイ ハンドシェイクが完了し、PC1 と PC2 の間に TCP 接続が確立されます。

4. 4 波の TCP 接続終了

TCPの3ウェイハンドシェイクと4ウェイウェーブについて詳しく解説

このとき、PC1 は CentOS で、対応する IP アドレスは 192.168.90.40、PC2 は実機で、対応する IP アドレスは 192.168.90.10 となります。

1. 初めての Wave

TCPの3ウェイハンドシェイクと4ウェイウェーブについて詳しく解説

PC1 (サーバー) が FIN ビットと ACK ビット 1 を PC2 に送信します。クライアントの TCP セグメント。

2. 2 回目のウェーブ

TCPの3ウェイハンドシェイクと4ウェイウェーブについて詳しく解説

PC2 クライアントは、ACK ビット 1 を持つ TCP セグメントを PC1 サーバーに返します。

3. 3 回目のウェーブ

TCPの3ウェイハンドシェイクと4ウェイウェーブについて詳しく解説

PC2 クライアントは、FIN ビットと ACK ビットが 1 の TCP セグメントを PC1 サーバーに送信します。

4. 4 回目のウェーブ

TCPの3ウェイハンドシェイクと4ウェイウェーブについて詳しく解説

PC1 サーバーは ACK ビット 1 を持つ TCP セグメントを PC2 クライアントに返し、接続の終了を完了します。 。

5. TCP 4 ウェーブのセミクローズドの概念 (TCP 側はデータの送信を停止しますが、受信は可能です)

1) PC2 クライアント FIN メッセージ セグメント、セミクローズド接続、PC1サーバー ACK セグメントを送信し、ハーフクローズで受信します。

2) PC1 サーバーはデータを送信し続けますが、PC2 クライアントは ACK 確認のみを送信し、データは送信しません。

3) PC1 サーバーはすべてのデータを送信すると、FIN セグメントを送信し、PC2 クライアントは ACK セグメントを送信して、TCP 接続を閉じます。

以上がTCPの3ウェイハンドシェイクと4ウェイウェーブについて詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。