1. ホーム
  2. sockets

[解決済み] 信頼性の高いUDPが必要な場合、何を使うか?

2022-03-01 02:37:49

質問

TCP接続では遅すぎる可能性があり、UDP「接続」では信頼性が低すぎる可能性がある場合、何を使用するのでしょうか?標準的な信頼性の高いUDPプロトコルがいろいろありますが、それらについてどのような経験がありますか?

もし他の人がすでに使っているプロトコルに言及している場合は、投票し、必要であればコメントで詳しく説明することを検討してください。

私は、TCPとUDPを含む様々なオプションに興味があります。信頼性の高いさまざまなUDPのオプションがあり、それぞれがTCPの要素をUDPに持ち込んでいます。

TCPが正しい選択であることはよく知られていますが、その結論に至るには、代替手段のリストがあると便利です。EnetやRUDPなど、UDPをベースにしたものには様々な長所と短所がありますが、それらを使ったことがありますか?

これは仮定の質問で、決断を必要とする人が利用できるさまざまなオプションや選択肢を詳しく説明する回答リストを引き出すことを期待したものです。

解決方法は?

この質問には、問題の領域に関する追加情報がないと回答するのは困難です。 例えば、どの程度のデータ量を使用しているのか?頻度は?データの性質は?(例: 一意のデータなのか、サンプルデータのストリームなのか、など) どのようなプラットフォーム向けに開発されていますか?(例:デスクトップ/サーバー/組込型) 遅すぎるという意味を判断するために、どのようなネットワーク媒体を使用していますか?

しかし、(非常に!)一般論として、あなたが送信しようとしているデータについていくつかの難しい仮定を立てない限り、スピードでtcpに勝つために本当にハードに挑戦しなければならないでしょうと思います。

例えば、送信しようとしているデータが1つのパケットの損失を許容できるようなものであれば(例えば、サンプリングレートが信号の帯域幅の何倍も高い、定期的にサンプリングされたデータ)、データの破損を検出できるようにすることによって(例えば、優れたCRCの使用によって)、おそらく伝送の信頼性を犠牲にすることができます。

しかし、もし1つのパケットの損失を許容できないのであれば、tcpがすでに持っている信頼性のためのタイプの技術を導入し始めなければならなくなるでしょう。そして、相応の労力をかけずに、これらの要素をユーザースペースのソリューションに組み込み始めると、それに伴う固有のスピードの問題をすべて抱えていることに気づくかもしれません。