TCPとUDPの違いを分かりやすく解説|インターネット通信の基本を理解しよう

Web

「TCPとUDPって何が違うの?」「どっちが速いの?」「自分のパソコンはどっちを使っているの?」

インターネットやネットワークについて調べていると、必ず出てくるのがTCPとUDPという言葉です。

この2つは、インターネット通信の基本となるプロトコル(通信規約)です。実は、あなたが今見ているこのWebページも、動画を見る時も、オンラインゲームをする時も、TCPかUDPのどちらか(または両方)が使われています。

この記事では、TCPとUDPの違いを、初心者の方にも分かりやすく徹底解説します。難しい専門用語は最小限にして、身近な例えを使って説明していきますよ!


スポンサーリンク

TCPとUDPは「データの送り方」の違い

まず、大まかなイメージをつかみましょう。

プロトコルとは?

プロトコルは、「通信のルール」や「約束事」のことです。

例えるなら:

人と話す時にも、ルールがありますよね。

  • 日本語で話す
  • 相手の話を聞いてから返事をする
  • 聞き取れなかったら「もう一度言ってください」と言う

インターネット通信でも、データをどうやって送るか、ルールが必要なんです。

TCPとUDPは郵便に例えると?

TCP(Transmission Control Protocol):

書留郵便のようなもの

  • 確実に届くことを重視
  • 相手に届いたか確認する
  • 順番通りに届く
  • 届かなかったら再送する
  • 少し時間がかかる

UDP(User Datagram Protocol):

普通の郵便(速達)のようなもの

  • スピード重視
  • 届いたか確認しない
  • 順番がバラバラでもOK
  • 途中で失われても再送しない
  • とにかく速い

TCP(Transmission Control Protocol)とは

詳しくTCPを見ていきましょう。

TCPの特徴

信頼性が高い通信方式

主な特徴:

  1. 接続確立
  • データを送る前に「接続」を確立する
  • 3ウェイハンドシェイク(3回の挨拶)を行う
  1. データの到達を確認
  • データが届いたら「受け取りました」という返事が来る
  • 返事がなければ再送する
  1. 順序の保証
  • データは番号付きで送られる
  • 受信側で正しい順番に並べ替える
  1. エラー訂正
  • データが壊れていないかチェック
  • 壊れていたら再送要求
  1. 流量制御
  • 相手が受け取れる速度に合わせる
  • 一度に送りすぎないように調整

TCPの通信の流れ

ステップ1:接続確立(3ウェイハンドシェイク)

  1. 送信者:「接続したいです」(SYN)
  2. 受信者:「OK、こちらも準備できました」(SYN-ACK)
  3. 送信者:「了解、では送ります」(ACK)

ステップ2:データ送信

  1. データを小さな塊(パケット)に分割
  2. 各パケットに番号を付ける
  3. 順番に送信
  4. 受信確認(ACK)を待つ
  5. 確認が来たら次のデータを送る

ステップ3:接続終了

  1. 送信者:「データ送信完了です」(FIN)
  2. 受信者:「了解しました」(ACK)
  3. 受信者:「こちらも終了します」(FIN)
  4. 送信者:「了解、接続を切ります」(ACK)

TCPのメリット

確実性
データが確実に届く

正確性
データが壊れていないことを保証

順序保証
バラバラに届いても正しい順番に並べられる

安定性
複雑な通信でも信頼できる

TCPのデメリット

速度が遅い
確認作業に時間がかかる

オーバーヘッドが大きい
接続確立や確認応答など、余分な通信が必要

リアルタイム性に欠ける
再送処理で遅延が発生する可能性


UDP(User Datagram Protocol)とは

次にUDPを詳しく見ていきましょう。

UDPの特徴

速度重視のシンプルな通信方式

主な特徴:

  1. 接続不要
  • いきなりデータを送り始める
  • 事前の挨拶なし
  1. 到達確認なし
  • 届いたかどうか確認しない
  • 「送りっぱなし」
  1. 順序保証なし
  • データがバラバラに届くかもしれない
  • 受信側での並べ替えもない
  1. エラー訂正なし
  • 壊れたデータも気にしない
  • 再送もしない
  1. 軽量
  • 余計な処理がない
  • シンプルで速い

UDPの通信の流れ

非常にシンプル:

  1. データを小さな塊(データグラム)に分割
  2. 宛先を書く
  3. ひたすら送り続ける
  4. 終わり

