質問

私はUDPがRTPではなく、TCPで使用されている理由を知りたいと思いました?。私は、VoIP OSSの一部をハッキングなどの主要なVoIPのツールは、UDPのみを使用します。

役に立ちましたか?

解決

DJが指摘したように、TCPはそれを達成するために、信頼性の高いデータ・ストリームを取得し、伝送速度が遅くなり、再送信破損したパケットについてです。

UDPは、通信の信頼性を気にせず、データを遅くしたり、再送信しません。

アプリケーションがウェブサーバからファイルを取得するために、例えば、信頼性の高いデータストリームを必要とする場合は、

、あなたはTCPを選択します。

アプリケーションが破損または失われたパケットを気にせず、追加の信頼性を提供するために追加のオーバーヘッドが発生する必要がない場合は、

、あなたの代わりにUDPを選択することができます。

VOIPを大幅に信頼性の高いパケット送信することにより改善されておらず、実際には、いくつかのケースでは、再送信し、指数バックオフのようなTCPにあるものは、実際にVOIPの品質を傷つけることができます。したがって、UDPは、より良い選択だった。

他のヒント

良い答えの多くが与えられているが、私は明示的に一つのことを指してしたいと思います:

(他の人が指摘したように)

基本的には完全なデータ・ストリームは、リアルタイムのオーディオ/ビデオのために持っている素晴らしい事ですが、その厳密には必要ではない。

重要な事実は、遅すぎる到着したデータの一部が無価値であるということです。秒前に表示されているはずのフレームの欠落したデータは良いとは何ですか?

あなたは(また、すべてのデータの正しい順序を保証)TCPを使用していた場合は、古いものが正しく送信されるまで、より最新のデータを取得することはできません。これは二重に悪いです:あなたはをして(今遅れている)の新しいデータは、おそらく同じように無価値になります古いデータの再伝送を待つ必要が

だから、RTPは、それが時間内に利用可能なすべてのデータを転送するベストエフォート型伝送のいくつかの種類を試みるないことではなく、転送(*)中に破損/失われた再送信データにしようとしません。それはちょうど生活になり、より重要な現在のデータが正しくあり得ることを望んでいます。

(*)実際に私は、RTPの詳細を知りません。多分それは(今までに失われたデータを受け入れないであろう)を再送信しようとするが、それがなければ、TCPがあるほど積極的ではありませんします。

他の人は、しかし、インクルードは本当にあなたがなぜ本当の理由を教えていない、正しいです。 SAUAのことで、ヒントのようなものが、ここでは、より完全な答えだ。

オーディオとビデオをリアルタイムです。あなたはラジオを聞いて、またはテレビを見て、信号が遮断され、それはあなたが...中断したところあなたはちょうどそれがストリームとして信号を「観察」し、あなたが観察することができない場合しているピックアップしていないしている場合それは、任意の時点で、あなたはそれを失います。

理由は、簡単です。ディレイ。 VOIPは、誰かが一方の端部に向かって話す時から遅延量を最小化することは非常に難しいしようとすると、あなたの側でそれを取得し、戻ってあなたの応答。そうでない場合は、エラーとしてそれは無駄になるまで、人が話したとき、信号を受信したときの間の遅延の量が連続成長する、発生します。

の再送から各遅延を再生する必要があり、覚えておいて、それは、別のエラーがさらに大きな遅延を引き起こし、さらにデータを遅延させます。唯一の実行可能な解決策は、単純にリアルタイムで表示することはできません任意のデータをドロップすることです。

の再送から1秒の遅延は、それが今、あなたはそれを聞いたまで、私が何かを言った時から1秒になります意味します。秒1秒の遅延は、今、それはあなたがそれを聞くまで、私は何かを言う時から2秒であることを意味します。これは、データが、それが話されているのと同じレートで再生されるため、累積され、というように...

RTPは接続指向のかもしれないが、それはドロップ(またはスキップ)しなければならないデータはとにかく再送エラーに追いつくために、なぜ余分なオーバーヘッドを気に?

