Ich bin gerade von meiner Prüfung in Netzwerkprogrammierung nach Hause gekommen, und eine der Fragen, die sie uns stellten, war: "Wenn Sie Videos streamen möchten, würden Sie TCP oder UDP verwenden? Geben Sie eine Erklärung für gespeicherte Videos und Live-Videostreams." . Auf diese Frage erwarteten sie einfach eine kurze Antwort von TCP für gespeichertes Video und UDP für Live-Video, aber ich dachte auf dem Heimweg darüber nach, und ist es notwendigerweise besser, UDP für das Streaming von Live-Video zu verwenden? Ich meine, wenn Sie die Bandbreite dafür haben und sagen, dass Sie ein Fußballspiel oder ein Konzert streamen, müssen Sie dann wirklich UDP verwenden?
Nehmen wir an, während Sie dieses Konzert oder was auch immer mit TCP streamen, verlieren Sie Pakete (in einem Netzwerk zwischen Ihnen und dem Absender ist etwas Schlimmes passiert), und für eine ganze Minute erhalten Sie keine Pakete. Der Videostream wird angehalten und nach Ablauf der Minute werden die Pakete wieder durchgelassen (IP hat eine neue Route für Sie gefunden). Was dann passieren würde, wäre, dass TCP die Minute, in der Sie verloren haben, erneut überträgt und Ihnen weiterhin den Live-Stream sendet. Angenommen, die Bandbreite ist höher als die Bitrate im Stream, und der Ping ist nicht zu hoch. In kurzer Zeit fungiert die verlorene Minute auf diese Weise als Puffer für den Stream Wenn der Paketverlust erneut auftritt, werden Sie es nicht bemerken.
Jetzt kann ich von einigen Geräten denken , wo dies nicht eine gute Idee wäre, wie zum Beispiel Videokonferenzen, wo Sie müssen immer am Ende des Stroms sein, weil Verzögerung während eines Video-Chat einfach schrecklich ist, aber Während eines Fußballspiels oder eines Konzerts, was macht es aus, wenn Sie eine Minute hinter dem Strom sind? Außerdem ist Ihnen garantiert, dass Sie alle Daten erhalten, und es ist besser, sie für eine spätere Anzeige zu speichern, wenn sie fehlerfrei eingehen.
Das bringt mich zu meiner Frage. Gibt es Nachteile, die ich bei der Verwendung von TCP für Live-Streaming nicht kenne? Oder sollte es wirklich so sein, dass Sie sich für TCP entscheiden sollten, wenn Sie die Bandbreite dafür haben, da es für das Netzwerk "netter" ist (Flusskontrolle)?