なぜUDPプロトコルはTCPプロトコルのようなストリームをサポートしていませんか?ストリームとUDP
答えて
他にも良い答えがありますが、類推によって助けてくれるかもしれません。
UDPは郵便配達員のようなものだと想像してみてください。実際にはを参照してください。を参照してください。これは安価で、多くの人に送信する迷惑メール(読み込み:ブロードキャストパケット)に適しています。
TCPはあなたのドアをノックしてメッセージを人に伝えるメッセンジャーのようなものです。あなたがいない場合、彼は戻って少し後で試してみるでしょう。最終的に、メッセージを受け取るか、メッセンジャーは彼がそれを届けなかったことを知るでしょう。メッセンジャーを介して送信者にメッセージを送り返すこともできます。
私のアナロジーにはあまり読みすぎないようにしてください。のように実際にはという単一の「メッセンジャー」がありますが、それは考え方の面で役立つかもしれません。特に、あなたが順番に読む必要のある誰かに一連の手紙を送っていたことを想像してみましょう。郵便配達員と一緒に働くことはできません。それらを読むためにどのような順序が分からないのでしょうか。郵便配達員は途中でいくつか落としてしまったかもしれません - 誰も知らないでしょう。それは信頼できるストリームのための適切な基礎ではありません。
(ただし、新聞の配布にはうってつけのモデルですが、いくつか見逃してしまった場合でもそれは問題ではありません。後で取得する場合は、さらに面白くなります。だから、いくつかのストリーミングメディアソリューションは、信頼できる実際のストリームを与えていないにもかかわらず、UDPを使用している理由です。)
よく...
UDPはデータグラムプロトコルです。これは、何が起こっているのかを制御する高水準のプロトコルなしに、アプリケーションに無条件のデータグラムを送信させることを目的としています。
"ストリーム"はハイレベルな概念であり、したがってUDPがサポートすることはできません。
多くのアプリケーションは、待ち時間、順序の独立性、エラー処理、および必要な帯域幅の特定の混合を得るために、UDP上でTCPの一部を再実装することになります。
理由は簡単です:それはないので、それはデザインプロトコルの目標
UDPをストリームとして動作させることは、TCPが持つほとんどすべての機能を追加することを意味します。あなたは2つの同一のプロトコルで終わるでしょう。何がポイントでしょうか?
UDPは最小限の軽量プロトコルであることを意味していました。これはTCPを補完するためのものでした。
「ストリーム」をIP(& L4)ヘッダーの5タプルとして定義すると、UDPはストリームをサポートします。あなたが伝えるべきことは、UDPが接続をサポートしているかどうか(各ストリームでは、5タプルは論理接続として扱われます)、そのストリームに属するパケットの配信の信頼性がある程度保証されているかどうかです。一方、UDPの場合、パケットはストリーム(5タプル)の一部であるため、信頼性を確保するための努力はなく、適切な配信を行うために基礎となるネットワークレイヤーに依存しません。それが失敗すれば、それもそうです。 Jon Skeetの類推は完全に意味があります。
- 1. UDPとSSLストリーム
- 2. ストリーム読み取りブロックUDP UDP GNAT
- 3. キューにudpデータをストリームするC++?
- 4. udp gstreamerでh264をストリームする方法
- 5. UDP上のRTPストリームの待ち時間
- 6. ポート2368からUDPストリームを受信できません(Linux)C
- 7. のLibavでのデコードUDPストリーム:不十分なバッファサイズ
- 8. IPTVストリーム(UDP)を確認するためのPythonスクリプト
- 9. GStreamerストリームVLCで再生できるようにUDP経由のオーディオとビデオ
- 10. UDPストリームでビデオとオーディオが一致しないAndroidで再生する
- 11. PIC32イーサネットキットとUDP
- 12. UPDクライアントとUDPサーバ
- 13. C#ソケット(TCPとUDP)
- 14. TCPとUDPのスループット
- 15. UDP(
- 16. udpストリームからスクリーンショットをキャプチャする最良の方法は何ですか?
- 17. UDPのTSストリームから来るビデオ解像度を知るには?
- 18. UDP/RTP H264ストリームを記述する.sdpファイルを再生するiOS 8+
- 19. UDPストリームから受信したデータオブジェクトから整数を抽出する
- 20. UDPクライアントとUDPサーバーを同じプログラムで実行するマルチスレッド
- 21. UDP LabVIEWを使用してUDP C++ソケットと通信する
- 22. ノードJS:PingサーバーとクライアントUDP
- 23. UDPとポートのランダム化
- 24. iptablesフィルタリングのパフォーマンス:TCPとUDP
- 25. libutp(μTP)とNATトラバーサル(UDPホールパンチング)
- 26. 双方向UDPクライアントとサーバー?
- 27. DelphiのUDPサーバーとクライアント
- 28. TCPとUDPの違い
- 29. ArduinoとAndroidのUDPデータグラム
- 30. iPhone UDPブロードキャストと応答
優れた類推! –