
ネットワーク通信を理解するうえで欠かせないのが、「TCP」と「UDP」という2つのプロトコルです。どちらもインターネット上でデータを送受信するために使われていますが、その仕組みや目的は大きく異なります。TCPは「確実に届ける」ことを重視し、UDPは「速く届ける」ことを優先します。
本記事では、両者の特徴・仕組み・使い分け方をわかりやすく解説し、「宅配便」と「ハガキ」に例えた覚え方で、あなたの頭にしっかり定着させます。ネットワーク設計やプログラム開発に携わるエンジニアはもちろん、IT初心者にも役立つ内容です。
対象:ネットワーク学習の入門者〜実務エンジニア
「tcp udp 違い」という検索意図を満たしつつ、技術的な理解と現場で使える実用情報をバランスよく盛り込みました。
TCPとUDPはネットワークの基盤となるプロトコル
インターネットやローカルネットワーク上でアプリケーションがデータをやり取りするために使われる代表的なトランスポート層プロトコルがTCP(Transmission Control Protocol) とUDP(User Datagram Protocol) です。どちらを使うかの選択は、アプリケーションの性能やユーザ体験に直接影響します。
トランスポート層は、データ分割、送信順序の管理、送信確認(ACK)など、アプリケーション間での“やり取りルール”を提供しますが、TCPはこれらをOSやライブラリレベルで強力にサポートし、UDPは最小限の機能だけを提供します。選択を誤ると、遅延や切断、帯域の浪費、不必要なリトライなどが起き得ます。逆に適切に使えば、スループットや応答性を大幅に改善できます。
TCP(Transmission Control Protocol)の仕組みと特徴
TCPの定義:確実性と順序を重視した通信プロトコル
TCPは信頼性(Reliability)と順序(In-order delivery) を保証するために設計されたプロトコルです。アプリケーションはTCPに任せることで「届かなかった」「順序が入れ替わった」といった問題を気にせず通信できます。
TCPのコネクション指向の仕組み:仮想的な通信路を確保
TCPは接続を確立してからデータを送ります。接続確立(3ウェイハンドシェイク)と切断(4段階のFINやRST)により、通信状態を管理します。
接続確立のプロセス:3ウェイハンドシェイク
- クライアント → サーバ:SYN(同期)
- サーバ → クライアント:SYN/ACK(応答)
- クライアント → サーバ:ACK(確認)
この時点で双方は初期シーケンス番号(ISN)を交換し、以降のパケットに対する順序と確認が可能になります。
TCPの高信頼性を実現する機能
- シーケンス番号とACK(確認応答):どのデータが届いたかを追跡
- 再送制御:ACKが来ないパケットは一定時間後に再送(RTO:再送タイムアウト)
- フロー制御(ウィンドウ制御):受信側が処理できる量だけ送る(受信ウィンドウ)
- 輻輳制御:ネットワーク全体の混雑を避ける(slow start/AIMD/fast retransmit など)
- オプション:MSS、ウィンドウスケーリング、SACK(選択的確認)、タイムスタンプなど
TCPのデメリット:オーバーヘッドと遅延
信頼性を満たすための制御が多く、遅延(RTTに依存)やヘッダ/制御オーバーヘッド、接続確立に伴うコストがあります。短時間のメッセージを大量にやり取りする用途では効率が悪くなる場合があります。
TCPヘッダの特徴:20バイトの複雑な構造
標準のTCPヘッダは最小20バイト。シーケンス番号(4バイト)、ACK番号(4バイト)、オフセット、フラグ(SYN/ACK/FIN/RST/PSH/URG)、ウィンドウサイズ、チェックサム、緊急ポインタなどを含みます。
UDP(User Datagram Protocol)の仕組みと特徴
UDPの定義:速度を最優先した通信プロトコル
UDPは、できるだけ速くデータを送ることを目的としたシンプルなプロトコルで、軽量で低遅延 な通信を提供するために設計されました。データグラムを送り届ける最小限の機能だけを持ちます。 TCPのように接続確立や確認応答を行わないため、通信の遅延がほとんどありません。
UDPはコネクションレス型の通信方式:事前の接続確立なしに送信
UDPは送信時に相手との接続を確立しません。送るたびに新しいパケットをそのまま投げるイメージで、受信側は届いたパケットをそのまま処理します。これにより、短時間で大量のデータを処理する用途に適しています。 UDPは「コネクションを張らない」ため、送信側はただパケットを出すだけ。これにより初期遅延と処理負荷が小さいです。
UDPの信頼性のなさ(確認や再送の処理がない)
UDPには再送制御や順序保証の仕組みがありません。途中でデータが失われても再送は行われず、送信者は気づきません。その代わり、処理が非常に軽く、高速な通信が可能です。 UDP自体には順序保証・再送・フロー制御がありません。必要ならアプリケーション側で確認や再送を実装します。
UDPのメリット:低遅延で高速なデータ転送が可能
UDPは確認応答を行わないため、通信の往復回数が少なく、低遅延です。1秒以下の遅延が致命的なリアルタイム通信においては、TCPよりもUDPが適しています。
- 小さなヘッダ(8バイト) でオーバーヘッドが小さい
- マルチキャスト/ブロードキャストに対応しやすい
- リアルタイム性を重視するアプリに最適
UDPが特に適している利用シーン
- VoIP / WebRTC / ビデオ会議:多少のパケットロスは許容してでも低遅延を優先
- オンラインゲーム:最新状態を素早く配る(遅延の方が致命的)
- DNS:短いクエリ/レスポンス(ただし大きいレスポンスはTCPへフォールバック)
- NTP/DHCP/RTSP/RTPなどのプロトコル
UDPの注意点
- フラグメンテーションはIP層で起きることが多く、MTUを超えると断片化される
- IPv4でチェックサムはあるがオプション扱い(IPv4では0で無効も可)
- NATを跨ぐ通信用のホールパンチなど、UDPはNAT越えで便利な特性を持つ
TCPとUDPの違い
TCP(Transmission Control Protocol)とUDP(User Datagram Protocol)は、インターネットをはじめとするネットワーク上で広く利用されているトランスポート層(OSI参照モデルのレイヤー4)のプロトコルであり、データの送受信方法において根本的な特性の違いがあります。
比較項目 | TCP | UDP |
---|---|---|
目的 | データの信頼性と順序保証 | スピードとリアルタイム性 |
通信方式 | コネクション指向 | コネクションレス |
信頼性 | 高(順序保証・再送) | 低(保証なし) |
速度 | やや遅い(手順が多い) | 速い(処理が軽い) |
順序保証 | あり | なし |
ヘッダサイズ | 約20バイト(オプションあり) | 8バイト |
制御機構 | 再送・フロー・輻輳 | なし(アプリで実装可能) |
主な用途 | Web閲覧、メール、ファイル転送 | ライブ配信、音声通話、オンラインゲーム、DNS |
ワンポイント:TCPは“ネットワークが不安定でも安全に届ける”、UDPは“早く届ける”
TCP/UDP 用途による使い分けと具体例
TCPが使われる場面:データの完全性と順序が不可欠な通信
TCPは、データの欠損や順番の乱れを許容できない通信に使われます。例えば、Webページの閲覧ではHTMLファイルの一部でも欠けると正しく表示されません。そのためHTTPやHTTPS、メール送受信(SMTP・IMAP)など、正確さが求められる通信で使われます。
- Web(HTTP/HTTPS):ページやリソースは完全性が重要。※ただしHTTP/3(QUIC)はUDPベースに移行中
- メール(SMTP/IMAP/POP3):メッセージ欠落が許されない
- ファイル転送(SFTP/FTP):データの整合性は必須
UDPが使われる場面:リアルタイム性と低遅延が優先される通信
UDPは速度が重視されるリアルタイム通信に最適です。例えば、オンラインゲームでは毎秒数十回のデータ更新が行われますが、1回分のデータが欠けてもゲーム進行に支障がないため、UDPの軽量性が活かされます。
- リアルタイムメディア(RTP/WebRTC):遅延が致命的
- ゲーム:位置情報の頻繁な更新はロスを許容して低遅延を優先
- DNS(通常):短いトランザクション
最近の技術動向(QUICプロトコル)
Googleが開発したQUICプロトコルは、UDP上にTCPのような信頼性制御を実装した新しい通信技術です。HTTP/3の基盤として採用されており、今後はウェブ通信の主流となる可能性があります。
- QUIC(HTTP/3):UDP上に独自の信頼性・輻輳制御を実装し、TCPの欠点(接続確立コストやHead-of-Line blocking)を解消。実運用ではHTTPSの多くがQUICへ移行しつつあります。
- DTLS:UDP上でTLS相当のセキュリティを提供
- RTP+RTCP:音声/映像のためにUDP上で制御情報を分離して扱う
TCPやUDPで使われるポート例
- HTTP:TCP 80
- HTTPS:TCP 443(QUICは UDP 443)
- DNS:UDP/TCP 53
- SSH:TCP 22
- RTP/RTCP:UDP(ダイナミックポート)
TCPとUDPの違いの覚え方
TCPとUDPを「配達サービス」に例えた覚え方
TCPは手渡しで受け取り確認を行う宅配便に例えられます。一方UDPは“ポストに投函するハガキ”のようなものです。TCPは確実に届くが手間がかかり、UDPは早く届くが確認は取れません。このイメージを持つことで、両者の特性を直感的に理解できます。
- TCP(宅配便:手渡し・受領サイン):確実に受け取ったことを確認する。遅れても届く。
- UDP(ポスト投函のハガキ):すぐに届けられるが配達確認はない。
TCPとUDPの覚えやすいキーワード・語呂合わせ
TCPはTransmission(転送) という言葉の通り、丁寧にデータを運ぶ性格です。対してUDPはUser Datagram(ユーザーデータグラム) であり、ユーザーが自由にデータを投げるような軽快さを持ちます。
以下のように連想すると覚えやすいです。
- TCP = Tie(結ぶ)=コネクションを作る(3-way handshake)
- UDP = Unconfirmed(確認なし)=軽量で速い
TCP/UDP違いまとめ
- TCP:信頼性を最優先。順序保証・再送・フロー制御あり。Webやメール、ファイル転送向け。
- UDP:低遅延を最優先。ヘッダ小・制御なし。VoIPやゲーム、DNSなどに適する。
- 覚え方:宅配便(TCP) vs ハガキ(UDP)。TはTie(結ぶ)、UはUnconfirmed(確認なし)で連想すると覚えやすい。
TCPとUDPは、どちらが優れているというより用途が異なる通信方式です。TCPは信頼性が高く、データの完全性が求められる通信に向いています。一方UDPは、リアルタイム性と軽さを活かして、動画配信や音声通話などに適しています。両者の特性を理解し、目的に応じて使い分けることが、効率的なネットワーク設計の第一歩です。
TCP/UDPのQA例
- Q: 3ウェイハンドシェイクの順序は?(A: SYN→SYN/ACK→ACK)
- Q: UDPヘッダサイズはいくつ?(A: 8バイト)
以上で本記事の解説を終わります。
よいITライフを!