TCPコネクションの可視化 — 3ウェイハンドシェイク・データ転送・切断

TCPは「確実に・順番どおり届ける」ための仕組みです。いきなりデータを送るのではなく、まず 3回のやり取り(3ウェイハンドシェイク)で接続を確立し、データには通し番号(シーケンス番号)を付け、受け取ったらACK(確認応答)を返します。「進む」を押して、接続の確立からデータ転送、切断までを1ステップずつ追ってください。各段でクライアント/サーバーの状態(CLOSED→ESTABLISHED…)も変化します。

💻クライアントCLOSED
🖥️サーバーLISTEN

いま何が起きているか

TCPとは — 信頼性のある通信

TCP(Transmission Control Protocol)は、第4層(トランスポート層)のプロトコルで、データを確実に・順番どおり相手へ届けることを保証します。そのために、①送る前に接続を確立し、②データに通し番号を付け、③受け取ったら確認応答(ACK)を返し、④届かなければ再送する、という仕組みを持ちます。動画配信やゲームなど「多少欠けても速さ優先」の場面では、確認応答をしない軽量な UDP が使われます。

3ウェイハンドシェイク(接続の確立)

通信を始める前に、両者が「準備OK」を確認し合う手続きです。3回のやり取りで完了します。

順番向きフラグ意味
クライアント → サーバーSYN「接続したい」+最初のシーケンス番号を通知
サーバー → クライアントSYN + ACK「私もOK(SYN)」+「①を受け取った(ACK)」
クライアント → サーバーACK「②を受け取った」→ ここで接続確立(ESTABLISHED)

なぜ3回なのか? お互いが「相手にちゃんと届く(送受信できる)」ことを確認するには、最低でも「行き(①)・帰り(②)・行きの確認(③)」の3回が必要だからです。2回では、サーバーからクライアントへの経路が生きているか確認できません。

シーケンス番号とACK番号 — 確実に届ける仕掛け

TCPは送るデータの1バイトごとにシーケンス番号(通し番号)を振ります。受信側は「◯◯番まで正しく受け取った、次は△△番から」というACK番号を返します。これにより、順番の入れ替わりを直したり、欠けた部分を検知して再送させたりできます。上の可視化の seqack がこれです。一定時間ACKが返らないと、送信側はそのデータを再送します(タイムアウト再送)。

切断(4ウェイハンドシェイク)

接続を閉じるときは、両方向をそれぞれ閉じるため、FIN と ACK を双方向でやり取りします(計4回)。片方がFINを送っても、もう片方に送り残しがあるかもしれないので、すぐには全部閉じず、片方向ずつ閉じていくのがポイントです。最後にクライアントは、遅れて届くパケットに備えて一定時間 TIME-WAIT で待ってから完全に閉じます。

TCPの状態遷移(頻出)

接続の進行に合わせて、両者の「状態」が移り変わります。上の可視化のバッジがこれです。

クライアント側サーバー側
待ち受けCLOSEDLISTEN
確立中SYN-SENTSYN-RCVD
確立ESTABLISHEDESTABLISHED
切断中FIN-WAIT → TIME-WAITCLOSE-WAIT → LAST-ACK
切断完了CLOSEDCLOSED

基本情報技術者試験ではこう出る

「TCPとUDPの違い(信頼性 vs 高速・軽量)」「3ウェイハンドシェイクの手順(SYN→SYN/ACK→ACK)」「TCPは第何層か(→第4層)」「コネクション型(TCP)とコネクションレス型(UDP)」が定番です。フラグ(SYN・ACK・FIN)の役割や、確認応答・再送による信頼性確保のしくみも問われます。ポート番号でアプリを区別する点は IPアドレスとMACアドレスの可視化 も参考になります。

よくある質問

Q. UDPにはハンドシェイクがないの?
A. ありません。UDPは接続の確立も確認応答もせず、いきなり送りっぱなしにします。そのぶん速く・軽いので、音声・動画・オンラインゲーム・DNS などで使われます。「多少欠けても、遅れるよりマシ」な用途向けです。

Q. なぜ切断は4回で、確立は3回なの?
A. 確立では、サーバーの「同意(SYN)」と「確認(ACK)」を1つのパケットにまとめて送れるので3回で済みます。切断では、片方が終わっても相手にまだ送るデータがあるかもしれず、FINとACKを分けて送るため4回になります。

Q. 「ポートが待ち受け(LISTEN)」ってどういう状態?
A. サーバーが特定のポート番号(例:Webなら443)で「接続が来たら受ける」と待っている状態です。クライアントからのSYNが届くと、そのポートでハンドシェイクが始まります。

関連:IPアドレスとMACアドレスの可視化OSI参照モデルの可視化SSL/TLSの可視化(TCP確立の“上”で動く暗号化)/ 可視化一覧