Featured image of post 【超初心者向け】TCPとUDPとは何か?データの届け方の2つのルールをやさしく解説

【超初心者向け】TCPとUDPとは何か?データの届け方の2つのルールをやさしく解説

TCPとUDPは、インターネット上でデータを届けるための2種類の通信方式です。TCPはデータが確実に届いたかを確認しながら通信し、UDPは確認なしで高速に送り続けます。この2つが使い分けられているのは、通信の目的によって「確実さ」と「速さ」のどちらを優先すべきかが異なるからです。この記事では、TCPとUDPがなぜ存在するのか・どのように動くのかをわかりやすく解説します。


はじめに

これまでの記事で、データがどのように宛先へ届くかの仕組みを学んできました。IPアドレスで宛先を特定し、ルーターがパケットを転送し、DNSがドメイン名をIPアドレスに変換し、ポート番号でどのサービスへ届けるかを識別する——これらが組み合わさってデータは目的地へ届きます。

しかし、ここで一つ疑問が残ります。「パケットが途中で失われたとき、誰が気づいて対処するのか」です。

たとえば、ファイルをダウンロードしている最中にパケットが1つ失われたとします。失われたデータが補われなければ、ファイルの一部が欠けたまま保存されてしまい、開けなくなるかもしれません。一方、動画を視聴しているときに1フレーム分のデータが失われるたびに「届いていません、再送してください」とやり取りしていては、映像がカクカクして見られたものになりません。

「失われたパケットをどう扱うか」——この問いへの答え方の違いが、TCPとUDPの本質的な違いです。どちらも、パケットをどのように届けるかを定めた「通信の取り決め(プロトコル)」です。

用語/英単語 意味 イメージ・補足
プロトコル / Protocol ネットワーク通信における取り決めやルール 「話しかけるときは敬語を使う」のような会話のルール。TCPとUDPはどちらもプロトコルの一種

なぜ2種類の通信方式が必要なのか

ルーターの記事で学んだように、インターネットで送られるデータはパケットに分割されて運ばれます。パケットはルーターを経由しながら転送されますが、ネットワークの混雑や機器の障害などで、途中で失われることが実際に起こります。

このとき「届かなかったパケットをどう扱うか」という問題が生じます。

  • 届いたか確認して、届かなければ再送してほしい → TCP
  • 確認は不要。とにかく速く送り続けてほしい → UDP

用途によってどちらが適切かが変わるため、2種類が存在します。


TCP ― データを確実に届ける通信

TCP(Transmission Control Protocol) は、データが確実に届いたかを確認しながら通信する方式です。

用語/英単語 意味 イメージ・補足
TCP / Transmission Control Protocol データを確実に届けることを重視した通信の取り決め transmission=伝送 / control=制御 / protocol=取り決め

確認応答(ACK)と再送の仕組み

TCPでは、パケットを受け取った側が「届きました」という返信を送ります。この返信を ACK(アック) といいます。

送信側は ACK を受け取って初めて「届いた」と判断します。一定時間内に ACK が返ってこなければ、パケットが途中で失われたとみなして 再送 します。

図:スリーウェイハンドシェイクによる接続確立の3ステップ

用語/英単語 意味 イメージ・補足
ACK / Acknowledgment パケットを受け取ったことを送信側へ知らせる返信 宅配便の「受け取りサイン」のようなもの
再送 ACK が返ってこなかったパケットを送り直す仕組み 返事がなければ同じ手紙をもう一度送るイメージ

通信開始前の「接続確立」― スリーウェイハンドシェイク

TCPはデータを送り始める前に、送信側と受信側が「これから通信します」という確認を3ステップで行います。この手順を スリーウェイハンドシェイク といいます。

図:TCPの送受信の流れ(ACKによる確認と再送)

  1. 送信側:「通信できますか?」
  2. 受信側:「できます。あなたも大丈夫ですか?」
  3. 送信側:「大丈夫です。では始めます」

この3ステップで接続が確立してから、はじめてデータの転送が始まります。

用語/英単語 意味 イメージ・補足
スリーウェイハンドシェイク / Three-way Handshake TCPが通信開始前に行う3ステップの接続確立手順 電話口で「もしもし」「聞こえますか?」「聞こえます」と確認してから話し始めるようなもの

