スリーウェイハンドシェイク 【three-way handshaking】 3ウェイハンドシェイク
概要
スリーウェイハンドシェイク(three-way handshaking)とは、IPネットワーク上でTCPによる接続(コネクション)を確立するための手順。パケットの送受信を3回行うことからこのように呼ばれる。TCP(Transmission Control Protocol)はIPとHTTPなどの間にあるトランスポート層の通信規約(プロトコル)の一つで、通信相手との間にコネクション(connection)と呼ばれる論理的な伝送路を形成し、信頼性の高い通信を行うことができる。
スリーウェイハンドシェイクではまず最初に、接続を要求する側(クライアント)がランダムに決めた整数である「シーケンス番号」を記載した「SYNパケット」(TCPヘッダのSYNフラグがオンに設定されたパケット)を相手方に送る。
次に、接続を受ける側(サーバ)は、ランダムに決めたシーケンス番号と、相手方から受け取ったシーケンス番号に1を加えた「ACK番号」(確認応答番号)を記載した「SYN+ACKパケット」(SYNフラグとACKフラグがオンになったパケット)を返信する。
最後に、クライアントがサーバから受け取ったシーケンス番号に1を加えた値をACK番号として記載した「ACKパケット」(ACKフラグがオンになったパケット)を送信することで接続の確立が完了する。以降は、この手続きで共有したシーケンス番号とACK番号を用いて、互いに送信したデータが相手方に正しく着信したかどうかを確認しながら通信を行う。
(2024.7.8更新)