UDP
Kullanıcı Datagram Protokolü
Kısaca
UDP, bağlantı kurmadan datagram adı verilen küçük ve bağımsız mesajlar gönderen, garantili teslimat yerine hızı seçen hafif bir internet protokolüdür.
UDP nedir?
UDP (Kullanıcı Datagram Protokolü), veriyi datagram adı verilen bağımsız mesajlar olarak gönderen basit bir taşıma protokolüdür. Önce bir bağlantı kurmaz; bir mesajın ulaştığını doğrulamaz, kaybolan mesajları yeniden göndermez ve mesajları sıraya sokmaz. TCP gibi o da IP'nin üzerinde çalışır ve her datagramı doğru programa ulaştırmak için port numaralarını kullanır.
UDP el sıkışmayı, onayları ve yeniden iletimleri atladığı için ek yükü çok azdır ve gecikmesi düşüktür. Her datagram; kaynak portu, hedef portu, uzunluğu ve bozulmuş veriyi saptamakta kullanılan bir sağlama toplamını içeren küçük bir başlık taşır. Bir uygulamanın güvenilirliğe ihtiyacı varsa kendi kurallarını bunun üzerine eklemelidir; QUIC gibi yeni protokoller tam olarak bunu yapar.
Günlük hayattan bir benzetme kartpostal göndermektir: her biri kendi başına yola çıkar, sırasız ulaşabilir ve ara sıra kaybolur, ama bir sonrakini göndermeden önce yanıt beklemezsiniz. UDP, taze verinin kusursuz veriden daha önemli olduğu yerlerde kullanılır: canlı sesli ve görüntülü görüşmeler, çevrimiçi çok oyunculu oyunlar, DNS sorguları ve QUIC üzerinde çalışan HTTP/3 bunlara örnektir.
Sık yapılan bir yanılgı, UDP'nin sadece daha kötü bir TCP olduğunu düşünmektir. Aslında farklı bir ödünleşimdir: bir görüntülü görüşmede geç gelen bir paket işe yaramaz, bu yüzden TCP'nin yaptığı gibi yeniden iletimi beklemek, paketi atlamaktan daha fazla takılmaya yol açar. UDP bağlantısız olduğu için, TCP'nin yapamadığı bir şeyi de yapabilir: yayın (broadcast) ve çoklu yayın (multicast) ile tek bir mesajı aynı anda birçok alıcıya göndermek.
Bir bakışta
Önemli noktalar
- UDP bağlantısızdır: veri gönderilmeden önce el sıkışma yoktur.
- Teslimatı ya da sırayı garanti etmez ve kopyaları engellemez.
- Düşük ek yükü onu hızlı ve gerçek zamanlı uygulamalar için uygun kılar.
- DNS, sesli ve görüntülü görüşmeler, çevrimiçi oyunlar ve QUIC (HTTP/3 tarafından kullanılır) UDP'ye dayanır.
- UDP üzerinde güvenilirlik isteyen uygulamalar bunu kendileri uygulamak zorundadır.
Örnek
import socket
# Create a UDP socket (SOCK_DGRAM means datagrams)
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# Send a message with no connection or handshake
sock.sendto(b"player:42 x=10 y=20", ("127.0.0.1", 9999))
# Wait up to 1 second for a reply; it may never come
sock.settimeout(1.0)
try:
data, sender = sock.recvfrom(1024)
print("Reply from", sender, data)
except TimeoutError:
print("No reply: UDP does not guarantee delivery")Sık sorulan sorular
UDP güvenilmezse neden kullanılır?
Çünkü daha hızlı ve daha basittir. Görüntülü görüşme ya da oyun gibi gerçek zamanlı kullanımlarda yeni veriyi hızlıca almak eski veriyi kurtarmaktan daha önemlidir; uygulamalar da yalnızca gerçekten ihtiyaç duydukları güvenilirliği ekleyebilir.
DNS, UDP mi yoksa TCP mi kullanır?
DNS sorgularının çoğu küçük olduğu ve hızlı yanıt gerektirdiği için 53 numaralı portta UDP kullanır. Büyük yanıtlarda ve DNS sunucuları arasındaki aktarımlarda TCP'ye geçilir; DNS over HTTPS gibi şifreli türler ise TCP ya da QUIC kullanır.
UDP, TCP'den daha hızlı mıdır?
Genellikle evet, çünkü el sıkışmayı, onayları ve yeniden iletimleri atlar. Gerçek fark ağa bağlıdır; güvenilmez bir ağda uygulamanın yine de kendi kurtarma mantığını eklemesi gerekebilir.
Sık karşılaştırılanlar
İlgili sayfalar
- TCPAğlar, s. 28TCP, bir bağlantı kurup kaybolan verileri yeniden göndererek iki program arasında veriyi güvenilir ve sıralı biçimde ileten temel bir internet protokolüdür.
- PaketAğlar, s. 20Paket, bir ağ üzerinden gönderilen küçük ve biçimlendirilmiş bir veri birimidir; adresleme bilgisi taşıyan bir başlık ile asıl veriyi taşıyan bir yükten oluşur.
- PortAğlar, s. 22Port, bir cihazdaki belirli bir programı ya da hizmeti tanımlayan, 0 ile 65535 arasında bir sayıdır; IP adresine gelen trafik böylece doğru uygulamaya ulaşır.
- GecikmeAğlar, s. 9Gecikme, bir istek ile yanıtın başlaması arasında geçen süredir; genellikle milisaniyeyle ölçülür ve bir uygulamanın ne kadar hızlı hissettirdiğini belirler.
- DNSDevOps ve Bulut, s. 14DNS, internetin adlandırma sistemidir; example.com gibi insanın okuyabileceği alan adlarını bilgisayarların kullandığı sayısal IP adreslerine çevirir.
- IP AdresiAğlar, s. 12IP adresi, ağdaki her cihaza verilen ve verinin o cihaza yönlendirilmesini sağlayan sayısal bir etikettir; bir evin posta adresine benzer.
Kaynaklar
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin