TCPの3ウェイハンドシェイクと4ウェイウェーブについて詳しく解説
1. TCP (伝送制御プロトコル)
TCP は接続指向であり、信頼性の高いプロセスです。 -プロセス間通信プロトコル
TCPは全二重サービスを提供します。つまり、データは同時に両方向に送信できます
2. TCPセグメント(カプセル化) IP データグラム内)
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 によるパケット キャプチャ分析)
1) PC2 は PC1 からの要求を受信し、PC1 に確認メッセージで応答します。このプロセスの兆候は、TCP ACK 制御ビットが 1 で、他の 5 つの制御ビットが 1 であることです。がすべて 0. であり、シリアル番号が PC1 の最初のシリアル番号に 1 を加えたものであることを確認します。
2) PC2 も PC1 への接続を確立する要求を送信します。このプロセスのフラグは最初のハンドシェイクと同じです。TCP の SYN 制御ビットは 1 で、他の 5 つの制御ビットはすべて 0 です。
4. 4 波の TCP 接続終了
このとき、PC1 は CentOS で、対応する IP アドレスは 192.168.90.40、PC2 は実機で、対応する IP アドレスは 192.168.90.10 となります。
1. 初めての Wave
PC1 (サーバー) が FIN ビットと ACK ビット 1 を PC2 に送信します。クライアントの TCP セグメント。
2. 2 回目のウェーブ
PC2 クライアントは、ACK ビット 1 を持つ TCP セグメントを PC1 サーバーに返します。
3. 3 回目のウェーブ
PC2 クライアントは、FIN ビットと ACK ビットが 1 の TCP セグメントを PC1 サーバーに送信します。
4. 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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









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 クライアント 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("送信するメッセージを入力してください:&

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

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

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

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

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

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