Ağ programlama sınavımdan yeni geldim ve bize sordukları sorulardan biri şuydu: "Video akışı yapacaksanız, TCP veya UDP kullanır mısınız? Hem depolanan video hem de canlı video akışları için bir açıklama yapın" . Bu soruya sadece depolanan video için TCP ve canlı video için UDP'nin kısa bir cevabını beklediler, ancak bunu eve giderken düşündüm ve canlı video akışı için UDP kullanmak ille de daha mı iyi? Demek istediğim, bunun için bant genişliğine sahipseniz ve bir futbol maçı veya bu konuda konser yayınladığınızı söylerseniz, gerçekten UDP kullanmanız gerekir mi?
Diyelim ki, bu konseri yayınlarken veya TCP'yi kullanarak her neyse paketleri kaybetmeye başlıyorsunuz (sizinle gönderen arasındaki bazı ağlarda kötü bir şey oldu) ve bir dakika boyunca hiçbir paket alamıyorsunuz. Video akışı duracak ve dakika geçtikten sonra paketler tekrar geçmeye başlayacak (IP sizin için yeni bir yol buldu). O zaman olan şey, TCP'nin kaybettiğiniz dakika içinde yeniden iletmesi ve size canlı akışı göndermeye devam etmesidir. Bir varsayım olarak, bant genişliği akıştaki bit hızından daha yüksektir ve ping çok yüksek değildir, bu nedenle kısa bir süre içinde, kaybettiğiniz bir dakika sizin için akış için bir arabellek görevi görecektir. , paket kaybı tekrar olursa fark etmezsiniz.
Şimdi, bunun iyi bir fikir olmayacağı bazı cihazları düşünebilirim, örneğin video konferanslar gibi, her zaman akışın sonunda olmanız gereken , çünkü bir görüntülü sohbet sırasındaki gecikme korkunç ama Bir futbol maçı veya bir konser sırasında akışın bir dakika gerisinde olmanın ne önemi var? Ayrıca, tüm verileri alacağınız garantilidir ve daha sonra herhangi bir hata olmadan geldiğinde daha sonra görüntülemek için kaydetmek daha iyi olacaktır.
Yani bu beni soruma getiriyor. Canlı akış için TCP kullanmanın bilmediğim sakıncaları var mı? Ya da gerçekten, eğer bant genişliğine sahipseniz, ağ için "daha hoş" olduğu için (akış kontrolü) TCP'ye gitmeniz gerekir mi?