TCPとUDPは、どちらもコンピュータ間の通信を可能にするトランスポート層のプロトコルですが、その特性や使用用途が異なります。TCPは通信前に接続を確立し信頼性が高く、データの完全性と順序を保証します。一方UDPは、通信前に接続を確立せず、高速な通信、データの完全性や順序が保証されないことが特徴になります。
TCP
ポイント
- 接続の有無:接続を確立するために、送信側と受信側の間で3回の手順(3-way handshake)を必要とします。接続が確立されるまで、データ送信はできません。
- 信頼性:データの到達を保証し、欠落したパケットを再送するなど、信頼性を高める仕組みを備えています。
- 順序:データの順序を保証します。
- オーバーヘッド(リソース):接続確立や再送など、多くの制御情報を必要とするため、UDPよりもオーバーヘッドが大きくなります。
- 用途:データの正確性と順序が重要なウェブブラウジング、ファイル転送、メールなど。
3ウェイハンドシェイクの簡単なイメージは以下の通り。詳細知りたい方はググってね。
(送信側)パケット送っていい?
(受信側)いいよ。こっちからも返答していい?
(送信側)いいよ!
UDP
ポイント
- 接続の有無:接続を確立する必要がなく、すぐにデータの送受信を開始できます。
- 信頼性:データの到達を保証せず、再送も行いません。パケットが途中で失われる可能性があります。
- 順序:データの順序は保証されません。パケットが到着する順番が異なる可能性があります。
- オーバーヘッド(リソース):制御情報が少ないため、TCPよりもオーバーヘッドが小さく、高速な通信が可能です。
- 用途:リアルタイム性が求められるオンラインゲーム、ストリーミング、IoTデバイスの通信など。
どちらのプロトコルを選ぶべきか?
アプリケーションの要件によって異なります。
- TCP:データの完全性と順序が重要で、多少の遅延を許容できる場合
- UDP:高速な通信とリアルタイム性が重要で、データの欠落は許容できる場合