TCPとUDPの違いとは? 確実に届けるか、速さを取るか
TCPとUDPは、どちらもIPの上で働く、データの届け方の決まりごとです。TCPは届いたかを確かめて送り直し、順番どおりに渡すので、Webやメールのように欠けては困る通信に使われます。UDPは確かめずに送るだけなので手順が少なく、遅れを嫌う通話やゲーム、短い問い合わせに向きます。
この記事でわかること
- IPだけでは足りないことと、TCP・UDPが受け持つ仕事
- ポート番号が表すもの(80番・443番・53番など)
- TCPが確実に届けるしくみ(あいさつ・番号と返事・送り直し・量の調整)
- UDPが選ばれる場面と、UDPの上に作られた新しいQUIC
前提知識: 特にありません。「インターネットはどうやってデータを届けるの?」(パケットとルータの話)を読んでいると、より読みやすくなります。
身近なところでは
Webページを開いて、文章の途中が抜けていたり、段落の順番が入れ替わっていたりすることは、まずありません。一方、ビデオ通話では、声が一瞬途切れたり、映像がかくっと飛んだりすることがあります。
通る道は同じインターネットで、違うのはデータの届け方の考え方です。Webは「少し待っても、全部を正しく」、通話は「少し欠けても、遅れずに」を大事にしています。この2つの考え方を代表するのが、TCPとUDPです。
IPだけでは、届いたかどうかはわからない
インターネットでは、データをパケットという小さなかたまりに分け、ルータという機器が中継して届けます。くわしくは「インターネットはどうやってデータを届けるの?」で説明しています。このとき宛先まで運ぶ決まりごとがIPです。IPは送り出すことに専念し、届いたかどうかは確かめません。
そのため途中では、次のようなことが起こりえます。
- 混みすぎたルータが、パケットを捨てる(なくなる)
- 通る道が変わり、後から送ったパケットが先に着く(順番が乱れる)
- 同じパケットが2回届く(重なる)
こうした乱れを、ブラウザや通話のアプリがそれぞれ直すのは大変です。そこで、IPとアプリの間に、もう1つの層を置きます。これをトランスポート層と呼び、その代表がTCPとUDPです。
どちらも、インターネットの技術の決まりを公開する文書(RFCと呼ばれます)で定められています。UDPは1980年、TCPは1981年に、今の形の基本が文書になりました。TCPについては、40年あまりの改良をまとめ直した文書が、2022年に出ています。
ポート番号: 機器の中の、どのアプリ宛てか
IPアドレスは、パケットをどの機器に届けるかを表す番号です(「IPアドレスとは?」)。しかし1台のスマホの中では、ブラウザやメール、通話のアプリが同時に通信しています。届いたパケットを、どのアプリに渡せばよいのでしょうか。
そこでTCPとUDPは、ヘッダ(パケットの先頭の、宛先などを書く部分)に、もう1つの番号を書きます。機器の中の「どの受付宛てか」を表す0〜65,535の番号で、これをポート番号と呼びます。IPアドレスとポート番号の組で、相手の機器の中のアプリまで届けられます。
サーバの受付の番号は、用途ごとにほぼ決まっています。Webは80番(HTTP)と443番(HTTPS)、名前から番号を調べるDNSは53番です。0〜1023番は広く使われる用途に割り当てられていて、ウェルノウンポートと呼ばれます。
一方、スマホのブラウザの側の番号は、通信を始めるたびに、空いている番号から選ばれます。返事はその番号宛てに届くので、同じサーバとの通信が2本同時にあっても、返事は混ざりません。
TCP: まずあいさつをして、つながりを作る
TCPは、データを送る前に、相手と短いあいさつを交わします。流れは次の3回のやり取りです。
- 送る側が「話を始めたい。こちらの通し番号はここから」と送る(SYN)
- 受ける側が「わかった。こちらの番号はここから」と返す(SYN+ACK)
- 送る側が「了解」と返す(ACK)
SYNは「始めたい」、ACKは「受け取った」を表す印の名前です。3回のやり取りなので、これを3ウェイハンドシェイクと呼びます。互いの番号の数え始めを確かめ合うことで、ネットワークに残っていた古いパケットと取り違えるのを防いでいます。
こうして互いに「この相手と話す」と確かめ合った状態を、コネクション(接続)と呼びます。
あいさつには、データを送ってから返事が戻るまでの時間(往復の時間)が1回分かかります。東京とロサンゼルスの間なら、約0.1秒です。HTTPSでは、この後に暗号の準備がさらに続きます(「HTTPSとは?」)。
通し番号と「届きました」の返事
TCPは、送るデータに通し番号をつけます。番号は、データの先頭から何バイト目かを表します(1バイトは0と1を8個並べた量)。これをシーケンス番号と呼びます。
受け取った側は、「ここまで届きました。次はこの番号からください」という返事を送ります。この返事を確認応答と呼び、英語の略でACKとも書きます。
送る側は、返事を1つずつ待ってから次を送るわけではありません。ある量までは、返事を待たずに続けて送ります。いちいち待っていたら、遠い相手ほど遅くなってしまうからです。
返事が来なければ、送り直す
送る側は、送ったデータの返事が一定の時間内に来なければ、途中でなくなったと考えます。そして、同じデータをもう一度送ります。これを再送と呼びます。
待つ時間は、相手との往復の時間を測りながら決めます。まだ測れていないときの目安は1秒で、送り直しても返事が来ないと、待つ時間を倍に延ばします。また、後ろのデータは届いているのに「まだここまで」という同じ返事が何度も続くと、欠けたと判断して、待たずに送り直します。
ただし、送り直しはいつまでも続くわけではありません。何度送っても返事がなければ、TCPはあきらめて接続を切ります(後の「よくある誤解」で説明します)。
順番をそろえ、重なりを捨てる
受け取った側は、通し番号を見て、データを正しい順に並べ直します。同じ番号のデータが2回届いたら、片方を捨てます。こうしてアプリには、送った順番どおりの、欠けも重なりもないデータが渡ります。
その代わり、途中が1か所でも欠けると、後ろのデータが届いていても、アプリには渡しません。欠けた分の送り直しが届くまで、後ろは待たされます。この待ちは、後で出てくるQUICが減らそうとした問題の1つです。
送る量の調整: フロー制御と輻輳制御
受け取る側の機器は、届いたデータを一時的に置いておく場所(受信用のメモリ)を持っています。アプリの読み出しが追いつかないと、この場所があふれてしまいます。そこで受け取る側は、返事のたびに「あとこれだけ受け取れます」と空きの量を伝えます。送る側がそれを超えて送らないようにするこのしくみを、フロー制御と呼びます。
あふれる心配は、途中のネットワークにもあります。みんなが一斉にたくさん送ると、ルータがさばききれずにパケットを捨てます。TCPは、送り始めは少なめにして、届く様子を見ながら量を増やします。多くの方式では、パケットが失われると混雑の印と見て、送る量を大きく減らします。このしくみを輻輳制御と呼びます(輻輳は、混み合うという意味です)。
輻輳制御がTCPに加わったのは、実際に困ったことが起きたからです。1986年10月、米国の数百メートル離れた研究所と大学の間で、通信の速さが毎秒32キロビットから40ビットに落ちました。失われた分を各コンピュータが送り直し、それがさらに回線を混ませる悪循環です。研究者のヴァン・ジェイコブソンらが対策を考え、1988年の論文で発表しました。
UDP: 確かめずに、すぐ送る
UDPは、あいさつも、返事の確認も、送り直しも、並べ直しもしません。ポート番号などをヘッダに書いて、データをそのまま送り出すだけです。そのため、ヘッダもTCPより小さく済みます。
では、途中で欠けたデータはどうなるのでしょうか。UDP自身は何もしないので、どうするかはアプリが決めます。通話のアプリなら、欠けた一瞬の音はあきらめて、次の音を流します。必要なら、アプリが自分で番号をつけ、大事なデータだけを送り直すこともできます。
UDPには、送る量の調整もありません。そのため、UDPで大量に送るアプリは、ネットワークを混ませないよう、自分で速さを加減する必要があります。
「遅れないこと」が大事な通信
会話では、遅れが大きいと、話がかみ合わなくなります。国際電気通信連合(ITU)は、勧告G.114で遅れの目安を示しています。片道0.15秒以内なら、多くの用途でやり取りの遅れはほぼ気にならない、という目安です。
もし通話をTCPで送ると、欠けた音の送り直しを待つ間、後ろの音まで止まります。送り直しが届くころには、会話はもう先に進んでいます。だから通話やテンポの速いゲームでは、欠けても止まらないUDPが好まれます。
どちらが何に使われているか
| 用途 | 主に使うもの | 理由 |
|---|---|---|
| Webページ(HTTP/1.1・HTTP/2) | TCP | 文字や画像が欠けては困る |
| メール・ファイルの転送 | TCP | 1か所欠けても壊れてしまう |
| DNSの問い合わせ | UDP(大きな答えはTCP) | 1往復で終わる短いやり取り |
| ビデオ通話・音声通話 | UDP(通らないときはTCP) | 遅れた音は役に立たない |
| 動きの速い対戦ゲーム | UDPが多い | いちばん新しい位置が大事 |
| 動画配信(録画もライブも) | 多くはHTTP(TCPかQUIC) | 先の分をためて再生するので、送り直す時間がある |
DNSのしくみは「DNSとは?」で説明しています。比べる観点をもっと細かく表で見たいときは、「TCPとUDPの違い」が役に立ちます。
QUIC: UDPの上に、確実さと暗号をのせる
Webの新しい版のHTTP/3は、TCPを使いません。UDPの上に作ったQUICという決まりごとを使います。QUICは、番号づけと返事、送り直し、送る量の調整という、TCPと同じ働きを自分で行います。さらに、HTTPSで使う暗号のしくみ(TLS)を組み込み、中身を必ず暗号化します。
新しい決まりごとを、なぜわざわざUDPの上に作ったのでしょうか。理由の1つは、途中の機器です。家のルータや会社のファイアウォールの多くは、知らない種類のパケットを通しません。UDPなら、今のネットワークをそのまま通れます。
もう1つは、作り直しやすさです。TCPはOS(パソコンやスマホの基本ソフト)の中に組み込まれていて、改良が行き渡るのに年月がかかります。QUICは、ブラウザなどのアプリの中で動くので、アプリの更新で改良を届けられます。
QUICは、TCPのあいさつと暗号の準備をまとめて、1往復で済ませます。TCPとTLSの組み合わせでは、ふつう2往復かかります。また、画像や文章などのデータの流れごとに、順番を別々に管理します。そのため、1か所の欠けで関係のないデータまで待たされることが減りました。
QUICは2021年5月にRFC 9000として、HTTP/3は2022年6月にRFC 9114として規格になりました。調査会社W3Techsによると、2026年時点で、調べたWebサイトの4割近くがHTTP/3を使えます。UDPを通さないネットワークもあるので、ブラウザはそのときTCPのHTTP/2などに切り替えます。版の違いは「HTTP/1.1・HTTP/2・HTTP/3の違い」で表にまとめています。
よくある誤解
誤解: UDPのほうが、いつでも速い
実際は、UDPが省くのは、あいさつや確認の手間です。回線そのものが速くなるわけではありません。大きなファイルを送る時間は、主に回線の速さで決まります。
確認なしで大量に送ると、ルータでパケットが捨てられ、欠けが増えます。確実に届けたいなら、アプリが送り直しを自分で作る必要があり、作り方しだいではTCPより遅くなります。UDPが得をするのは、遅れを小さくしたいときや、1往復で済む短いやり取りです。
誤解: TCPなら、どんなときでも必ず届く
実際は、TCPが約束するのは「届いた分は、欠けも重なりもなく、順番どおりに渡す」ことです。ケーブルが抜けたり、Wi-Fiの届かない場所に出たり、相手のサーバが止まったりすれば、送り直しても届きません。
その状態が続くと、TCPはあきらめて接続を切ります。インターネットの機器の要件をまとめた1989年の規格は、データの送り直しを少なくとも100秒は続けるよう勧めています。アプリには「接続が切れた」と知らされ、アプリがやり直すかどうかを決めます。
誤解: ゲームや動画は、いつもUDP
実際は、録画した動画やライブ配信の多くは、Webと同じHTTPで送られます。数秒分を先にためてから再生するので、欠けた分を送り直す時間があるからです。YouTubeは、TCPのほかQUICも使っています。
ゲームも、どれを使うかはゲームの種類しだいです。一瞬の操作が勝負を分ける対戦ゲームではUDPが多く使われます。一方、すぐの反応がいらないゲームでは、TCPで十分なことがよくあります。
数字で見る
| 項目 | 数字 | 時点・出典 |
|---|---|---|
| ヘッダの大きさ | TCP 20バイト、UDP 8バイト | TCPは追加の項目がない場合(RFC 9293・RFC 768) |
| ポート番号の範囲 | 0〜65,535 | 0〜1023はウェルノウンポート(IANA) |
| データを送り始めるまでの準備 | TCPで1往復、TLSを加えて2往復、QUICは1往復 | TLSは1.3の場合 |
| 東京–ロサンゼルスの1往復 | 約0.11秒 | 2026年初めの月平均(Verizon) |
| 送り直すまでの最初の待ち時間 | 1秒(以後は倍ずつ) | 往復の時間を測る前の目安(RFC 6298, 2011年) |
| 1986年の混雑による速さの低下 | 毎秒32キロビット→40ビット | ジェイコブソンらの論文(1988年) |
| 規格になった年 | UDP 1980年、TCP 1981年(まとめ直し2022年)、QUIC 2021年、HTTP/3 2022年 | IETFのRFC |
| HTTP/3を使えるWebサイト | 4割近く(37〜40%) | 2026年、W3Techs |
往復の時間が0.11秒の相手なら、準備が1往復減るだけで、データが約0.1秒早く届き始めます。遠い相手ほど、往復の回数を減らす工夫が効きます。
もっと詳しく学ぶ
- 違いを表で見る: TCPとUDPの違い(ヘッダ・データの区切り・宛先の種類まで)
- 計算で試す: データ転送時間の計算ツール(ヘッダや送り直しの影響を「伝送効率」として入れられます)
- 次の一歩の用語: RTT(返事が戻るまでの時間)、MTU(1回に運べるパケットの大きさ)
- 安全の用語: ファイアウォール(ポート番号などを見て通信の出入りを制限するしくみ)
- シリーズの最初から: 「インターネットはどうやってデータを届けるの?」