技術的にはRTPパケットはTCP接続上でインターリーブすることができます。ここに与えられた偉大な答えがたくさんあります。二つの追加のマイナーポイント:

RFC 4588は、1つのRTPデータを再送を使用することができます方法について説明します。 RTPストリームを受信するほとんどのクライアントは再送信が所望のデータを受信するために利用可能な時間がある、通常1-5秒の長さとを意味しているネットワークのジッタを考慮するためのバッファを採用しています。

RTPトラフィックは、TCP接続上でインターリーブすることができます。これが行われ、実際に、インターリーブRTP(すなわち、TCP上)とRTPの差はUDPを介して送信され、これら二つは、ユーザに利用可能な帯域幅が不十分と損失の多いネットワークを介して行う方法です。プレイヤが継続的に到着するパケットのバッファリング状態で待機するようにインターリーブTCPストリームがぎくしゃくになってしまうであろう。プレーヤーによってはそれが追いつくために先にジャンプすることがあります。 RTP接続を使用すると、ビデオにアーティファクト(スミア/ティアリング)を取得します。

UDPは、多くの場合に有用であることが厳密な順序付けを必要としないリアルタイムトラフィックの様々なタイプのために使用されています。 TCPは、アプリケーションにデータを渡す前に順序を強制するためです(デフォルトでは、あなたはURGポインタを設定することでこれを回避することができますが、誰もこれを行うにはいないようです)、それはどこにしたい環境に非常に望ましくないことむしろ確実に古いデータを取得するよりも、現在のリアルタイムデータを取得します。

RTPパケットロスにかなり鈍感であるので、それはTCPの信頼性を必要としません。

ネットワーク帯域幅をより効率的に利用されるように、一つのパケットは、より多くのデータを運ぶことができるように、

はUDPヘッダーのオーバーヘッドが少ない。

UDPはまた、高速なデータ伝送を提供しています。

だから、UDPは、このような場合では当然の選択です。

のほかに、他の全て素晴らしく、正解 には、TCPとUDPの違いについてよく理解しています。

UDPはデータが全く安定した接続が必要とされていない場所を正確にターゲット上で受信する必要がある、またはしない、送信されている場所に使用されます。

のデータは、ビットのために、正確に受信されるビットの損失をビットを必要としない場合にTCPが使用されます。

は、ビデオとサウンドのストリーミングのために、途中で失われたいくつかのビットはそれがmentionableである、方法で結果に影響を与えない、DVDを紛失した上で、利用者に影響を及ぼしストリームのピクチャ、何に失敗した一部の画素ビットレートが高くなっています。

ちょうど発言: RTPストリームで送信される各パケットは、任意のパケットが欠落しているかどうかを決定するために先THRでき、そのpredecessor.Thisよりもナンバーワンが与えられます。 パケットがmisingされている場合は、取るために先のための最善の行動は、補間によって欠落しているvaueを近似することです。 Retranmissionが再送パケットが有用であることが遅すぎるだろうので、procticalオプションではありません。

私はマットHはStoborの答えに応じて、言ったことにすぐに追加したいと思います。マットHは、それらが破損している場合、彼らは再送を取得するようにUDPパケットを超えるRTPがchecksum'edできることを述べました。これは、実際には、ほとんどのPBX上のオプション機能です。アスタリスクでは、たとえば、次の行を持つrtp.conf設定ファイルでUDPトラフィックよりも/あなたのRTP上の無効チェックサムを有効にすることができます:

rtpchecksums=yes ; or no if you prefer

乾杯!

リアルタイムトランスポートプロトコルは、ネットワークプロトコルは、それによって、ボイスオーバーインターネットプロトコル(VoIP)を有効に、インターネット経由でストリーミングオーディオおよびビデオメディアを配信するために使用されます。

RTPは、一般に、ネットワークを介して接続をセットアップするSIPなどのシグナリングプロトコルで使用されます。 RTPアプリケーションでは、伝送制御プロトコル(TCP)を使用することができますが、UDPは、データの高速配信が可能になりますので、ほとんどのではなく、ユーザーデータグラムプロトコル(UDP)を使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top