接続の開始

 接続の開始段階では、スリー・ウェイ・ハンドシェイクと呼ばれるやりとりが行われます。

・開始処理の詳細
 接続の開始にはSYNフラグが使われます。これは、シーケンス番号の初期値を設定するものであり、TCPセッションの開始を表すフラグです。このSYNセグメントに対しては、必ずACKフラグがオンになったセグメントが返されます。このACKフラグは、確認応答番号が有効なことを示します。

 スリー・ウェイ・ハンドシェイクは、図3のような形で進行します。このとき3つのセグメントがやりとりされます。最初は、一方(通常はクライアント側)が送信するSYNセグメントです。これで自分のシーケンス番号初期値を相手に通知します。

 次に、相手(サーバー側)がSYNフラグ、ACKフラグをオンにしたセグメントを送信します。SYNフラグは自分のシーケンス番号初期値を通知する、ACKフラグはクライアントが送ってきたシーケンス番号初期値を確認する、という役割を持ちます。応答確認番号には、クライアントのシーケンス番号初期値+1がセットされます。

 最後にクライアント側がサーバー側のシーケンス番号初期値を確認するACKセグメントを送信します。

 これで状態はESTABLISHEDとなり、通常の通信が開始されます。このあたりのパケットとその内容を表1に示します。

・同時接続開始
 確率的には低いことですが、2つのホストが同時に接続を開始することがあります。このような場合でも正しく接続できるようになっています。

 双方が接続開始するときはまず、同時にSYNセグメントを送ります。通常SYNセグメントを送ったあと、SYN_SENT状態になります。ここで、ACKフラグがオンになっていないSYNセグメントを受け取り、SYN_RCVD状態に移行します。この段階で同時オープンになったことを認識します。次に、SYNとACKフラグがオンにしたパケットを送信します。このとき、再度シーケンス番号初期値が送られる点が通常の接続と違う部分です。双方ともに相手が送った2つ目のセグメントを受信したのちにESTABLISHED状態に入ります(次ページの図4)。

この先は会員の登録が必要です。今なら有料会員(月額プラン)が2020年1月末まで無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら