Ana içeriğe geç

Yan yana

TCPvsUDP

TCP ile UDP arasındaki fark nedir?

Güncellendi 2 dk okuma7 fark

Kısaca

TCP bir bağlantı açar, verinin eksiksiz ve sırayla ulaşmasını garanti eder; UDP ise garantisiz, bağımsız paketler gönderir ve düşük gecikme sunar.

TCP

İletim Kontrol Protokolü

TCP, 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.

TCP sayfasını oku

UDP

Kullanıcı Datagram Protokolü

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 sayfasını oku

TCP ve UDP karşılaştırması

ÖzellikTCPUDP
BağlantıBağlantı odaklı; üç yönlü el sıkışmayla başlarBağlantısız; veriyi hemen gönderir
GüvenilirlikOnaylar ve yeniden göndermelerle garantili teslimTeslim garantisi yok; kaybolan paketler kaybolmuş kalır
SıralamaVeri gönderildiği sırayla ulaşırDatagramlar sırasız ulaşabilir
Veri birimiSürekli bir bayt akışıDatagram denen bağımsız mesajlar
Akış ve tıkanıklık denetimiYerleşikYok; uygulamanın ele alması gerekir
Başlık boyutu20 ila 60 bayt8 bayt
Tipik kullanımlarHTTP/1.1 ve HTTP/2 üzerinden web sayfaları, e-posta, dosya aktarımı, SSHDNS, görüntülü görüşmeler, çevrimiçi oyunlar, canlı yayın, QUIC ve HTTP/3

Fark, açıklamalı

TCP (Transmission Control Protocol, İletim Denetim Protokolü) ve UDP (User Datagram Protocol, Kullanıcı Veri Bloğu Protokolü) internetteki iki ana taşıma protokolüdür ve ikisi de IP'nin üzerinde çalışır. TCP bir el sıkışmayla bağlantı kurar ve güvenilir, sıralı bir bayt akışı teslim eder. UDP ise datagram denen, kendi içinde bütün mesajları bağlantı kurmadan ve ulaşacaklarına dair hiçbir söz vermeden gönderir.

Fark, uygulamaların farklı şeylere ihtiyaç duymasından doğar. TCP her baytı numaralandırır, onayları bekler, kaybolan veriyi yeniden gönderir ve ağ tıkandığında yavaşlar; bu, web sayfaları, dosyalar ve e-posta için idealdir. Bu özen gecikme ekler; bu yüzden sesli görüşme, video ve oyunlar gibi gerçek zamanlı trafik çoğunlukla UDP'yi tercih eder, çünkü geç kalan paket zaten işe yaramaz ve onu atlamak daha iyidir.

Birçok sistem ikisini de kullanır. DNS sorguları genellikle UDP kullanır ama büyük yanıtlar için TCP'ye döner; HTTP/3 ise UDP üzerine kurulu, kendi güvenilirliğini, şifrelemesini ve tıkanıklık denetimini ekleyen ve TCP'nin bazı gecikmelerinden kaçınan QUIC üzerinde çalışır. Başka bir deyişle UDP, uygulamaların kendi kurallarını üzerine inşa ettiği bir temel olabilir.

Sık yapılan bir yanlış, UDP'nin her zaman daha hızlı ya da TCP'nin yavaş olduğu düşüncesidir. UDP'nin yükü daha azdır ve el sıkışması yoktur; ama sağlıklı bir ağda TCP çok hızlıdır. Asıl ödünleşim, her baytın sırayla teslim edilmesine ihtiyacınız olup olmadığı, yoksa paketler kaybolduğunda yola devam etmeyi tercih edip etmediğinizdir.

Hangisini kullanmalısınız?

TCP şu durumlarda doğru seçim:

  • Her baytın eksiksiz ve sırayla ulaşması gerekiyor.
  • Dosya, web sayfası, API çağrısı ya da veritabanı trafiği aktarıyorsunuz.
  • Güvenilirlik mantığını kendiniz kurmak istemiyorsunuz.

UDP şu durumlarda doğru seçim:

  • Ses, video ya da oyunlarda olduğu gibi düşük gecikme kusursuz tesliminden daha önemli.
  • Mesajlar DNS sorguları ya da sensör okumaları gibi küçük ve bağımsız.
  • Birçok alıcıya yayın (broadcast) ya da çoklu yayın (multicast) yapmak istiyorsunuz.
  • QUIC'in yaptığı gibi, üzerine kendi güvenilirlik katmanınızı kuruyorsunuz.

Her protokolle bir mesaj göndermek

TCPpython
import socket

# TCP: connect first, then send over a reliable stream
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(("127.0.0.1", 9000))
sock.sendall(b"hello")  # delivered in order, or an error is raised
reply = sock.recv(1024)
sock.close()
UDPpython
import socket

# UDP: no connection; each sendto() is one datagram
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.settimeout(1.0)
sock.sendto(b"hello", ("127.0.0.1", 9000))  # may be lost silently
reply, addr = sock.recvfrom(1024)
sock.close()

Sık sorulan sorular

UDP, TCP'den daha mı hızlı?

UDP'nin yükü daha azdır ve bağlantı kurulumu yoktur; bu yüzden genellikle gecikmesi daha düşüktür. Bunu güvenilirliği atlayarak başarır; yani uygulamanız kaybolan ya da sırası değişen paketlere tahammül edebiliyorsa yararlı biçimde daha hızlıdır.

HTTP, TCP mi UDP mi kullanır?

HTTP/1.1 ve HTTP/2, TCP üzerinde çalışır. HTTP/3 ise UDP üzerine kurulu, kendi güvenilirliğini ve şifrelemesini ekleyen QUIC üzerinde çalışır.

Çevrimiçi oyunlar neden UDP kullanır?

Oyunlar sürekli konum güncellemeleri gönderir ve geç kalan bir güncelleme zaten eskimiştir. UDP ile kaybolan bir paket, TCP yeniden gönderirken her şeyi bekletmek yerine bir sonraki paketle basitçe yer değiştirir.

Daha fazla

Ayarlar