TCP & UDP

Fatih Altuntaş
2 min readMay 8, 2021

--

Her iki protokol de bir network sistemindeki clientler arasında iletişim hizmetleri sağlar. Basit bir ifadeyle, verilerin tanımlanabileceği ve öngörülebilir bir şekilde yorumlanabileceği şekilde veri paketlerini göndermemize ve almamıza izin veren protokollerdir.

TCP

Veri TCP aracılığıyla gönderildiğinde, kaynak makinede çalışan uygulama önce hedef makine ile bağlantı kurar. Bağlantı kurulduktan sonra, veri paketler halinde, alıcı uygulamanın verileri uygun sırada bir araya getirebileceği şekilde iletilir. TCP ayrıca yerleşik hata kontrol mekanizmaları sağlar, böylece bir paket kaybolursa, hedef uygulama gönderen uygulamayı uyarabilir ve eksik paketler tüm mesaj alınana kadar tekrar gönderilir.

Kısaca TCP, tüm verilerin doğru sırada teslim edilmesini garanti eden bağlantı tabanlı bir protokoldür (connection-based protocol). Örneğin bir web sunucusundan bir oyun indirdiğinizde, verilerin doğru bir şekilde geldiğinden emin olmak istersiniz. Kullanıcılarınız oyununuzu oynamaya başlamadan önce oyunun düzgün ve tamamen indirildiğinden emin olmak istersiniz. Bu teslimat garantisi kulağa çok güven verici gelse de, yavaş bir süreç olarak da düşünülebilir; bu da bir dezavantaj olarak bize yansır.

UDP

UDP önceden kurulmuş bir bağlantı kullanmadan veri paketlerini (datagram olarak adlandırılır) iletir. Protokolün temel amacı, hedef uygulamalara veri göndermenin çok hızlı ve sorunsuz bir şekilde sağlanmasıdır.

UDP’yi bu kadar cazip ve etkili kılan durum, paketleri birkaç kez kaçırmaktan, yinelenen paketleri almaktan veya bunları sırasız hale getirmekten daha çok hıza önem vermesidir. Alıcıdan gelen yanıtı önemsemediğiniz zaman TCP yerine UDP’yi seçmek isteyebilirsiniz. TCP’de, mesajınızın alıcısından bir tür onay veya yanıt almayı beklerken, UDP’de onay gerekip gerekmediğine bakılmaksızın veri akışı gerçekleşir. Bazen, sunucunun verileri alıp almadığını umursamayabilirsiniz.

UDP’nin TCP’ye göre daha iyi bir seçim olduğu bir senaryoya örnek verelim, oyuncunun(client) kalp atışına ihtiyacımız olduğunu düşünelim, bu kalp atışı bilgisi serverın oyuncunun hala orada olup olmadığını bilmesini sağlar. Serverınıza, oyuncunun sık sık aktif olduğunu bildirmeniz gerekiyorsa ve ara sıra kalp atışlarından birinin kaybolması umrunda değilse, UDP kullanmak akıllıca olacaktır. Kısacası, kritik olmayan ve kaybetmeyi göze alabileceğiniz herhangi bir veri için UDP en iyi seçenek olabilir.

Sonuç

Bitirirken, p2p ve client-server modellerinin birlikte kullanılabilmesi gibi ve aynı şekilde oyun serverınızın yetkili(authoritative) ve yetkili olmayanların(non-authoritative) bir karması(hybrid) olabileceği gibi, TCP veya UDP içinde sadece birini seçmekten ziyade hybrid bir protokol kullanmak daha mantıklıdır.

En basit haliyle (gerçekten de en basit hali :) TCP ve UDP ne olduğunu öğrendik.

Kaynakça: Multiplayer Game Development with HTML5 By Rodrigo Silveira

--

--