一部の文化圏では、2 人の人物が出会ったときに、挨拶として握手を交わすことがよくあります。 握手(ハンドシェイク)という行為は、両者にとって親しみを込めた歓迎のシグナルとなります。 ネットワークを通じた接続も、これと同じようなものです。 最初のハンドシェイクは同期を要求するためのものです。 2 番目のハンドシェイクは、この初期同期要求を受け入れ、逆方向に接続パラメータを同期するためのものです。 3 番目のハンドシェイク セグメントは、接続が確立されたことについて両者の間で了解ができたと宛先に知らせるための確認応答です。
2 つのホストが TCP を使用して通信するときは、まず接続が確立され、それによってデータを交換できるようになります。 通信が完了すると、セッションが閉じられ、接続が終了します。 接続とセッションのメカニズムによって、TCP の信頼性機能が実現されます。 TCP 接続の確立と終了の手順については、図を参照してください。
ホストは、セッション内の各データ セグメントを追跡し、TCP ヘッダー内の情報を使って受信データについての情報を交換します。 TCP は全二重プロトコルであり、各接続が 2 つの一方向通信ストリーム(セッション)を表します。 接続を確立するために、ホストは 3 ウェイ ハンドシェイクを実行します。 TCP ヘッダー内の制御ビットは、接続の進捗と状態を表します。 3 ウェイ ハンドシェイクでは次のことを行います。
- 宛先デバイスがネットワーク上に存在することを確認します。
- 宛先デバイスにアクティブなサービスがあって、送信元クライアントがそのセッションに使おうとしている宛先ポート番号で要求が受け入れられることを確認します。
- 送信元クライアントがそのポート番号で通信セッションを確立しようとしていることを宛先デバイスに通知します。
TCP 接続では、ホスト クライアントがサーバとの接続を確立します。 TCP 接続の確立は、次の 3 ステップから成ります。
手順 1: 開始側クライアントがクライアントからサーバへの通信セッションをサーバに要求します。
手順 2: サーバがクライアントからサーバへの通信セッションを受け入れ、サーバからクライアントへの通信セッションを要求します。
手順 3: 開始側クライアントがサーバからクライアントへの通信セッションを受け入れます。
図のボタン 1 ~ 3 をクリックすると、TCP 接続の確立プロセスを確認できます。
3 ウェイ ハンドシェイク プロセスを理解するためには、2 つのホストの間で交換されるさまざまな値を調べる必要があります。 TCP セグメントのヘッダーには、TCP プロセスを管理するための制御情報が含まれる 6 個の 1 ビット フィールドがあります。 これらのフィールドは次のとおりです。
- URG - Urgent pointer field significant(緊急ポインタ フィールドが重要)
- ACK - Acknowledgement field significant(確認応答フィールドが重要)
- PSH - Push function(プッシュ機能)
- RST - Reset the connection(接続をリセットする)
- SYN - Synchronize sequence numbers(シーケンス番号を同期する)
- FIN - No more data from sender(送信側からのデータはもうない)
ACK フィールドと SYN フィールドは、これから行う 3 ウェイ ハンドシェイクの分析に関係があります。