TCP の代わりに UDP を使用するのが適切なのはいつですか? [closed] 質問する

TCP の代わりに UDP を使用するのが適切なのはいつですか? [closed] 質問する

TCP はパケットの配信を保証するため「信頼性」があると考えられますが、UDP は何も保証せず、パケットが失われる可能性もあります。アプリケーションで TCP ストリームではなく UDP を使用してデータを送信する利点は何でしょうか。どのような状況で UDP の方が適しているのでしょうか。またその理由は何でしょうか。

UDP はストリームの作成と維持のオーバーヘッドがないので高速であると想定していますが、一部のデータが宛先に到達しない場合は無関係ではないでしょうか?

ベストアンサー1

これは私のお気に入りの質問の 1 つです。UDP は非常に誤解されています。

別のサーバーに簡単な回答をすぐに取得したい場合には、UDP が最適です。一般的に、回答は 1 つの応答パケットに収める必要があり、信頼性を確保したり再送信したりするために独自のプロトコルを実装する用意があります。DNS は、このユース ケースを完璧に表しています。接続設定のコストは高すぎます (ただし、DNS は TCP モードもサポートしています)。

もう 1 つのケースは、新しいデータが入ってくると以前のデータ/状態が置き換えられるため、失われる可能性があるデータを配信する場合です。天気データ、ビデオ ストリーミング、株価情報サービス (実際の取引には使用されません)、ゲーム データなどが考えられます。

もう 1 つのケースは、膨大な量の状態を管理しており、OS がそれほど多くのセッションを処理できないため TCP の使用を避けたい場合です。これは今日ではまれなケースです。実際、現在ではユーザー ランド TCP スタックが使用可能であり、アプリケーション作成者は TCP 状態に必要なリソースをより細かく制御できます。2003 年以前は、UDP が唯一の選択肢でした。

もう 1 つのケースは、マルチキャスト トラフィックの場合です。UDP は複数のホストにマルチキャストできますが、TCP ではこれがまったくできません。

おすすめ記事