確認も何もありません。とにかく送るだけ。

UDPのメリット

高速
確認作業がないので速い

低遅延
余計な処理がなく、リアルタイム性が高い

軽量
システムへの負担が少ない

シンプル
実装が簡単

UDPのデメリット

信頼性が低い
データが届かないこともある

データ損失
途中で失われても分からない

順序がバラバラ
正しい順番で届く保証がない

エラー検出なし
データが壊れても気づかない


TCPとUDPの比較表

違いを一目で分かるようにまとめました。

項目TCPUDP
接続接続型(事前に確立)コネクションレス(接続不要)
信頼性高い低い
速度遅い速い
到達確認ありなし
順序保証ありなし
再送するしない
エラー訂正ありなし
オーバーヘッド大きい小さい
用途正確性重視速度重視

覚え方:

  • TCP = 確実だけど遅い
  • UDP = 速いけど不確実

どんな時に使われる?具体例で理解

実際にどう使い分けられているか見てみましょう。

TCPが使われるケース

正確性が最優先の場合

1. Webサイトの閲覧(HTTP/HTTPS)

このページを見ているのもTCPです。

  • ページの文字が途中で消えたら困る
  • 画像が欠けていたら困る
  • 順番がバラバラだと意味不明

2. メールの送受信(SMTP/POP/IMAP)

  • メールの文章が途中で消えたら大問題
  • 添付ファイルが壊れたら困る

3. ファイルのダウンロード(FTP/HTTP)

  • ダウンロードしたファイルが壊れていたら使えない
  • すべてのデータが正確に届く必要がある

4. リモート接続(SSH/Telnet)

  • コマンドが1文字でも欠けたら誤動作する
  • セキュリティ上も確実性が必要

5. データベース通信

  • データの整合性が絶対条件
  • 1ビットでも間違えたら大問題

UDPが使われるケース

速度が最優先の場合

1. オンラインゲーム

  • キャラクターの位置情報
  • リアルタイム性が最重要
  • 1フレーム前のデータが遅れて届いても意味がない

例:
格闘ゲームで、0.5秒前のパンチの情報が今届いても遅すぎますよね。最新の情報がすぐに届くことが重要です。

2. ビデオ通話・音声通話(Zoom、Skypeなど)

  • 映像と音声のリアルタイム配信
  • 少しくらい画質が乱れてもOK
  • 再送で遅れるより、次のフレームを送る

例:
ビデオ通話で映像が一瞬乱れても、会話は続けられます。でも、0.5秒遅れて声が届いたら会話になりません。

3. ライブ配信(YouTube Live、Twitchなど)

  • リアルタイムの映像配信
  • 少しのデータ欠落は許容
  • 遅延が少ないことが重要

4. DNS(ドメイン名の解決)

  • 「google.com」のIPアドレスを調べる
  • 失敗したら別のサーバーに聞き直せばいい
  • 速さが重要

5. IoTセンサー

  • 温度センサーのデータ送信
  • 1つ2つのデータが欠けても大きな問題ない
  • 次々と新しいデータが来る

6. オンライン対戦ゲームのボイスチャット

  • プレイヤー同士の会話
  • リアルタイム性が最優先
  • 少し途切れても問題ない

混在して使われるケースもある

実は、1つのアプリで両方使うこともあります。

例:オンラインゲーム

UDPを使う部分:

  • キャラクターの位置情報(リアルタイム)
  • プレイヤーの移動(最新情報が重要)
  • ボイスチャット

TCPを使う部分:

  • ログイン認証(確実に)
  • アイテムの購入(絶対に失敗できない)
  • チャットメッセージ(正確に届ける)

例:動画配信サービス

TCP:

  • 動画ファイルのダウンロード(YouTube の通常再生)
  • メニューや設定画面の表示

UDP:

  • ライブ配信(リアルタイム性重視)
  • 低遅延モード

よくある質問

Q1. TCPとUDPはどちらが優れていますか?

A. どちらが優れているということはありません。

用途によって使い分けます:

  • 正確性が必要 → TCP
  • 速度が必要 → UDP

例えるなら:

  • 車とバイクのどちらが優れているか?
  • 荷物を運ぶなら車、狭い道を通るならバイク

目的に合わせて選ぶものです。

Q2. 自分のパソコンはどちらを使っていますか?

A. 両方使っています。

用途に応じて自動的に切り替わっています:

  • Webブラウジング → TCP
  • オンラインゲーム → UDP(または両方)
  • メール → TCP
  • ビデオ通話 → UDP

