一方、TCPはコネクションオリエンテッドコミュニケーション、つまり電話です。従って、電話をかける(コネクションを確立する)、話をする(データ転送を行う)、電話を切る(コネクションを解消する)の3つのフェーズがあり、かつ、それぞれのやりとりにおいて常に相づち(アクノリッジ、確認応答)を返していきます。
そのため、制御情報も多くヘッダも複雑です。今回は、その3つのフェーズをシーケンス番号、確認応答(アクノリッジ)番号とACK、SYN、FINの3つのコントロールビットを使って簡単に説明していきます(図4参照)。
ここでのポイントは下記の通りです。
では、以下の例を見ていきましょう(図5参照)。
コネクションは双方向に確立します。この例では、ECU A がシーケンス番号とSYNをセットした「コネクション確立要求」セグメントを送信します。図5内にもあるように、SYNとともに送るシーケンス番号は最初のシーケンス番号で、送る側が無作為に決めた数字です。これを基に以降の通信が進んでいきます。
続いてECU Bでは、受け取った「コネクション確立要求」セグメントを受け入れ、それを示す「アクノリッジ(確認応答、ACK)」とそれが何に対する応答であるかを示す確認応答番号(受信シーケンス番号+1)を送るとともに、自らも「コネクション確立要求」を送るべくSYNと(最初の)シーケンス番号をセットした「アクノリッジ+コネクション確立要求」セグメントを送り出します。
ECU Aは受信したセグメントの中にACKと自らが送ったシーケンス番号(1300)+1の確認応答番号を確認することで、自らのコネクション確立要求が受け入れられたことを理解します。またSYNがセットされていることから、ECU Bからも「コネクション確立要求」があり、それを受け入れたことを示すための「アクノリッジ」を、ACKと確認応答番号(受信したシーケンス番号3500+1)をセットして送信します。もちろんそれを受信したBも同様にACKと確認応答番号をチェックし、自らの「コネクション確立要求」が受け入れられたと理解します。
この3回のやりとりで双方向のコネクションを確立する方法を「スリーウェイハンドシェイク(Three way hand shaking)」とよびます。
続いて行われるのはデータ転送です(図6参照)。
Copyright © ITmedia, Inc. All Rights Reserved.