Я щойно повернувся додому з іспиту з мережевого програмування, і одним із запитань, яке вони нам задали, було: "Якщо ви збираєтеся транслювати відео, чи використовуєте ви TCP або UDP? Дайте пояснення як для збереженого відео, так і для потокових відеопотоків" . На це питання вони просто очікували короткої відповіді TCP для збереженого відео та UDP для відео в реальному часі, але я думав про це, повертаючись додому, і чи обов'язково краще використовувати UDP для потокового відео в прямому ефірі? Я маю на увазі, якщо у вас є пропускна здатність для цього і ви говорите, що транслюєте футбольний матч або концерт з цього приводу, вам справді потрібно використовувати UDP?
Скажімо, під час трансляції цього концерту або будь-чого іншого за допомогою TCP ви починаєте втрачати пакети (щось погане сталося в якійсь мережі між вами та відправником), і протягом цілої хвилини ви не отримуєте жодних пакетів. Відеопотік призупиняється, і після закінчення хвилини пакети починають проникати знову (IP знайшов для вас новий маршрут). Тоді сталося б так, що TCP повторно передав би хвилину, яку ви втратили, і продовжував надсилати вам пряму трансляцію. Припускаючи, що пропускна здатність перевищує швидкість передачі даних у потоці, а пінг не надто високий, тому за короткий проміжок часу одна втрачена хвилина буде діяти як буфер для потоку для вас. , якщо втрата пакетів повториться знову, ви цього не помітите.
Тепер, я можу думати про деяких приладах , де це не було б гарна ідея, як, наприклад , відео-конференції, де ви повинні завжди бути в кінці потоку, тому що затримка під час відео-чату це просто жахлива, але під час футбольного матчу чи концерту, що має значення, якщо ви на хвилину за потоком? Крім того, ви гарантовано отримаєте всі дані, і було б краще зберегти для подальшого перегляду, коли вони надходять без помилок.
Тож це підводить мене до мого запитання. Чи є якісь недоліки, про які я не знаю, щодо використання TCP для прямої трансляції? Або насправді має бути так, що якщо у вас є пропускна здатність для цього, вам слід вибрати TCP, враховуючи, що це "приємніше" для мережі (контроль потоку)?