2009-03-18 12 views
3

なぜUDPプロトコルはTCPプロトコルのようなストリームをサポートしていませんか?ストリームとUDP

答えて

12

他にも良い答えがありますが、類推によって助けてくれるかもしれません。

UDPは郵便配達員のようなものだと想像してみてください。実際にはを参照してください。を参照してください。これは安価で、多くの人に送信する迷惑メール(読み込み:ブロードキャストパケット)に適しています。

TCPはあなたのドアをノックしてメッセージを人に伝えるメッセンジャーのようなものです。あなたがいない場合、彼は戻って少し後で試してみるでしょう。最終的に、メッセージを受け取るか、メッセンジャーは彼がそれを届けなかったことを知るでしょう。メッセンジャーを介して送信者にメッセージを送り返すこともできます。

私のアナロジーにはあまり読みすぎないようにしてください。のように実際にはという単一の「メッセンジャー」がありますが、それは考え方の面で役立つかもしれません。特に、あなたが順番に読む必要のある誰かに一連の手紙を送っていたことを想像してみましょう。郵便配達員と一緒に働くことはできません。それらを読むためにどのような順序が分からないのでしょうか。郵便配達員は途中でいくつか落としてしまったかもしれません - 誰も知らないでしょう。それは信頼できるストリームのための適切な基礎ではありません。

(ただし、新聞の配布にはうってつけのモデルですが、いくつか見逃してしまった場合でもそれは問題ではありません。後で取得する場合は、さらに面白くなります。だから、いくつかのストリーミングメディアソリューションは、信頼できる実際のストリームを与えていないにもかかわらず、UDPを使用している理由です。)

+0

優れた類推! –

8

よく...

UDPはデータグラムプロトコルです。これは、何が起こっているのかを制御する高水準のプロトコルなしに、アプリケーションに無条件のデータグラムを送信させることを目的としています。

"ストリーム"はハイレベルな概念であり、したがってUDPがサポートすることはできません。

多くのアプリケーションは、待ち時間、順序の独立性、エラー処理、および必要な帯域幅の特定の混合を得るために、UDP上でTCPの一部を再実装することになります。

3

理由は簡単です:それはないので、それはデザインプロトコルの目標

UDPをストリームとして動作させることは、TCPが持つほとんどすべての機能を追加することを意味します。あなたは2つの同一のプロトコルで終わるでしょう。何がポイントでしょうか?

UDPは最小限の軽量プロトコルであることを意味していました。これはTCPを補完するためのものでした。

0

「ストリーム」をIP(& L4)ヘッダーの5タプルとして定義すると、UDPはストリームをサポートします。あなたが伝えるべきことは、UDPが接続をサポートしているかどうか(各ストリームでは、5タプルは論理接続として扱われます)、そのストリームに属するパケットの配信の信頼性がある程度保証されているかどうかです。一方、UDPの場合、パケットはストリーム(5タプル)の一部であるため、信頼性を確保するための努力はなく、適切な配信を行うために基礎となるネットワークレイヤーに依存しません。それが失敗すれば、それもそうです。 Jon Skeetの類推は完全に意味があります。