ハンドシェイク
現実の世界では、握手は2人の間で行う一般的なあいさつです。同様に、コンピューターのハンドシェイクは、2つのコンピューターシステム間で行うあいさつの役割を果たします。これは、2つのホスト間のネットワーク接続を初期化するためによく使用されます。
コンピューターのハンドシェイクは、同じプロトコルで相互に通信する任意の2つのシステム間で完了できます。2つのシステムは、クライアントとサーバーの場合もあれば、単にP2Pネットワーク上にある2台のコンピューターの場合もあります。ハンドシェイクによって、接続するシステムの身元が確認され、追加の通信が可能になります。
ネットワーク上で行われるハンドシェイクは、一般に3ウェイハンドシェイクまたは「SYN-SYN-ACK」と呼ばれます。ハンドシェイクが正常に完了するまでには、次の7つの手順があります。
- ホストAが、同期(SYN)パケットをホストBに送信します。
- ホストBが、ホストAからのSYN要求を受信します。
- ホストBが、同期確認応答(SYN-ACK)メッセージをホストAに送信します。
- ホストAが、ホストBからのSYN-ACKメッセージを受信します。
- ホストAが、確認応答(ACK)メッセージをホストBに送信します。
- ホストBが、ホストAからのACKメッセージを受信します。
- 2つのシステム間の接続が確立されます。
システムがハンドシェイクを開始すると、結果として次の3つの可能性があります。
- 応答なし – ハンドシェイクを受信するシステムが利用できない場合や、開始側のシステムが使用するプロトコルをサポートしていない場合、要求に応答しないことがあります。
- 接続拒否 – ハンドシェイクを受信するシステムは利用可能で要求を理解しますが、接続を拒否します。
- 接続受け入れ – ハンドシェイクを受信するシステムは利用可能で、要求を受信し、接続を受け入れます。
上記の3つの結果のうち、ハンドシェイクが完了するのは3番目だけです。ハンドシェイクが成功すると、2つのシステムは確立されたプロトコル上で通信を開始し、データを転送できるようになります。ハンドシェイクを使用するプロトコルの例には、TCP、TLS、SSLがあります。
知識をテストする