TCPとUDP、名前は知っていても違いを説明できなかったので、自分の言葉でまとめました。
ざっくり言うと「丁寧か、速いか」
- TCP … 相手と接続を確立してから、確実に届ける(電話のイメージ)
- UDP … 接続なしで、とにかく送る(拡声器で一方的に叫ぶイメージ)
TCPは信頼性重視、UDPは速度・軽さ重視です。用途で使い分けます。
TCPの3ウェイハンドシェイク
TCPは通信を始める前に、3回のやり取りで「これから話しましょうね」と握手します。
PC → サーバ : SYN (つなぎたいです)
PC ← サーバ : SYN/ACK (いいですよ、こちらも準備OK)
PC → サーバ : ACK (では始めます)
この3ステップが終わって初めてデータが流れます。届いたかの確認(ACK)や、順番の整列、再送も行うので、Webサイトの表示やファイル転送のように「1バイトも欠けたら困る」通信に向いています。
UDPは握手しない
UDPはこの握手をしません。宛先へいきなりデータを投げ、届いたかの確認もしません。その代わり軽くて速いので、
- 音声通話・ビデオ会議(多少欠けてもリアルタイム優先)
- 動画のライブ配信
- DNSの問い合わせ(1往復で終わる軽い通信)
などに使われます。「多少落ちてもいいから速く・軽く」がUDPの得意分野です。
ポート番号とセットで覚える
TCP/UDPは「ポート番号」で相手のどのサービス宛てかを見分けます。よく出るのは、
- HTTP(80)/HTTPS(443) … TCP
- SSH(22) … TCP
- DNS(53) … UDP(+TCP)
CCNAでは「このサービスはTCPかUDPか、ポートは何番か」がよく問われるので、代表的なものは丸暗記しました。
まとめ
TCPは握手して確実に、UDPは握手せず速く。用途の性質(確実性か即時性か)で選ばれている、と理解すると混乱しなくなりました。