Sono appena tornato a casa dal mio esame di programmazione di rete e una delle domande che ci hanno posto è stata "Se hai intenzione di trasmettere video in streaming, useresti TCP o UDP? Fornisci una spiegazione sia per i video memorizzati che per i flussi video live" . A questa domanda si aspettavano semplicemente una breve risposta di TCP per il video memorizzato e UDP per il video live, ma ci ho pensato mentre tornavo a casa, ed è necessariamente meglio usare UDP per lo streaming di video live? Voglio dire, se hai la larghezza di banda per farlo e dici che stai trasmettendo in streaming una partita di calcio, o un concerto per quella materia, hai davvero bisogno di usare UDP?
Diciamo che mentre stai trasmettendo questo concerto o qualsiasi altra cosa usando TCP inizi a perdere pacchetti (è successo qualcosa di brutto in qualche rete tra te e il mittente) e per un minuto intero non ricevi pacchetti. Il flusso video si interromperà e dopo che il minuto è trascorso, i pacchetti ricominceranno a passare (IP ha trovato un nuovo percorso per te). Ciò che accadrebbe è che TCP ritrasmetterà il minuto perso e continuerà a inviarti il live streaming. Come presupposto, la larghezza di banda è superiore al bit-rate sullo stream e il ping non è troppo alto, quindi in un breve lasso di tempo, il minuto perso fungerà da buffer per lo stream per te, in questo modo , se la perdita di pacchetti si verifica di nuovo, non te ne accorgerai.
Ora, mi viene in mente alcuni apparecchi in cui questo non sarebbe una buona idea, come ad esempio video-conferenze, in cui è necessario essere sempre alla fine del flusso, perché ritardo durante una video-chat è semplicemente orribile, ma durante una partita di calcio o un concerto che importa se sei un minuto dietro la corrente? Inoltre, hai la garanzia di ottenere tutti i dati e sarebbe meglio salvarli per una visione successiva quando arriveranno senza errori.
Quindi questo mi porta alla mia domanda. Ci sono degli svantaggi che non conosco nell'utilizzo di TCP per lo streaming live? O dovrebbe davvero essere, che se hai la larghezza di banda per farlo dovresti scegliere TCP dato che è "più bello" per la rete (controllo di flusso)?