本文へスキップ

TCPとUDPの違いとは?通信の仕組みを未経験向けに解説

#TCP#UDP#ネットワーク#初心者#未経験

未経験からインフラエンジニアを目指して学習していると、「TCP」と「UDP」という2つの言葉に必ず出会います。どちらも通信の仕組みに関わる用語だと分かっても、何が違うのかを説明しようとすると言葉に詰まってしまう人は多いです。結論から言うと、TCPとUDPの違いは、通信の確実さと速さのどちらを優先するかにあると捉えると整理しやすくなります。この記事では、TCPとUDPがそれぞれ何を重視した仕組みなのか、身近な例でどう使われているか、現場で関わる場面までを未経験向けに解説します。

確実さを重視するTCPと速さを重視するUDPを対比したイメージ

TCPとUDPの違いは「何を重視するか」

TCP(Transmission Control Protocol)とUDP(User Datagram Protocol)は、どちらもデータをネットワーク越しに送るための通信の規約(プロトコル)ですが、設計の方向性がまったく異なります。TCPは送ったデータが相手に正しく届いたかを確認し合いながら通信する仕組みで、UDPは届いたかどうかの確認をせず、とにかくデータを送り出す仕組みです。確認のやり取りを増やせば信頼性は上がるが速度は落ち、確認を減らせば速度は上がるが信頼性は下がるという、トレードオフの関係にあると理解しておくと、以降の説明がつながりやすくなります。

TCPとは何か:確実に届けることを重視する通信

TCPは通信を始める前に、送信側と受信側で「これから通信します」という接続の確認(3ウェイハンドシェイクと呼ばれます)を行い、通信の間もデータが欠けていないか・順番が入れ替わっていないかを常に確認し合います。もし途中でデータが失われたと分かれば、同じデータを再送信する仕組みも持っています。この仕組みのおかげで、Webページの表示やファイルのダウンロードのように、データが1つでも欠けると困る通信ではTCPが使われます。確認のやり取りが発生する分、UDPに比べると通信の開始や処理に時間がかかる場面があります。

UDPとは何か:速さを重視する通信

UDPはTCPのような接続の確認や再送信の仕組みを持たず、送信側はデータを一方的に送り出すだけです。届いたかどうかの保証がない代わりに、確認のやり取りにかかる時間がないため、通信の開始が速く、処理の負荷も軽くなります。動画や音声の配信、オンラインゲームの通信のように、一部のデータが欠けても全体への影響が小さく、止まらず進むことの方が重要な通信にはUDPが向いていると考えると整理しやすくなります。DNSの名前解決のような短いやり取りでも、確認のやり取りを省いて素早く応答を返すためにUDPが使われています。

観点TCPUDP
信頼性データの欠落や順序の乱れを検出し、再送信する保証なし。届かなくても再送信されない
速度確認のやり取りがある分、開始や処理に時間がかかる確認を省くため速い
代表的な用途Webサイト表示、ファイル転送、メール送受信動画・音声配信、オンラインゲーム、DNSの名前解決

身近な例で見るTCPとUDPの使われ方

TCPとUDPがどちらを使っているかは、通信の目的を考えると見分けやすくなります。

  1. Webサイトの表示: HTMLやCSS、画像データが1つでも欠けると表示が崩れるため、確実に届けるTCPが使われる
  2. オンライン会議の映像・音声: 多少のコマ落ちよりも、途切れずにリアルタイムで進むことが優先されるためUDPが使われることが多い
  3. DNSによる名前解決: サイトのURLからサーバーのIPアドレスを調べる短いやり取りで、応答の速さを優先してUDPが使われる

このように、同じインターネット上の通信でも、やり取りの目的によってTCPとUDPが使い分けられています。

現場でTCP/UDPの違いが関わる場面

インフラの現場では、サーバーやネットワーク機器の設定を通じてTCP・UDPの違いに関わる場面があります。たとえばファイアウォールの通信許可設定では、TCPの80番・443番ポートとUDPの53番ポートのように、プロトコルとポート番号をセットで指定する必要があります。どちらの指定を間違えても通信が通らなくなるため、設定ミスの原因を調べるときにTCPとUDPの区別が欠かせません。ロードバランサーの設定でも、ALBとNLBの違いのように、対応するプロトコルの違いによって選ぶ機器が変わってきます。

現役でインフラの現場にいる立場から言うと、障害調査で「通信が届いていない」という報告を受けたとき、まずTCPかUDPかを確認するだけで、調査の方向性が大きく絞り込めることがよくあります。再送信の仕組みを持つTCPで断続的に遅いなら経路のどこかで輻輳が起きている可能性があり、UDPで一部だけ欠けるなら元々そういう性質の通信だと判断できる、というように切り分けの手がかりになるためです。

InfraDojoで学ぶ

InfraDojoなら、ブラウザ上の演習環境でネットワークの基礎を手を動かしながら学べるため、TCPとUDPのようにイメージだけでは掴みにくい仕組みも、実際の通信の流れを確認しながら理解を進められます。ネットワークの学習をどこから始めればいいか迷う場合は、ロードマップで全体の流れを確認しておくと、TCP・UDPを学ぶタイミングも判断しやすくなります。

よくある質問

Q. TCPとUDP、どちらを学べば良いですか?

どちらも理解しておく必要があります。TCPは信頼性を重視した通信の基本として、UDPは速度を重視した通信の考え方として、それぞれ異なる場面で使われているため、片方だけ覚えても現場の通信を正しく理解できない場面が出てきます。

Q. HTTPSはTCPとUDPのどちらを使っていますか?

長くTCPが使われてきましたが、近年はUDPを土台にした通信方式が使われる場合もあります。ブラウザとサーバーの実装や設定によって変わるため、使われている方式はツールで確認する必要があります。

Q. 未経験のうちからTCP・UDPの違いを理解しておく必要はありますか?

必須ではありませんが、ロードバランサーやファイアウォールの設定を学ぶ前提として、通信の確実さと速さのどちらを重視するかという考え方を押さえておくと、以降の学習がつながりやすくなります。

Reo|インフラエンジニアのアイコン

この記事を書いた人: InfraDojo運営者(Reo|インフラエンジニア)

現役インフラエンジニア。SESの現場経験に基づき、未経験からのインフラ転職と学習を支援しています。InfraDojoは、ブラウザ上のターミナルで実際に手を動かして学べるインフラ学習サイトです。

@Reo_engineer_

読むだけで終わらせず、今日から手を動かす

InfraDojoは、ブラウザを開くだけでLinux・ネットワーク・AWSの演習ができる学習サイトです。登録は30秒、最初のコースは無料です。