こう 聞かれます
- 「TCP と UDP の
違いを 説明してください」 - 「動画の
通話や オンラインの ゲームで UDP が 使われるのは なぜですか」 - 「Web の
通信は どちらを 使っていますか」 (知っている 範囲を 確かめる形)
面接官が 見ている点
- 「TCP は
確実、 UDP は 速い」の 先に、 なぜそうなるのか (確かめと 送り直し、 順番、 つなぐ 手間 ) を話せるか - どちらが
上というのではなく、 場面で 選ぶ物だと 分かっているか - 使われている
例を 正しく 挙げられるか
短い答え
- TCP は、
先に 相手と つないでから 送り、 届いたかを 確かめ、 抜けた分は 送り直して、 送った 順に 並べて 渡します。 確実ですが 手間が かかります。 - UDP は、
つながずに すぐ 送り、 届いたかも 順番も 確かめません。 そのぶん 軽く、 待ちが 短くなります。 - だから Web や
メールのように 欠けては 困る 物は TCP、 通話や オンラインの ゲームのように 少し 欠けても 遅れない方が よい物は UDP を 使います。
少し 詳しい答え
TCP が 確実なわけ
- つなぐ
送る 前に 3 回の やり取り (3-way ハンドシェイク) で、 お互いが 送れる 状態かを 確かめます - 確かめと送り直し受け取った
側は 「ここまで届いた」と 返します。 返事が 来ない分は 送り直します - 順番データに
通し番号を 付けるので、 受け取った 側は 順に 並べ直せます - 混み具合への配慮相手や
回線が 詰まっていれば、 送る 量を絞ります
この
UDP が軽いわけ
UDP は
Web の通信は
HTTP/1.1 と HTTP/2 は TCP の
作った
よく ある間違い
- 「UDP は
届かないこともある、 だから 使えない」と言う 欠けても 待たない方が よい 場面では、 それが 利点に なります。 確実さが 要るなら アプリの 側で補います - 「TCP なら
処理が 1 回だけ 行われる」と思う TCP が 守るのは 通信の 中での 到達と 順番です。 アプリの 処理が 二重に 走らないかは 別に考えます - 「HTTP/3 は UDP だから
確実でない」と言う QUIC が UDP の 上で 送り直しや 順番の 管理を しています
深掘りの問い
- 「3-way ハンドシェイクでは
何を やり 取りしますか」つなぎたいという 合図、 それへの 返事と 合図、 最後の 返事、の 3 回で、 お互いの 通し番号の 始まりを 伝え合う、と答えます - 「TCP で 1 つの
抜けが あると 何が 起きますか」 抜けた 分が 届くまで、 後ろに 届いた 分も アプリに 渡せず 待つ、と答えます - 「ほかに UDP を
使う例は ありますか」 DNS の 問い 合わせや、 時刻合わせなどを挙げます