TCP handshake (TCP ハンドシェイク)
TCP (Transmission Control Protocol) は、IP ネットワーク上で TCP/IP 接続を設定するために、 3 ウェイ・ハンドシェイク(別名 TCP ハンドシェイク、3 メッセージハンドシェイク、 SYN-SYN-ACK)を使用します。
TCP セッションをネゴシエートして TCP セッションを開始するために TCP によって送信される 3 つのメッセージは、それぞれ SYN、SYN-ACK、ACK と呼ばれており、それぞれ SYNchronize, SYNchronize-ACKnowledgement, ACKnowledge を表します。 HTTP ブラウザーのリクエストなどのデータを送信する前に互いに情報を双方向に渡したい 2 台のコンピューターが、接続の引数をネゴシエートすることができるように、3つのメッセージの仕組みが設計されています。
ホスト(一般的にはブラウザー)は、 TCP SYNchronize パケットをサーバーに送信します。サーバーは SYN を受信し、 SYNchronize-ACKnowledgement を返送します。ホストはサーバーの SYN-ACK を受信し、ACKnowledge を送信します。サーバーは ACK を受信し、 TCP ソケット接続が確立されます。
このハンドシェイク手順は、安全な接続を作成する際に、DNS ルックアップの後、および TLS ハンドシェイクの前に実行されます。接続は 4 度目のハンドシェイクを通じて、接続の各終端で独立して終了させることができます。