スポンサーリンク

【応用情報技術者試験】3ウェイハンドシェイク

3ウェイハンドシェイクは、TCPの接続を確立する基本手順です。開始側のSYN、応答側のSYN+ACK、開始側のACKを、送信方向と一緒に覚えると整理できます。

この記事では3つのやり取りと番号の意味を確認します。接続後の確認応答・再送・通信制御は、最後の無料noteで続けて学べます。

1.3つのやり取りを図で確認する

開始側からSYN、応答側からSYN+ACK、開始側からACKを送る
開始側からSYN、応答側からSYN+ACK、開始側からACKを送る
順序送信方向内容
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

コメント