3ウェイ・ハンドシェイク

3ウェイ・ハンドシェイクとは



3ウェイ・ハンドシェイク(スリーウェイハンドシェイク, three-way handshaking)は、TCP(Transmission Control Protocol)などのプロトコルで用いられる、通信における接続(コネクション)を確立するための重要な手順です。この手順によって、データの送受信を行う前に、双方向の通信準備が整えられます。

概要



3ウェイ・ハンドシェイクは、以下の3つのステップで構成されます。

1. SYNパケットの送信: 通信を開始したいクライアント(要求者)は、まずサーバー(通信相手)に対してSYN(Synchronize)パケットを送信します。このSYNパケットには、ランダムな値であるシーケンス番号(順序番号)が含まれています。
2. SYN-ACKパケットの送信: SYNパケットを受信したサーバーは、クライアントからの接続要求を受け入れる準備をします。サーバーは、クライアントに対してSYN-ACK(Synchronize Acknowledge)パケットを送信します。このパケットには、クライアントから受信したシーケンス番号に1を加えた確認応答番号(ACK番号)と、サーバー側で生成したランダムなシーケンス番号が含まれています。また、サーバーは接続を維持するための情報を保持する領域を確保します。
3. ACKパケットの送信: SYN-ACKパケットを受信したクライアントは、接続の確立を完了するために、サーバーに対してACK(Acknowledge)パケットを送信します。このパケットには、サーバーから受信したシーケンス番号に1を加えた確認応答番号(ACK番号)が含まれており、これによってサーバーは接続が確立されたことを確認します。このステップで、クライアントとサーバーの間での通信が開始可能となります。

TCPにおける3ウェイ・ハンドシェイク



TCPは、信頼性の高い通信を実現するために、この3ウェイ・ハンドシェイクを必ず行います。そのため、TCPを利用するアプリケーションは、明示的に3ウェイ・ハンドシェイクを実装する必要はありません。TCP層が自動的にこの処理を行います。

UDPにおける3ウェイ・ハンドシェイク



一方、UDP(User Datagram Protocol)は、コネクションレス型のプロトコルであり、3ウェイ・ハンドシェイクのような接続確立の手順は標準では行いません。しかし、UDPをベースとした上位プロトコル、例えばSIP(Session Initiation Protocol)では、通信の信頼性を高めるために、3ウェイ・ハンドシェイクと同様のメカニズムが用いられることがあります。SIPでは、INVITEメッセージがSYNパケットに、200 OKメッセージがSYN-ACKパケットに、ACKメッセージがACKパケットに相当します。

用語解説



SYN (Synchronize): 接続を要求するパケット。通信を開始するための同期信号。
ACK (Acknowledge): 確認応答パケット。受信側が正常にデータを受信したことを送信側に通知する。

関連事項



TCP (Transmission Control Protocol): 信頼性の高いコネクション型通信を提供するプロトコル。
SIP (Session Initiation Protocol): VoIP(Voice over IP)などで利用されるセッション制御プロトコル。
SYN flood: SYNパケットを大量に送信するDoS攻撃。3ウェイ・ハンドシェイクの仕組みを悪用した攻撃手法。
ハンドシェイク: 通信における接続確立や認証などの手順。
ラウンドトリップタイム: データが送信されてから応答が返ってくるまでの時間。
肯定応答 (ACK): データの正常な受信を知らせる信号。
ウィンドウサイズ: 送信側が一度に送信できるデータ量。フロー制御に使用される。
スライディングウィンドウ: 送信ウィンドウを動的に制御する方式。効率的なデータ転送を実現する。
* フロー制御: データの送受信速度を調整し、受信側の処理能力を超えないようにするメカニズム。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。