コンピューティングにおいて、ハンドシェイクとは、2つのデバイスが互いの信号を認証・検証することで通信リンクを確立するプロセスである。例えば、ハイパーバイザとゲスト仮想マシン内のアプリケーション間のハンドシェイクが挙げられる。
電気通信において、ハンドシェイクとは、通信の開始時に通信リンクのプロトコルを確立する情報交換を通じて、 2 つの参加者 (例:アリスとボブ) 間で行われる自動化された交渉プロセスであり、本格的な通信が始まる前に行われます。 [ 1 ]ハンドシェイクプロセスは通常、コンピュータが別のデバイスと通信しようとする際に、通信のルールを確立するために行われます。通信リンクを確立するために、通常、2 つのデバイス間で信号が交換されます。たとえば、コンピュータがモデムなどの別のデバイスと通信する場合、2 つのデバイスは互いに電源が入っていて動作準備が整っていることを通知し、使用するプロトコルに合意します。[ 2 ]
ハンドシェイクは、情報転送速度、符号化アルファベット、パリティ、割り込み手順、その他のプロトコルまたはハードウェア機能など、通信チャネルの両端の機器やシステムにとって許容可能なパラメータをネゴシエートすることができます。ハンドシェイクは、2 つのエンティティ間の通信技術です。ただし、TCP/IP RFC では、「ハンドシェイク」という用語は、TCP の 3 ウェイ ハンドシェイクを指す場合によく使用されます。たとえば、「ハンドシェイク」という用語は、FTP または SMTP を扱う RFC には存在しません。例外の 1 つは、トランスポート層セキュリティ、TLS、セットアップ、FTP RFC 4217 です。FTP RFC 3659 では、「ハンドシェイク」という用語の代わりに、コマンドの受け渡しを表す用語として「会話」という用語が使用されています。[ 3 ] [ 4 ] [ 5 ]
単純なハンドシェイクプロトコルでは、受信側が「前回のメッセージを受け取りました。次のメッセージを受け取る準備ができています」という意味のメッセージを送信するだけで済む場合があります。より複雑なハンドシェイクプロトコルでは、送信側が受信側が受信準備ができているかどうかを尋ねたり、受信側が「前回のメッセージを正しく受信できませんでした。再送信してください」という意味の否定応答を返したりすることができます(たとえば、データが途中で破損した場合など)。 [ 6 ]
ハンドシェイクは、比較的異質なシステムや機器を通信チャネルを介して接続する際に、パラメータを設定するための人的介入を必要とせずに接続することを容易にする。

通常のTCP接続を確立するには、次の3つの手順が必要です。
クライアントとサーバーが接続確立時に0などのデフォルトのシーケンス番号を使用しない理由は、同じ接続の2つのインスタンスが同じシーケンス番号を早すぎるタイミングで再利用することを防ぐためです。つまり、以前のインスタンスの接続のセグメントが、後のインスタンスの接続に干渉する可能性があるということです。
シンプルメール転送プロトコル(SMTP)は、電子メール送信における主要なインターネット標準規格です。認証、暗号化、最大メッセージサイズなどをネゴシエートするためのハンドシェイク機能が含まれています。
トランスポート層セキュリティ(SSLまたはTLS)接続が開始されると、レコードには「制御」プロトコル、すなわちハンドシェイクメッセージングプロトコル(コンテンツタイプ22)がカプセル化されます。このプロトコルは、TLSによる実際のアプリケーションデータの交換に必要なすべての情報を両者間で交換するために使用されます。このプロトコルは、これらの情報をフォーマットまたは含むメッセージと、それらの交換順序を定義します。これらはクライアントとサーバーの要求に応じて異なる場合があり、つまり、接続を確立するための手順は複数存在します。この最初の交換の結果、TLS接続が成功する(両者がTLSを使用してアプリケーションデータを転送する準備が整う)か、または(以下に指定する)警告メッセージが出力されます。
このプロトコルは、セッションの安全な属性をネゴシエートするために使用されます。(RFC 5246、p. 37)[ 7 ]
無線LANのWPA2規格は、 IEEE 802.11i-2004で定義されている4ウェイハンドシェイクを使用します。
ハンドシェイクの典型的な例の一つは、ダイヤルアップモデムです。ダイヤルアップモデムは通常、接続が最初に確立されたときに短時間通信パラメータをネゴシエートし、その後、そのパラメータを使用して、チャネルの品質と容量に応じて最適な情報転送を実現します。スピーカー出力を備えた一部のモデムが接続確立直後に発する「キーキー」という音(実際には1秒間に100回ピッチが変化する音)は、両端のモデムがハンドシェイク手順を行っている音です。手順が完了すると、オペレーティングシステムやモデムを制御するアプリケーションの設定によっては、スピーカーの音が消える場合があります。
このよく使われる用語は、シリアル接続におけるRTS信号とCTS信号の使用を指します。しかし、厳密には正しくありません。これは真のハンドシェイクではなく、フロー制御と表現する方が適切です。
対応機器向けに特別な急速充電機能を提供する充電器では、充電プロセス中に出力電圧を上げて電力伝送量を増加させます。しかし、これは非対応機器に深刻な損傷を与えたり、火災の原因となる可能性もあります。そのため、機器と充電器が事前にハンドシェイクを行い、相互にサポート可能な充電パラメータについて「合意」することが非常に重要です。このような充電器が接続された機器を識別できない場合、または互換性を判断できない場合は、USB規格に準拠した通常の、しかしはるかに遅い充電パラメータに切り替わります。