この記事は、 「ネットワーク初級編|通信の仕組みをゼロから学ぶ」 の第18回です。
今回は、アプリケーション間でデータを届けるために使われる TCPとUDPの違いを学びます。
TCPとUDPの違いとは?仕組み・特徴・使い分けを初心者向けに図解
TCPとUDPは、どちらもネットワーク上でアプリケーションのデータを運ぶためのプロトコルです。 ただし、TCPは到着確認や再送を重視し、UDPは少ない手順で素早くデータを送るという違いがあります。 この記事では、通信の流れと利用例を比較しながら、初心者向けに分かりやすく解説します。
Webサイトの表示、メール送信、オンライン会議、動画配信、DNSによる名前解決など、 ネットワーク上ではさまざまなデータが送受信されています。
しかし、すべての通信が同じ方法で行われているわけではありません。 データを確実に届けたい通信と、 多少の欠落よりもリアルタイム性を優先したい通信では、 適した送り方が異なります。
この記事を読み終えるとできること
- TCPとUDPの役割を説明できる
- 到着確認と再送の違いを説明できる
- TCPとUDPの代表的な利用例を挙げられる
- 通信の目的から適した方式を考えられる
TCPとUDPはトランスポート層のプロトコル
TCPとUDPは、送信元と宛先のアプリケーション間で データを届けるために使われるプロトコルです。
TCPとUDPは、OSI参照モデルでは第4層の トランスポート層、 TCP/IPモデルではトランスポート層に位置します。
IPアドレスは、通信先となる端末やサーバーを識別するために使われます。 一方、TCPとUDPはポート番号を使って、 端末の中にあるどのアプリケーションへデータを渡すかを識別します。
IPアドレスとポート番号の役割
Webブラウザ
対象サービス
IPアドレスで宛先の機器を識別し、ポート番号で宛先のアプリケーションを識別します。
TCPとUDPは同じトランスポート層で動作しますが、 データを届けるために行う制御が大きく異なります。
ポート番号の役割が曖昧な場合は、先に 「ポート番号とは何か」 を確認してください。
TCPとUDPの違いを先に比較
- 通信前に接続を確立する
- データの到着を確認する
- 失われたデータを再送する
- 受信順序を整える
- 確実性を重視する通信に向く
- 通信前の接続確立を行わない
- 到着確認を行わない
- UDP自身は再送を行わない
- 少ない手順でデータを送れる
- リアルタイム性を重視する通信に向く
| 比較項目 | TCP | UDP |
|---|---|---|
| 通信方式 | コネクション型 | コネクションレス型 |
| 通信前の接続確認 | 行う | 行わない |
| データの到着確認 | 行う | UDP自身は行わない |
| 失われたデータの再送 | 行う | UDP自身は行わない |
| 受信順序の制御 | 行う | UDP自身は行わない |
| ヘッダーサイズ | 最小20バイト | 8バイト |
| 主な特徴 | 信頼性を確保しやすい | 制御が少なくシンプル |
| 代表例 | Web、メール、SSH、ファイル転送 | DNS、DHCP、NTP、音声・映像配信 |
TCPは「確認しながら確実に届ける方式」、 UDPは「少ない手順ですぐに送る方式」と考えると、 基本的な違いを理解しやすくなります。
TCPとは何か
TCPとは、通信相手との接続を確立し、 データの到着確認や再送を行いながら届けるプロトコルです。
TCPは、送信したデータが正しく届いたかを確認しながら通信します。 データが失われた場合は再送し、順番が入れ替わって届いた場合は、 正しい順番へ並べ直します。
TCPの主な特徴
通信前に接続を確立する
TCPでは、データを送る前に通信相手が応答できる状態かを確認します。 この接続確立で使われるのが、3ウェイハンドシェイクです。
到着確認を行う
受信側は、データを受け取ったことをACKと呼ばれる確認応答で送信側へ伝えます。
失われたデータを再送する
一定時間待っても確認応答が届かない場合などに、 送信側はデータが失われた可能性を考えて再送します。
データの順番を管理する
TCPではシーケンス番号を使ってデータの順番を管理し、 受信側で元の順番へ整えます。
受信できる量を調整する
受信側が一度に処理できるデータ量を伝え、 送信側が送りすぎないように調整します。
ネットワークの混雑を考慮する
パケットロスなどから混雑を判断し、 送信量を調整する仕組みを備えています。
TCP通信の簡略イメージ
TCPは受信確認を行いながらデータを送る
実際のTCPでは複数のデータを続けて送信できますが、 基本的には確認応答を利用して到着状況を管理します。
TCPが向いている通信
TCPは、データの欠落や順序の入れ替わりが問題になる通信に向いています。
- Webページやファイルのダウンロード
- メールの送受信
- サーバーへのリモートログイン
- ファイル転送
- 業務システムとの通信
たとえば、ソフトウェアをダウンロードするときにデータの一部が失われると、 ファイルが壊れて正常に実行できない可能性があります。 このような通信では、失われたデータを再送するTCPが適しています。
TCPの接続確立については、次の記事 「TCPの3ウェイハンドシェイク」 で詳しく解説します。
UDPとは何か
UDPとは、通信前の接続確立や到着確認を行わず、 データをそのまま送信するシンプルなプロトコルです。
UDPでは、送信側が宛先へデータを送ったあと、 UDP自身は正しく届いたかを確認しません。
また、途中でデータが失われても、 UDP自身には自動的に再送する仕組みがありません。
UDPの主な特徴
通信前の接続確立を行わない
TCPの3ウェイハンドシェイクに相当する処理を行わず、 送信側はすぐにデータを送れます。
到着確認を行わない
UDP自身は、受信側からのACKを使って到着状況を管理しません。
再送制御を行わない
データが失われてもUDP自身は再送しないため、 必要であればアプリケーション側で対応します。
ヘッダーが小さい
UDPヘッダーは8バイトで、 TCPの最小20バイトよりも制御情報が少ない構造です。
データの区切りを保つ
UDPは、アプリケーションが送ったデータのまとまりを データグラムとして扱います。
一斉送信にも利用できる
ブロードキャストやマルチキャストを利用する通信でも使われます。
UDP通信の簡略イメージ
UDPは到着確認を待たずにデータを送る
UDP自身はACKを待たず、連続してデータを送信できます。
UDPが向いている通信
UDPは、通信手順を少なくしたい場合や、 古いデータの再送よりも新しいデータを早く届けたい通信に向いています。
- オンライン会議の音声や映像
- ライブ配信
- オンラインゲームの位置情報
- DNSによる名前解決
- DHCPによるIPアドレスの取得
- NTPによる時刻同期
たとえば音声通話では、一瞬前の音声データを再送して受け取っても、 会話のタイミングがずれてしまいます。 そのため、多少の欠落があっても新しい音声を届け続ける方式が適している場合があります。
UDPを使えば必ず高速になるわけではありません。
UDPはTCPより制御が少ないプロトコルですが、 実際の通信速度や遅延は、回線品質、サーバー性能、 アプリケーションの設計などにも左右されます。
パケットが途中で失われたときの違い
ネットワークでは、混雑、機器の障害、無線品質の低下などによって、 送信したパケットが途中で失われることがあります。
TCPとUDPの大きな違いは、 このパケットロスが発生したときの動作に表れます。
TCPの場合
TCPでは失われたデータを再送する
データ2が失われると、TCPは不足を検知して再送し、 正しい順序でアプリケーションへ渡します。
UDPの場合
UDP自身は失われたデータを再送しない
データ2が失われても、UDP自身は再送せず、 次のデータを送信し続けます。
| 状況 | TCP | UDP |
|---|---|---|
| 途中のデータが失われた | 不足を検知して再送する | UDP自身は再送しない |
| 順番が入れ替わった | 正しい順番へ並べ直す | UDP自身は順序を保証しない |
| アプリケーションへの影響 | 必要なデータがそろってから渡されるため、遅延が増える場合がある | 欠けた状態で受け取るか、アプリケーション側で処理する |
UDPを使うアプリケーションでも、独自に到着確認や再送を実装できます。 「UDPを使う通信は必ずデータが欠けたままになる」という意味ではありません。
TCPとUDPのヘッダーの違い
TCPやUDPでデータを送信するときは、 アプリケーションのデータに制御情報を含むヘッダーが追加されます。
ポート番号、シーケンス番号、確認応答番号、 接続状態を表すフラグ、ウィンドウサイズなどを含みます。
最小20バイト送信元ポート番号、宛先ポート番号、長さ、 チェックサムを含みます。
8バイトTCPは接続状態、到着確認、再送、順序制御などを管理するため、 UDPよりも多くの制御情報が必要です。
UDPは制御項目が少ないため、ヘッダーがシンプルです。
TCPのヘッダーが大きいのは、単に無駄な情報が多いからではありません。 確実にデータを届けるための制御情報を持っているからです。
TCPとUDPが使われる代表例
TCPが使われる代表例
Webサイトの表示
HTTP/1.1やHTTP/2によるWeb通信では、 一般的にTCPが使用されます。 HTMLや画像などを正しく受信する必要があるためです。
サーバーへの遠隔接続
入力したコマンドや実行結果が欠けたり、 順番が入れ替わったりすると正しく操作できないため、TCPが使用されます。
メール通信
メール本文や添付ファイルを正しく届ける必要があるため、 TCPが使用されます。
ファイル転送
ファイルの一部が欠けると利用できないため、 到着確認と再送を行うTCPが適しています。
UDPが使われる代表例
名前解決
通常のDNS問い合わせでは、少ないデータを短時間でやり取りするため、 UDPがよく使われます。
IPアドレスの自動取得
端末がまだ自分のIPアドレスを持っていない段階で、 ブロードキャストを利用して通信するためUDPが使われます。
時刻同期
サーバーと短い要求・応答を行って時刻を合わせる通信で、 UDPが使用されます。
リアルタイム通信
オンライン会議やライブ配信などでは、 古いデータの再送よりもリアルタイム性が重視される場合があります。
同じサービスでもTCPとUDPの両方を使うことがある
「このサービスは必ずTCP」「このサービスは必ずUDP」と 単純に分けられない場合もあります。
| サービス・技術 | 主な使い方 |
|---|---|
| DNS | 通常の問い合わせではUDPがよく使われますが、 応答が大きい場合やゾーン転送などではTCPも使用されます。 |
| Web通信 | HTTP/1.1とHTTP/2は一般的にTCPを使用します。 HTTP/3はQUICという仕組みを使い、UDP上で動作します。 |
| オンライン会議 | 音声・映像にはUDPを利用し、 ログインや制御情報にはTCPを利用するなど、 複数の通信を組み合わせることがあります。 |
HTTP/3はUDPを使いますが、必要な信頼性や再送制御を QUIC側で実現しています。
UDPを使っているからといって、 必ず信頼性のない通信になるわけではありません。
TCPとUDPはどのように使い分けるのか
TCPとUDPのどちらを利用するかは、 主にアプリケーションやプロトコルの設計者が決めます。
利用者がWebブラウザを操作するたびに、 TCPかUDPかを手動で選択するわけではありません。
データの一部が失われたり、順番が入れ替わったりすると困るか?
ファイル、メール、コマンド、業務データなど、 完全な状態で届ける必要がある通信に向いています。
音声、映像、ゲームの位置情報など、 古いデータの再送より新しいデータを優先したい通信に向いています。
判断するときの主なポイント
| 判断項目 | TCPが向くケース | UDPが向くケース |
|---|---|---|
| データの欠落 | 許容できない | 一部を許容できる、またはアプリ側で補える |
| 到着順序 | 順番どおりに届ける必要がある | 古い情報より最新情報が重要 |
| リアルタイム性 | 多少の待ち時間より正確性を重視 | 再送による遅れを避けたい |
| 通信相手 | 特定の1対1通信 | 1対1に加えて一斉送信も利用したい |
| 制御方法 | TCPの標準機能を利用したい | アプリケーション独自の制御を実装したい |
TCPが上位でUDPが下位という関係ではありません。
どちらが優れているかではなく、 通信の目的に合ったプロトコルを選ぶことが重要です。
現場で確認するときのポイント
通信障害を調査するときは、 IPアドレスやポート番号だけでなく、 TCPとUDPのどちらを使用しているかも確認します。
ファイアウォールではTCPとUDPを区別する
ファイアウォールやACLでは、 同じポート番号でもTCPとUDPを別の通信として扱います。
たとえば、UDPの53番ポートを許可していても、 TCPの53番ポートが許可されているとは限りません。
| プロトコル | 宛先ポート | 判定 |
|---|---|---|
| UDP | 53 | DNSの通常問い合わせとして許可 |
| TCP | 53 | 別ルールとして許可が必要になる場合がある |
TCPでは接続状態を確認する
TCP通信では、接続確立の途中で止まっているのか、 接続後にデータが届かないのかによって確認場所が変わります。
- TCP接続を開始するパケットが送信されているか
- 通信相手から応答が返っているか
- TCP接続が確立しているか
- 再送が繰り返されていないか
- 接続が途中で切断されていないか
UDPでは応答が返らない理由を広く考える
UDPにはTCPのような接続確立がありません。 送信パケットが出ていても、次のような理由で応答が返らない可能性があります。
- 要求パケットが途中で失われた
- 宛先サービスが起動していない
- ファイアウォールで破棄された
- 応答パケットが途中で失われた
- アプリケーションが要求内容を処理できなかった
障害調査では、 送信元IP・宛先IP・送信元ポート・宛先ポート・TCPまたはUDP をセットで確認することが重要です。
TCPとUDPに関するよくある勘違い
UDPはTCPより制御が少ないため、遅延を抑えやすい特徴があります。 ただし、実際の速度は回線品質、アプリケーションの設計、 データ量、サーバー性能などにも左右されます。
UDPに再送機能がないからといって、 データが必ず失われるわけではありません。 ネットワークが正常であれば、問題なく届くこともあります。
UDP自身は再送しませんが、 アプリケーション側で独自の確認や再送を実装できます。
TCPとUDPはどちらも0番から65535番までのポート番号を使います。 ただし、TCPの53番とUDPの53番は別の通信として扱われます。
UDP上で動作するアプリケーションが、 必要な信頼性や再送制御を独自に実装する場合もあります。 HTTP/3で使われるQUICが代表例です。
データの完全性、リアルタイム性、通信量、 アプリケーション側の制御方法などを考えて選択します。
理解度チェック
記事の内容を確認するため、次の5問に答えてください。 解答を見る前に、一度自分で考えてみましょう。
問題1.TCPの特徴として最も適切なものはどれですか。
- 通信前の接続確認を行わず、必ず一斉送信する
- 到着確認や再送を行い、データを順番どおりに届ける
- ポート番号を使用しない
- 音声通信だけに使用される
解答を見る
TCPは通信相手との接続を確立し、 到着確認、再送、順序制御などを行います。
問題2.UDP自身が標準機能として行わないものを2つ選んでください。
- 宛先ポート番号の指定
- データの送信
- 到着確認
- 失われたデータの再送
解答を見る
UDPはポート番号を使ってデータを送信しますが、 UDP自身は到着確認や再送を行いません。
問題3.次のうち、一般的にUDPが使われる通信はどれですか。
- SSHによるサーバー操作
- メール本文の送信
- 通常のDNS問い合わせ
- ファイルの完全な転送
解答を見る
通常のDNS問い合わせでは、短い要求と応答を効率よく行うため、 UDPがよく使われます。
問題4.TCP通信でデータが途中で失われた場合、 TCPはどのように対応しますか。
解答を見る
TCPは確認応答やシーケンス番号などを使って到着状況を管理し、 必要なデータを再送します。
問題5.次の文章の空欄を埋めてください。
TCPは通信前に「( A )」を確立し、 データの到着を「( B )」で確認します。 UDPはこれらの制御をUDP自身では行いません。
解答を見る
TCPでは、通信相手との接続を確立したあと、 ACKなどを使ってデータの到着状況を管理します。
実践演習:通信の目的からTCPとUDPを選ぼう
次の通信では、TCPとUDPのどちらが適しているかを考えてください。 実際にはアプリケーションごとに詳細な設計がありますが、 ここでは基本的な特徴から判断します。
課題1.設計ファイルをサーバーへ送信する
100MBの設計ファイルをサーバーへ送信します。 ファイルの一部でも欠けると開けなくなる可能性があります。
理由:
課題1の解答を見る
適している方式:TCP
ファイルの一部が失われると正常に利用できないため、 到着確認、再送、順序制御を行うTCPが適しています。
課題2.オンライン会議の音声を送信する
会話中の音声をリアルタイムで送信します。 一瞬前の音声を遅れて再送すると、会話が聞き取りにくくなります。
理由:
課題2の解答を見る
基本的にはUDPが適しています。
古い音声の再送より、最新の音声を遅れずに届けることが重要だからです。 実際のオンライン会議では、アプリケーション側で音声品質を補う処理も行われます。
課題3.オンラインゲームのキャラクター位置を送信する
キャラクターの位置情報を短い間隔で送信します。 1秒前の位置情報よりも、現在の位置情報が重要です。
理由:
課題3の解答を見る
UDPが適する場合があります。
古い位置情報を再送するより、 最新の位置情報を素早く届けることが重要だからです。 ただし、課金やアイテム取得などの重要な処理では、 別の信頼性のある通信を組み合わせることがあります。
課題4.ファイアウォール設定を考える
DNSサーバーへ通常の名前解決を行うため、 UDPの53番ポートを許可しました。
この設定だけで、TCPの53番ポートも許可されたと考えてよいでしょうか。
理由:
課題4の解答を見る
回答:いいえ
TCPとUDPは別のプロトコルとして扱われます。 UDPの53番を許可しても、TCPの53番が自動的に許可されるとは限りません。
自分の言葉で説明する課題
最後に、次の質問へ自分の言葉で答えてください。
ITを知らない人から、 「TCPとUDPは何が違うのですか?」と質問されました。 30秒程度で説明してください。
UDPは、________________________。
説明例を見る
TCPは、相手と接続したうえでデータの到着を確認し、 途中で失われた場合は再送する通信方式です。 ファイルやメールなど、データを確実に届けたい通信に向いています。
UDPは、接続確認や到着確認を行わずにデータを送るシンプルな方式です。 音声や映像など、再送による遅れを避けたい通信に向いています。
模範解答と同じ文章にする必要はありません。
TCPについて 接続・到着確認・再送、 UDPについて 接続確認なし・再送なし・リアルタイム性 を含めて説明できれば、この記事の目標は達成です。
まとめ
- TCPとUDPは、アプリケーション間でデータを届ける トランスポート層のプロトコル
- TCPは通信前に接続を確立し、 到着確認、再送、順序制御を行う
- UDPは通信前の接続確立や到着確認を行わず、 少ない手順でデータを送信する
- TCPヘッダーは最小20バイト、 UDPヘッダーは8バイト
- Web、メール、SSH、ファイル転送などではTCPがよく使われる
- DNS、DHCP、NTP、音声、映像などではUDPがよく使われる
- UDPを使うアプリケーションでも、 独自に再送や信頼性を実装できる
- TCPとUDPは優劣ではなく、 データの完全性とリアルタイム性などを考えて使い分ける
TCPは「確認しながら確実に届ける」、 UDPは「少ない手順ですぐに送る」と覚えましょう。
初級編では、ネットワークの全体像からIPアドレス、ARP、TCP、 DNS、基本コマンド、障害切り分けまでを順番に学びます。

コメント