[解決済み】TCPの代わりにUDPを使用することが適切なのはどんな場合ですか?[クローズド]
質問
TCPはパケットの配送を保証しているので信頼性が高いと言えますが、UDPは何も保証していないのでパケットが失われる可能性があります。アプリケーションにおいて、TCPストリームではなくUDPでデータを伝送する利点は何でしょうか?また、どのような場面でUDPを使うのがよいのでしょうか。
UDPはストリームの生成と維持のオーバーヘッドがないので高速だと思いますが、一部のデータが宛先に到達しない場合は関係ないのではありませんか?
解決方法は?
これは私の好きな質問の一つです。UDPはとても誤解されているのです。
単純な答えを他のサーバーに素早く伝えたいような状況では、UDPが最も効果的です。一般的には、回答は1つのレスポンスパケットに収めたいもので、信頼性や再送のために独自のプロトコルを実装する用意があるものです。DNSはこのユースケースを完璧に表現しています。接続設定のコストが高すぎる(それでも、DNSは はTCPモードもサポートしています)。
もう1つのケースは、新しいデータが入ってくるとその前のデータ/状態が置き換わるため、失われる可能性のあるデータを配信している場合です。気象データ、ビデオストリーミング、株式相場サービス(実際の取引には使用されません)、ゲームデータなどが思い浮かびます。
また、膨大な量のステートを管理している場合、OSが多くのセッションを処理できないため、TCPを使わないようにしたい場合です。これは今日では稀なケースです。実際、現在ではユーザーランドのTCPスタックがあり、アプリケーションライターはTCPステートに必要なリソースをより細かく制御することができます。2003年以前は、UDPが唯一のゲームでした。
もうひとつは、マルチキャストトラフィックの場合です。UDPは複数のホストにマルチキャストが可能ですが、TCPはこれがまったくできません。
関連
-
[解決済み] オクテット・ストリングス それは何ですか?
-
[解決済み] パイプとソケットの違いは何ですか?
-
[解決済み] localhost:8080とはどういう意味ですか? [クローズド]です。
-
[解決済み] TCP/IPのリセット(RST)フラグが送信される原因は何ですか?
-
[解決済み] Mac OS Xで、指定したTCPポートでリッスンしているのは誰ですか?
-
[解決済み】WindowsでTCPまたはUDPポートをリッスンしているプロセスを見つけるにはどうすればよいですか?
-
[解決済み】接続タイムアウトエラーを人為的に発生させる
-
[解決済み】ローカルネットワーク内のすべての有効なIPアドレスのリストを取得する方法は?[クローズド]
-
[解決済み】遅いネットワーク接続をシミュレートするネットワークツール【終了しました
-
[解決済み】インターネット上で最大の安全なUDPパケットサイズとは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] オクテット・ストリングス それは何ですか?
-
[解決済み] SNMPのpingとは何ですか?
-
[解決済み] パイプとソケットの違いは何ですか?
-
[解決済み] カーネルソースプロジェクトのinclude/uapiに含まれるもの
-
[解決済み] pingレスポンス "Request timed out." vs "Destination Host unreachable" (リクエストがタイムアウトしました)。
-
[解決済み] localhost:8080とはどういう意味ですか? [クローズド]です。
-
[解決済み] RPCサーバーが使用できません。(HRESULT: 0x800706BA による例外)。
-
[解決済み】インターネット上で最大の安全なUDPパケットサイズとは?
-
[解決済み】UDP vs TCP、どれくらい速いのか?[クローズド]
-
[解決済み】SCTPがあまり使われていない/知られていない理由