TCPが向いている用途

データの完全性が重要な通信に使われます。

  • Webサイトの閲覧(HTTP / HTTPS)
  • メールの送受信(SMTP・POP3・IMAP)
  • ファイルの転送
  • リモートログイン(SSH)

これらに共通しているのは、 データが1ビットでも欠けると困る という点です。Webページを構成するHTML・CSS・画像データが一部欠けると表示が崩れ、ファイルが途中で欠けると開けなくなります。メールの文章が一部失われると意味が変わってしまうこともあります。確実に届けるTCPが選ばれる理由はここにあります。


UDP ― 速さを優先する通信

UDP(User Datagram Protocol) は、確認なしでパケットを送り続ける通信方式です。

用語/英単語 意味 イメージ・補足
UDP / User Datagram Protocol 速さを優先した通信の取り決め。確認なしでデータを送る datagram=個々の独立したデータのかたまり

確認しないから速い

UDPは ACK を送りません。送信側はパケットを送り出したら、届いたかどうか確認せずに次のパケットを送り続けます。ACK を待つ時間がないぶん、TCPより大幅に遅延を抑えて通信できます。

図:UDPの送信の流れ(確認なしで次々と送り続ける)

少し欠けても問題ない通信に向いている

動画ストリーミングや音声通話では、パケットが1つ2つ届かなくても大きな問題にはなりません。映像が一瞬乱れる程度で会話の流れは成立します。しかし、ACK を待ちながら通信するとリアルタイム性が失われ、会話が途切れ途切れになってしまいます。

DNS の記事で学んだ名前解決も UDP を使っています。問い合わせと応答が非常に小さく1回の送受信で完結するため、確認の手間をかけるより速く応答することが優先されるからです。

UDPが向いている用途

  • 動画ストリーミング(YouTube など)
  • 音声・ビデオ通話(Zoom などの VoIP)
  • オンラインゲーム
  • DNS(名前解決)

TCPとUDPの比較

TCP UDP
確認応答(ACK) あり なし
再送 あり(届かなければ再送) なし
接続確立 必要(スリーウェイハンドシェイク) 不要
速度 比較的遅い 速い
信頼性 高い 低い
主な用途 Web・メール・ファイル転送 動画・音声通話・DNS

ポート番号との関係

ポート番号の記事で学んだポート番号は、TCPとUDPの両方で使われます。「TCP 80番」はTCPを使った80番ポートへの通信、「UDP 53番」はUDPを使った53番ポートへの通信を意味します。

ポート番号はTCPとUDPそれぞれに0〜65535が独立して用意されています。「TCP の80番」と「UDP の80番」は、番号は同じでも別々の窓口として扱われます。

身近な例を挙げると、DNS の記事で学んだ名前解決には通常 UDP の53番ポート が使われます。問い合わせと応答が小さく1回の送受信で完結するため、速さを優先してUDPが選ばれています。しかし応答データが大きくなる場合は、同じ53番でも TCP の53番ポート に切り替わります。同じポート番号をTCPとUDPで使い分けられるのは、2つが独立した窓口だからです。


まとめ

  • TCP は確認応答(ACK)と再送の仕組みを持ち、データを確実に届ける
  • UDP は確認なしで送り続け、速さを優先する
  • TCPは通信開始前に スリーウェイハンドシェイク で接続を確立してからデータを送る
  • データの完全性が重要な通信(Web・メール・ファイル転送など)には TCP
  • リアルタイム性が重要な通信(動画・音声通話・DNS など)には UDP
  • どちらもポート番号と組み合わせて使われる

用語表

用語 意味
プロトコル ネットワーク通信における取り決めやルールのこと。TCPとUDPはどちらもプロトコルの一種
TCP(Transmission Control Protocol) データを確実に届けることを重視した通信の取り決め。確認応答と再送の仕組みを持つ
UDP(User Datagram Protocol) 速さを優先した通信の取り決め。確認なしでパケットを送り続ける
ACK(Acknowledgment) パケットを受け取ったことを送信側へ知らせる返信。TCPで使われる
再送 ACKが返ってこなかったパケットを送り直す仕組み。TCPの信頼性を支える
スリーウェイハンドシェイク TCPが通信開始前に行う3ステップの接続確立手順