Właśnie wróciłem do domu z egzaminu z programowania sieciowego i jedno z pytań, które nam zadali, brzmiało: „Jeśli zamierzasz przesyłać strumieniowo wideo, czy użyjesz protokołu TCP lub UDP? Podaj wyjaśnienie dotyczące zarówno zapisanego wideo, jak i strumieni wideo na żywo” . Na to pytanie spodziewali się po prostu krótkiej odpowiedzi TCP dla przechowywanego wideo i UDP dla wideo na żywo, ale myślałem o tym w drodze do domu i czy koniecznie lepiej jest używać UDP do przesyłania strumieniowego wideo na żywo? Chodzi mi o to, że jeśli masz wystarczającą przepustowość i mówisz, że transmitujesz mecz piłki nożnej lub koncert, czy naprawdę musisz używać UDP?
Powiedzmy, że podczas przesyłania strumieniowego tego koncertu lub czegokolwiek za pomocą TCP zaczynasz tracić pakiety (coś złego wydarzyło się w jakiejś sieci między tobą a nadawcą) i przez całą minutę nie dostajesz żadnych pakietów. Strumień wideo zostanie wstrzymany, a po minucie pakiety zaczną ponownie przechodzić (IP znalazł nową trasę). Co by się wtedy stało, to że TCP ponownie transmituje minutę, którą straciłeś, i kontynuuje wysyłanie transmisji na żywo. Zakładając, że przepustowość jest wyższa niż przepływność w strumieniu, a ping nie jest zbyt wysoki, więc w krótkim czasie stracona minuta będzie działać jako bufor dla strumienia, w ten sposób , jeśli utrata pakietów nastąpi ponownie, nie zauważysz.
Teraz przychodzi mi do głowy kilka urządzeń, w przypadku których nie byłby to dobry pomysł, na przykład wideokonferencje, w których zawsze musisz być na końcu transmisji, ponieważ opóźnienia podczas czatu wideo są po prostu okropne, ale podczas meczu piłkarskiego lub koncertu, jakie to ma znaczenie, jeśli jesteś minutę za strumieniem? Ponadto masz gwarancję, że otrzymasz wszystkie dane i lepiej byłoby zapisać je do późniejszego przeglądania, gdy pojawią się bez żadnych błędów.
To prowadzi mnie do mojego pytania. Czy są jakieś wady, o których nie wiem, jeśli chodzi o używanie protokołu TCP do transmisji na żywo? A może naprawdę powinno być, że jeśli masz odpowiednią przepustowość, powinieneś wybrać TCP, ponieważ jest „ładniejszy” dla sieci (kontrola przepływu)?