普段は意識する必要はありません。

Q3. UDPでデータが届かなかったらどうなりますか?

A. アプリケーション側で対処します。

例:

  • ゲーム: 次のフレームで補正される
  • ビデオ通話: 一瞬映像が乱れるだけ
  • DNS: リトライして別のサーバーに問い合わせ

UDPを使うアプリは、データ損失を前提に設計されています。

Q4. TCPの方が安全ですか?

A. 「確実」ではありますが、「セキュア」とは別です。

確実性:
TCPはデータが確実に届きます。

セキュリティ:
TCPもUDPも、暗号化しないと盗聴される可能性があります。

セキュリティには、SSL/TLSなどの暗号化技術が別途必要です。

Q5. UDPの方が軽いなら、全部UDPにすればいいのでは?

A. データの正確性が保証されないため、用途が限られます。

UDPだけでは困る例:

  • メールの送信 → 文字が抜ける
  • ファイルのダウンロード → ファイルが壊れる
  • ネットショッピング → 注文情報が正しく届かない

確実性が必要な場面では、TCPが不可欠です。


ポート番号との関係

TCPとUDPは、ポート番号と組み合わせて使われます。

ポート番号とは?

マンションの部屋番号のようなもの

IPアドレスが「住所」だとすると、ポート番号は「部屋番号」です。

例:

  • あなたのパソコンのIPアドレス:192.168.1.10(住所)
  • Webブラウザ:ポート80番(部屋番号)
  • メールソフト:ポート25番(別の部屋番号)

よく使われるポート番号

TCPのポート番号例:

  • 80番:HTTP(Webサイト)
  • 443番:HTTPS(暗号化されたWebサイト)
  • 25番:SMTP(メール送信)
  • 22番:SSH(セキュアなリモート接続)

UDPのポート番号例:

  • 53番:DNS(ドメイン名の解決)
  • 123番:NTP(時刻同期)
  • ゲームやビデオ通話は様々なポートを使用

同じポート番号でも別物:

  • TCP 53番とUDP 53番は別のサービス
  • どちらもDNSで使われることがある

技術的な補足(興味がある人向け)

もう少し詳しく知りたい人のための情報です。

TCPのヘッダー情報

TCPは以下の情報をデータに付加します:

  • 送信元ポート番号
  • 宛先ポート番号
  • シーケンス番号(順序を管理)
  • 確認応答番号(ACK番号)
  • ウィンドウサイズ(流量制御)
  • チェックサム(エラー検出)
  • フラグ(SYN、ACK、FINなど)

UDPのヘッダー情報

UDPは最小限の情報だけ:

  • 送信元ポート番号
  • 宛先ポート番号
  • データ長
  • チェックサム(オプション)

TCPと比べて圧倒的にシンプルです。

パケットサイズの違い

TCP:

  • ヘッダーサイズ:20〜60バイト
  • データ部分:可変

UDP:

  • ヘッダーサイズ:8バイト(固定)
  • データ部分:可変

UDPのヘッダーは、TCPの1/3以下です。


まとめ:適材適所で使い分けられている

TCPとUDPは、それぞれ得意分野が違います。

この記事のポイント:

TCP = 確実で正確、でも少し遅い

  • 接続型通信
  • データの到達を保証
  • 順序を守る
  • エラーを検出・修正
  • 用途:Webサイト、メール、ファイル転送

UDP = 速くて軽量、でも不確実

  • コネクションレス
  • 到達は保証しない
  • 順序もバラバラOK
  • とにかく速い
  • 用途:ゲーム、ビデオ通話、ライブ配信

選び方の基準:

優先事項選ぶプロトコル
データの正確性TCP
リアルタイム性UDP
確実な配信TCP
低遅延UDP
ファイル転送TCP
音声・動画配信UDP

両方使うケースも:

  • オンラインゲーム
  • ビデオ会議アプリ
  • 複合的なWebサービス

最後に:

普段は意識することなく、アプリケーションが自動的に適切なプロトコルを選んでいます。でも、この違いを知っておくと:

  • ネットワークトラブルの原因が分かる
  • なぜゲームでラグが起きるか理解できる
  • ビデオ通話が途切れる理由が分かる
  • より良いネットワーク環境を構築できる

インターネットの仕組みを少し理解できると、日常のIT利用がもっと快適になりますよ!

コメント

タイトルとURLをコピーしました