3ウェイハンドシェイクは、TCPの接続を確立する基本手順です。開始側のSYN、応答側のSYN+ACK、開始側のACKを、送信方向と一緒に覚えると整理できます。
この記事では3つのやり取りと番号の意味を確認します。接続後の確認応答・再送・通信制御は、最後の無料noteで続けて学べます。
1.3つのやり取りを図で確認する

| 順序 | 送信方向 | 内容 |
|---|---|---|
| 1 | 開始側 → 応答側 | SYN:接続開始の要求 |
| 2 | 応答側 → 開始側 | SYN+ACK:自分の要求と、相手の要求への確認 |
| 3 | 開始側 → 応答側 | ACK:相手の要求への確認 |
2.シーケンス番号と確認応答番号
開始側の初期シーケンス番号をx、応答側をyとします。基本の手順でSYNは番号を1つ消費するため、応答側の確認応答番号はx+1、最後の開始側の確認応答番号はy+1になります。確認応答番号は、次に受け取りたい番号を示します。
3.接続と暗号化を区別する
この手順はTCPの接続を確立するもので、通信内容を暗号化する手順ではありません。TLSのハンドシェイクとも区別します。また、接続が確立しても、その後に損失や切断が起こらない保証になるわけではありません。
理解を確かめる確認問題
基本の3ウェイハンドシェイクの2番目に、応答側が送るものはどれでしょうか。
ア:SYNのみ イ:SYN+ACK ウ:FINのみ
解答・解説を見る
正解はイです。応答側は相手のSYNを確認しつつ、自分のSYNも送ります。
まとめ:方向とSYN・ACKの役割で追う
3つのやり取りを矢印で追い、どちらの初期番号を確認しているかを整理しましょう。接続後の通信でも、シーケンス番号と確認応答が重要になります。
参考:RFC 9293:TCP

コメント