TCP
İletim Kontrol Protokolü
Kısaca
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 nedir?
TCP (İletim Kontrol Protokolü), internetin ana protokollerinden biridir. Bir tarayıcı ile bir web sunucusu gibi iki program arasında güvenilir bir bağlantı kurar ve bir tarafın gönderdiği baytların diğer tarafa eksiksiz, bozulmadan ve aynı sırayla ulaşmasını garanti eder. TCP, IP'nin üzerinde çalışır: IP tek tek paketleri makineler arasında taşır, TCP ise bunları güvenilir bir veri akışına dönüştürür.
Bir TCP bağlantısı üçlü el sıkışmayla (three-way handshake) başlar: istemci SYN gönderir, sunucu SYN-ACK ile yanıt verir ve istemci ACK ile karşılık verir. Ardından veri numaralandırılmış segmentlere bölünür ve alıcı aldıklarını onaylar. Bir segment zamanında onaylanmazsa gönderen onu yeniden iletir; akış denetimi ve tıkanıklık denetimi ise alıcı ya da ağ aşırı yüklendiğinde göndericiyi yavaşlatır.
İyi bir benzetme telefon görüşmesidir. Önce bağlanırsınız, sonra sırayla konuşursunuz ve karşınızdaki kişi kaçırdığı bir şeyi tekrar etmenizi isteyebilir. TCP, tam olarak gönderildiği gibi ulaşması gereken trafiğin çoğunu taşır: HTTP/1.1 ve HTTP/2 üzerinden web sayfaları, e-posta, dosya aktarımları, SSH oturumları ve veritabanı bağlantıları bunların arasındadır.
TCP en çok UDP ile karşılaştırılır. UDP, bağlantı, sıralama ya da yeniden iletim olmadan bağımsız paketler gönderir; bu da onu daha hızlı ve hafif ama güvenilmez kılar. Her baytın doğru ulaşması gerektiğinde TCP'yi, canlı görüntülü görüşmeler ya da çevrimiçi oyunlar gibi hızın kusursuzluktan daha önemli olduğu durumlarda ise UDP'yi seçin.
Bir bakışta
Önemli noktalar
- TCP bağlantı odaklıdır: veri göndermeden önce üçlü el sıkışmayla bir bağlantı açar.
- Sıra numaraları ve onaylar sayesinde teslimi, doğru sıralamayı ve hata denetimini garanti eder.
- Kaybolan veri otomatik olarak algılanır ve yeniden gönderilir.
- Akış denetimi ve tıkanıklık denetimi, göndericinin alıcıyı ya da ağı bunaltmasını engeller.
- Bunun bedeli, UDP'ye kıyasla ek yük ve gecikmedir.
Örnek
import socket
# Open a TCP connection to a web server on port 80
with socket.create_connection(("example.com", 80)) as sock:
# Send a minimal HTTP request over the TCP stream
sock.sendall(b"GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n")
# TCP delivers the reply bytes reliably and in order
reply = sock.recv(1024)
print(reply.decode(errors="replace").splitlines()[0]) # e.g. HTTP/1.1 200 OKSık sorulan sorular
TCP ile UDP arasındaki fark nedir?
TCP bir bağlantı kurar ve verinin eksiksiz ve sıralı ulaşmasını garanti eder; kaybolanı yeniden gönderir. UDP ise bağlantı ya da garanti olmadan paketleri olduğu gibi gönderir; bu daha hızlıdır ama bazı verilerin kaybolabileceği ya da sırasız ulaşabileceği anlamına gelir.
TCP üçlü el sıkışma nedir?
Bir TCP bağlantısının başlama biçimidir: istemci bir SYN mesajı gönderir, sunucu SYN-ACK ile yanıt verir ve istemci ACK ile onaylar. Bu üç adımdan sonra iki taraf başlangıç sıra numaralarında anlaşmış olur ve veri alışverişi yapabilir.
HTTP, TCP kullanır mı?
HTTP/1.1 ve HTTP/2, genellikle HTTPS için üzerine TLS eklenerek TCP üzerinde çalışır. HTTP/3 ise UDP üzerine kurulu, kendi güvenilirliğini ve şifrelemesini ekleyen daha yeni bir protokol olan QUIC üzerinde çalışır.
Sık karşılaştırılanlar
İlgili sayfalar
- UDPAğlar, s. 33UDP, 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.
- 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.
- 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.
- HTTPWeb Geliştirme, s. 20HTTP, tarayıcıların, uygulamaların ve sunucuların basit bir istek-yanıt döngüsüyle web sayfaları ve veri alışverişi yapmasını sağlayan protokoldü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.
- TCP HandshakeAğlar, s. 29TCP el sıkışması, istemci ile sunucunun veri göndermeden önce bağlantı açıp başlangıç sıra numaralarında anlaştığı SYN, SYN-ACK, ACK alışverişidir.
Kaynaklar
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin