図 三つのパケットをやりとりする3WAYハンドシェークの手順
図 三つのパケットをやりとりする3WAYハンドシェークの手順
[画像のクリックで拡大表示]

 TCP通信で利用する仮想通信路(TCPコネクション)を確立する手順のこと。TCPでは,相手との通信に先立ち,必ず仮想的な通信路を作る。こうすることで,ほかの通信と完全に分離でき,アプリケーションはあたかも相手と1対1で通信しているように使える。

 TCPコネクションを確立するとき,送信元(A)はTCPヘッダー中の制御ビット領域にあるSYNフラグをオン(ビットが1)にしたTCPパケットを通信相手(B)に送る(図の1)。これは,AからBの方向へデータを送れる通信路を確保したいという通信許可の要請である。これを受け取った相手のBは,通信を許可するかどうかを判断し,OKなら返事としてACKフラグとSYNフラグをオンにしたTCPパケットをAへ返信する(2)。これは,AからBへの通信を許可するとともに,BからAへの通信許可を求めるという意味だ。そして最後に,送信元AがACKフラグをオンにしたTCPパケットを通信相手Bへ送り,TCPコネクションが確立する(4)。

 上記のようにTCPコネクションを確立するのに3個(3WAY)のパケットがやりとりされるので3WAYハンドシェークと呼ばれる。