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

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

Nov 29, 2019 pm 04:43 PM
tcp

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 サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

win10でtcp/ipプロトコルをリセットするにはどうすればよいですか? Windows 10でTCP/IPプロトコルスタックをリセットする方法 win10でtcp/ipプロトコルをリセットするにはどうすればよいですか? Windows 10でTCP/IPプロトコルスタックをリセットする方法 Mar 16, 2024 am 11:07 AM

win10でtcp/ipプロトコルをリセットするにはどうすればよいですか?実際、その方法は非常に簡単で、ユーザーがコマンド プロンプトに直接入力し、ctrl Shift Enter キーの組み合わせを押して操作を実行するか、reset コマンドを直接実行して設定することができます。 Windows 10 で TCP/IP プロトコル スタックをリセットする方法をユーザーに注意深く紹介します。 Windows 10 で tcp/ip プロトコル スタックをリセットする方法 1。 管理者権限 1. ショートカット キー win R を使用してファイル名を指定して実行ウィンドウを直接開き、「cmd」と入力し、ctrl Shift Enter キーの組み合わせを押し続けます。 2. または、スタート メニューでコマンド プロンプトを直接検索し、右クリックします。

TCPを使用してPythonでクライアントとサーバー間の会話を実装する方法 TCPを使用してPythonでクライアントとサーバー間の会話を実装する方法 May 17, 2023 pm 03:40 PM

TCP クライアント TCP プロトコルを使用して継続的な対話を実現するクライアントのサンプル コード: importsocket#クライアント設定 HOST='localhost'PORT=12345#TCP ソケットを作成し、サーバーに接続 client_socket=socket.socket(socket.AF_INET,socket . SOCK_STREAM)client_socket.connect((HOST,PORT))whileTrue:#ユーザー入力を取得 message=input("送信するメッセージを入力してください:&

Java API開発におけるTCP通信にNetty4を使用する Java API開発におけるTCP通信にNetty4を使用する Jun 17, 2023 pm 11:18 PM

TCP は、コンピュータ ネットワーク通信プロトコルの一種であり、コネクション型の伝送プロトコルです。 Javaアプリケーション開発において、TCP通信はクライアントとサーバー間のデータ送信、音声や映像のリアルタイム送信など、さまざまなシーンで広く利用されています。 Netty4 は、サーバーとクライアント間のデータ交換プロセスを最適化し、効率性と信頼性を高めることができる、高性能、拡張性の高いネットワーク プログラミング フレームワークです。 TCP 通信に Netty4 を使用する具体的な実装手順は次のとおりです。

また近いうちにお会いしましょう! TCP が 2 回振られるのを見たことがありますか? 4回の握手はどうなるの? また近いうちにお会いしましょう! TCP が 2 回振られるのを見たことがありますか? 4回の握手はどうなるの? Jul 24, 2023 pm 05:18 PM

ここで言う「コネクション指向」とは、コネクションを確立し、コネクションを利用し、コネクションを解放する必要があることを意味します。接続の確立とは、よく知られている TCP スリーウェイ ハンドシェイクを指します。接続を使用する場合、データは 1 回の送信と 1 回の確認の形式で送信されます。また、一般的な TCP 4 波である接続の解放もあります。

Linux SIGPIPE 信号 Linux SIGPIPE 信号 Feb 19, 2024 pm 04:00 PM

以下では、説明の便宜上、TCPの通信当事者のうち、通信当事者をA、Bに置き換えて説明する。 TCP プロトコルによれば、A が接続を閉じた後も B がデータを送信し続けると、B は A の RST 応答を受信します。 B がデータの送信を続ける場合、システムは SIGPIPE 信号を送信して、接続が切断されたことを通知し、送信を停止します。 SIGPIPE シグナルに対するシステムのデフォルトの処理動作は、プロセス B を終了させることです。 SIGPIPE 信号に対するオペレーティング システムのデフォルトの処理動作は非常に不親切です。これを分析してみましょう。 TCP 通信は全二重チャネルであり、2 つの単信チャネルに相当し、接続の各端が 1 つのチャネルを担当します。反対側が「閉じる」場合、2 つのチャネル全体を閉じることが意図されていますが、ローカル エンドは FIN パケットのみを受信します。 TCP プロトコルの規定に従って、

Java で単一の TCP 接続を使用して複数のファイルを送信するにはどうすればよいですか? Java で単一の TCP 接続を使用して複数のファイルを送信するにはどうすればよいですか? Apr 27, 2023 am 08:49 AM

1 つの TCP 接続を使用して複数のファイルを送信することについてこのブログが書かれているのはなぜですか?最近関連の本を読んでいるのですが、単に Socket を使ってプログラミングするのは問題ありませんが、これはいくつかの基本的な概念を確立するだけです。本当の問題に対してはまだ何もできません。ファイルを転送する必要がある場合、データ (バイナリ データ) を送信しただけのように見えますが、ファイルに関する一部の情報 (ファイル拡張子) が失われていることがわかります。そして、毎回 1 つのファイルを送信するために 1 つのソケットしか使用できないため、連続してファイルを送信する方法はありません (ファイルの送信を完了するにはストリームを閉じることに依存しているため、実際にはファイルの長さがわかりません。したがって、1 つのソケット接続がファイルを表す場合にのみファイルを送信できます)。

TCPとIPの違いは何ですか TCPとIPの違いは何ですか Sep 04, 2023 pm 02:19 PM

TCP と IP はインターネットにおける 2 つの異なるプロトコルです: 1. TCP はトランスポート層プロトコル、IP はネットワーク層プロトコル; 2. TCP はデータ パケットのセグメント化、並べ替え、確認、再送信などの機能を提供します。プロトコルはデータ パケットの送信元アドレスと宛先アドレスを提供する役割を果たします; 3. TCP は接続指向のプロトコルですが、IP プロトコルはコネクションレスです; 4. TCP はフロー制御と輻輳制御も提供します。

インタビュアーは、「TCP 接続は HTTP リクエストをいくつ送信できますか?」と尋ねました。 インタビュアーは、「TCP 接続は HTTP リクエストをいくつ送信できますか?」と尋ねました。 Feb 22, 2023 pm 12:00 PM

かつて、面接でよくある質問で、「ブラウザに URL が入力されてからページが表示されるまでの過程で何が起こっていますか?」という質問がありました。予習をした学生ならほとんど答えられると思いますが、「受信したHTMLに数十個の画像タグが含まれている場合、どのような方法で、どのような順序で、どれだけの接続が確立され、どのようなプロトコルでダウンロードされるのか」と続けて尋ねると、これらの画像はどうでしょうか?

See all articles