Wireshark での TCP 3 ウェイ ハンドシェイク分析

Wireshark Deno Tcp 3 U Ei Handosheiku Fen Xi



伝送制御プロトコルは、OSI または TCP/IP モデルのトランスポート層で非常に重要なプロトコルです。 TCP には次のような多くの利点があります。

  • 送信されたデータが一定時間内に受信者によって確認されない場合、TCP は再送信を行います。
  • TCP は、データを送信する前に何らかの接続を確立します。この接続を 3 ウェイ ハンドシェイクと呼びます。
  • TCP には輻輳制御メカニズムがあります。
  • TCP は、いくつかの方法を使用してエラーを検出できます。

主にTCP 3ウェイハンドシェイクについて学びましょう。 3 ウェイ ハンドシェイクのための Wireshark の重要なフィールドについても学びましょう。







3 ウェイ ハンドシェイク

3 ウェイ ハンドシェイクで発生する 3 つのフレーム交換があります。



  1. SYN
  2. 表示+確認
  3. 確認

最初のフレームは、常にクライアントからサーバーに送信されます。簡単な図からこれを理解しましょう。



'クライアントサーバー'

Frame1: クライアントが SYN フレームをサーバーに送信----------------------------------->

----------------------------------------------- サーバーが SYN+ACK フレームを送信するクライアントへ: Frame2

フレーム 3: クライアントがサーバーに ACK フレームを送信----------------------------------->

これら 3 つのフレームは Wireshark で確認できます。 「tcp」フィルタを Wireshark で使用して、すべての TCP フレームを表示できます。 3 つのフレームのスクリーンショットを次に示します。





3 つのフレームすべてを詳細に理解しましょう。



SYN

このフレームには、サーバーに通知するクライアントの機能に関する多くの情報が含まれています。次のスクリーンショットは、SYN フレームのすべての重要なフィールドを示しています。

SYN フレームの重要なフィールドは次のとおりです。

ソースポート: 50602
宛先ポート: 80
シーケンス番号: 0
承認番号: 0
ヘッダー長: 32 バイト
フラグ: 0x002 (SYN):
確認: 設定されていません
プッシュ:未設定
リセット:未設定
Syn: Set -----> これは SYN フレームであるため、このビットが設定されます。
フィン:未設定

ウィンドウ: 65535
緊急ポインター: 0
TCP オプション - 最大セグメント サイズ: 1460 バイト
TCP オプション - ウィンドウ スケール: 3 (8 倍)
TCP オプション - SACK 許可

表示+確認

このフレームには、クライアントに通知するサーバーの機能に関する多くの情報が含まれています。次のスクリーンショットは、SYN+ACK フレームのすべての重要なフィールドを示しています。

このフレームは、クライアントから送信された SYN フレームにも確認応答します。

SYN+ACK フレームの重要なフィールドは次のとおりです。

ソースポート: 80
宛先ポート: 50602
シーケンス番号: 0
承認番号: 1

ヘッダー長: 32 バイト (8)
フラグ: 0x012 (SYN、ACK)
確認: 設定
プッシュ:未設定
リセット:未設定
彼:セット
フィン:未設定

ウィンドウ: 29200
緊急ポインター: 0
TCP オプション - 最大セグメント サイズ: 1412 バイト
TCP オプション - SACK 許可
TCP オプション - ウィンドウ スケール: 7 (128 倍)

このフレームに「Acknowledge」ビットと「SYN」ビットが設定されていることがわかります。これは、このフレームが SYN+ACK であるためです。

確認

このフレームは、3 ウェイ ハンドシェイクの最後のフレームであり、クライアントによる SYN+ACK の確認応答でもあります。次のスクリーンショットは、ACK フレームのすべての重要なフィールドを示しています。

ACK フレームの重要なフィールドは次のとおりです。

ソースポート: 50602
宛先ポート: 80
シーケンス番号: 1
承認番号: 1
ヘッダー長: 20 バイト (5)
フラグ: 0x010 (ACK)
緊急:未設定
確認: 設定
プッシュ:未設定
リセット:未設定
Syn: 未設定
フィン:未設定

ウィンドウ: 32768

ここでは、これが ACK フレームであるため、「Acknowledge」ビットのみが設定されます。

いくつかの重要な共通フィールドの説明

ポート 80 : このチュートリアルでは、1 つの固定ポート 80 を観察しました。これは HTTP キャプチャであり、HTTP 通信用にポート 80 が (サーバー側で) 固定されているためです。

シーケンス番号 : そのフレームのシーケンス番号。同期は最初のフレームなので、シーケンス番号は 0 です。

TCP フラグ:

了承 – このビットは、フレームが ACK の場合に設定されます。例: SYN+ACK、ACK フレーム。

SYN – このビットは、フレームが SYN の場合に設定されます。例: SYN.

: このフィールドは、受信モードでの送信者の最大ウィンドウ サイズを共有します。例: SYN フレームのウィンドウ サイズは 65535 バイトです。これは、受信側が任意の時点で最大 65535 バイトの TCP データを受信できることを意味します。

SACK 許可 : このビットは、送信が SACK [選択的肯定応答] をサポートしている場合に設定されます。

最大セグメント サイズ :MSSと呼ぶこともできます。これは、送信者が受信できる最大データ フレームを定義します。例: SYN フレームで MSS を 1460 バイトとして取得します。

結論

TCP 3 ウェイ ハンドシェイクと、SYN、SYN+ACK、および ACK フレームのすべての有用なフィールドについて学びました。 TCP について詳しく知りたい場合は、この RFC リンクをたどることができます。 https://tools.ietf.org/html/rfc793 .