わかりやすく UDP とは
TCPは届いたかどうかを一つずつ確かめ、届かなければもう一度送ります。おかげで正確ですが、そのぶん待たなければなりません。けれども、ビデオ通話のように0.1秒も惜しい場面では、一つ二つかけらが抜けても、とにかく速いほうがよいのです。そんなときに使うのがUDPです。
確認を省く
前回のTCPを思い出してみましょう。かけらが届くたびに、受け取ったという確認応答(ACK)をやり取りしていました。このひと言のおかげで正確ですが、やり取りするぶん時間がかかります。
UDPは考え方を変えます。確認は飛ばして、とにかく速く送るのです。届いたかどうかを尋ねず、かけらを次々とそのまま送り出します。
送るボタンを押すたびに、かけらが一つずつすぐに飛んでいきます。TCPと違って確認応答(ACK)を待たないので、五つのかけらが休みなく出ていきます。
確認を待たないので、かけらは休みなく出ていきます。同じ時間に、ずっと多く、ずっと速く送れるのです。
その代わりに、一つあきらめたことがあります。UDPは何が届いたかを気にしません。では、途中でかけらが抜けたらどうなるのでしょうか。
いくつか抜けてもそのまま進む
TCPなら、抜けたかけらをもう一度送ってほしいと頼んだはずです。UDPはそうしません。かけらが一つ途中で消えても、止まらずにそのまま次へ進みます。
抜けたものは抜けたままにしておくのです。無責任に見えますが、抜けた一つ二つを埋めるために全体を止めるほうが損になる場合もあります。
「送る」を押すたびに、かけらが一つずつ進みます。五つのかけらのうち二つは途中で消えますが、UDPは送り直さず、そのまま最後まで進みます。
かけらがいくつか抜けたのに、送信は途切れずに終わりました。受け手には少し穴があきましたが、流れは一度も止まりませんでした。
これがUDPの性格です。完ぺきさより、止まらないことを選びます。でも、抜けたものがあって本当に大丈夫なのでしょうか。どこで使われるかを見れば答えが出ます。
いつ使うのか
UDPが向いているのは、遅れてはいけない仕事です。オンラインゲームを思い浮かべてみましょう。ワンテンポ遅れて届いた位置の情報は、もう一度受け取ってもすでに過ぎたことです。
ビデオ通話も、生放送も同じです。大事なのはいまこの瞬間で、少し前に抜けたかけらをもう一度受け取っても意味がありません。
短い質問を一つやり取りする仕事にもUDPが使われます。前に見た名前の問い合わせも、たいていUDPで尋ねて答えます。
オンラインゲーム、ビデオ通話、生放送のカードを一つずつ押すと、なぜ遅れてはいけないのかが出てきます。三つとも遅れるほうが致命的なので、UDPが合っています。
三つの場合には共通点があります。少し抜けるより、遅れるほうが致命的だということです。ゲームの画面が止まったり、通話の声が途切れて遅れたりすると、そちらのほうがずっともどかしいものです。
UDPはそのもどかしさを避けます。少し粗くても、止まらずにいまを流し続けるほうを選ぶのです。
TCPとUDPを比べる
二つは、どちらが優れていて劣っているかという話ではありません。目的が違うだけです。TCPは正確さを先に考えます。確認し、送り直し、並べ直すぶん、少し長く待ちます。
UDPは速さを先に考えます。確認なしで送り出し、抜けたものはそのままにするぶん、粗くなることがあります。何がより大切かが、選び方を分けます。
二つのボタンを押して、TCPとUDPを比べます。TCPは四つのかけらが全部届くものの長く待ち、UDPは一つ抜けても待ち時間が短くてすみます。
比べてみると、はっきりします。抜けなく正確でなければならない文章やファイルはTCPに任せます。いまこの瞬間が命のゲームや通話はUDPに任せます。
インターネットが両方をそなえているのは、世の中に二種類の急ぎがどちらもあるからです。仕事に合った道具を選んで使えばよいのです。
まとめ
一言でまとめると、UDPは確認応答(ACK)を省いて、かけらを速く次々と送り出し、いくつか抜けても送り直さずにそのまま進みます。
だから、ゲームやビデオ通話、生放送のように遅れてはいけない仕事によく合います。正確さが先ならTCP、速さが先ならUDP。目的の違う二つの約束です。
ボタンを押すたびに、要点が一つずつ現れます。(確認を省く → 速く次々と → いくつか抜けてもそのまま → ゲーム・通話・放送に)四つすべてが出そろえば、まとめは完了です。
これで、TCPとUDPの両方がわかりました。正確さが大切ならTCP、速さが大切ならUDP。インターネットは、こうして場面に合った約束を選んで使っています。
ところで、一台のコンピューターでは、ブラウザーやメッセンジャー、ゲームが同時に動いています。住所を頼りにコンピューターまで来たかけらは、そのうちのどのプログラムへ行けばよいのでしょうか。次のレッスンでは、その答えを扱います。