ネット君 TCP▼はキッチリカッチリしたプロトコルだと聞きました。
インター博士 そうだな。「3ウェイハンドシェーク▼」や「確認応答」などを備えたキッチリカッチリのプロトコルだな。
ネット君 それならTCPだけでよくないですか。UDP▼って要りますか。そもそもTCPとUDPは何が違うんですか。
ネットワークモデル▼のOSI参照モデル▼やTCP/IPモデル▼のトランスポート層のプロトコルにはTCPとUDPの2つがある。TCP/IPで通信する場合、これらのどちらか一方を使用する。2つを同時に使うことはできない。
トランスポート層の役割は、2つの異なるアプリケーション(ソフトウエア)を接続することである。TCPとUDPのいずれもポート番号を使うことでアプリケーションを区別する。
だが違いもある。最も大きな違いは、TCPが「コネクション型」であるのに対して、UDPは「コネクションレス型」であることだ。
まずは相手と「交渉」する
コネクション型は、通信相手とのコネクションを確立してから通信を開始する通信方式である。
ここでのコネクションとは、相手と通信が可能であるという状態を指す。通信前にこの状態を確立して維持し、終了時に開放する。そのために、事前に相手と交渉(ネゴシエーション)する必要がある。
この交渉では、「通信相手が存在するか」「相手への経路が存在するか」「相手が受信可能な状態にあるか」「どのような通信方法が可能か」などを調べる。
この交渉が終了し、相手が受信できる状態になることを「コネクションの確立」と呼ぶ(図1)。
送信側は接続要求を受信側に送信。これに対して受信側が応答する。応答によって、送信側は相手が存在すること、相手が受信可能であることを確認する。
コネクションの確立の際には、送受信するデータやバッファーのサイズ、エラー制御の方法といった情報を交換し、通信で使用する設定を確認する。