Transmission Control Protocol (TCP), bilgisayar ağlarında iki uç cihaz arasında güvenilir ve sıralı veri iletimi sağlamak amacıyla kullanılan, bağlantı odaklı bir aktarım katmanı protokolüdür. TCP, ilk kez ABD Savunma Bakanlığı'na bağlı İleri Araştırma Projeleri Ajansı (DARPA) tarafından geliştirilmiş olup, günümüzde İnternet üzerindeki veri iletiminin temel taşlarından birini oluşturur. Güvenilir veri aktarımı, hata kontrolü, akış kontrolü ve tıkanıklık kontrolü gibi işlevlerle desteklenmektedir. TCP, veri akışını paketler (segmentler) halinde iletir ve her paketi numaralandırarak alıcıya doğru sırayla ulaştırılmasını sağlar. Özellikle telsiz ortamlar gibi hata oranı yüksek iletişim kanallarında TCP'nin performansını artırmak için çeşitli teknikler geliştirilmiştir.
TCP'nin Temel Özellikleri
TCP, bağlantı kurulumu, veri iletimi ve bağlantı sonlandırma aşamalarını içerir. İki cihaz arasında bir oturum açılmadan veri transferi başlamaz. TCP'nin en önemli görevleri şunlardır:
- Üst katmanlardan gelen veriyi uygun boyutlu segmentlere ayırmak,
- Her segmente sıra numarası (sequence number) vermek,
- Alıcı tarafından alınan verilerin sıralı şekilde birleştirilmesini sağlamak,
- Kayıp veya bozuk gelen segmentleri tekrar göndermek,
- Akış kontrolü (flow control) mekanizmalarıyla veri taşmasını önlemek,
- Tıkanıklık kontrolü (congestion control) ile ağ performansını optimize etmek.
TCP, temelinde bayt akışı üzerinden çalışır; her veri segmenti bir bayt numarası ile tanımlanır ve alıcı taraf, alınan segmentlere karşılık bir onay (ACK) mesajı gönderir.
TCP Başlık Yapısı
TCP segmentleri, veri yükünün yanında kontrol bilgilerini içeren bir başlık taşır. Bu başlıkta kaynak portu, hedef portu, sıra numarası, onay numarası, bayraklar (SYN, ACK, FIN gibi), pencere boyutu ve hata kontrolü için kullanılan bir sağlama toplamı (checksum) yer alır.
TCP bağlantıları üç aşamalı bir el sıkışma (three-way handshake) mekanizması ile kurulur ve güvenli bir şekilde sonlandırılır.
Bağlantı Kurulumu
Bağlantı başlatan cihaz (istemci) bir SYN segmenti gönderir. Hedef cihaz (sunucu) SYN-ACK segmenti ile yanıt verir. İstemci, bir ACK segmenti göndererek bağlantıyı kurar. Bu süreç aşağıdaki adımları içerir:
- SYN gönderimi: İstemci bağlantı isteğini iletir.
- SYN-ACK cevabı: Sunucu isteği alıp onaylar.
- ACK onayı: İstemci onay alındığını belirtir.
TCP protokolünün, bağlantı kurulumunda kullandığı "Three-Way Handshake" Şeması. (YZ ile çizilmiştir)
Bağlantı Sonlandırılması
Bağlantı bitiminde, her iki taraf da FIN bayrağı taşıyan segmentler göndererek bağlantının kontrollü bir şekilde kapatılmasını sağlar.
TCP'de Akış ve Tıkanıklık Kontrolü
TCP, hem akış hem de tıkanıklık kontrol mekanizmaları ile ağ kaynaklarının etkin kullanılmasını hedefler.
Akış Kontrolü (Flow Control)
Alıcı taraf, göndericiye kendi tampon kapasitesine uygun bir pencere boyutu bildirir (advertised window). Gönderici, bu pencere boyutuna göre veri gönderimini sınırlar.
Tıkanıklık Kontrolü (Congestion Control)
TCP, veri kaybını ağ tıkanıklığının göstergesi olarak değerlendirir. Bir segment kaybolduğunda gönderici, veri gönderim hızını azaltır. TCP'nin tıkanıklık kontrol teknikleri arasında şu mekanizmalar bulunur:
- Slow Start: Başlangıçta düşük hızla veri gönderimi yapılır, ardından hız kademeli olarak artırılır.
- Congestion Avoidance: Ağda tıkanıklık sinyalleri gözlendiğinde veri hızı yavaşça artırılır.
- Fast Retransmit: Üç adet ardışık tekrar eden ACK alınırsa veri kaybı varsayılır ve kayıp segment hızlıca yeniden gönderilir.
- Fast Recovery: Fast retransmit sonrası, tam yavaş başlatma yapılmadan pencere boyutu ayarlanarak veri gönderimine devam edilir.
Telsiz ağlar gibi hata olasılığı yüksek ortamlarda klasik tıkanıklık kontrol yöntemleri, gereksiz veri hız kısıtlamalarına yol açabilir. Bu durumu aşmak için TCP üzerinde kayıp nedenini ayırt edebilen yeni teknikler geliştirilmiştir.
TCP'de Paket Yeniden Sıralama Problemi
Paketlerin gönderildikleri sıradan farklı bir sırada alıcıya ulaşması, TCP için önemli bir sorundur. Paket yeniden sıralanması (packet reordering) aşağıdaki problemlere neden olur:
- Yanlış segment kaybı algısı ve gereksiz yeniden iletimler,
- Gereksiz pencere daralmaları ve ağ verimliliğinde azalma,
- ACK akışının bozulması ve bant genişliği kullanımının düşmesi,
- Yanıltıcı gecikme tahminleri (RTT ve RTO hesaplamalarının sapması).
Bu problemleri hafifletmek için yeni algoritmalar geliştirilmiş, örneğin Eifel Algoritması gibi yöntemlerle sahte yeniden iletimler tespit edilmeye çalışılmıştır.
TCP'nin Telsiz Ortamlardaki Uyarlanması
Telsiz ortamlarda segment kayıplarının nedeni çoğunlukla tıkanıklıktan değil, veri bozulmasından kaynaklanır.
Bu nedenle TCP, telsiz ortamlarda daha verimli çalışabilmesi için geliştirilmiştir:
- Kayıp nedeninin doğru ayrıştırılması,
- Gereksiz hız kısıtlamalarının önlenmesi,
- Yeniden iletimlerin optimize edilmesi.
Örneğin, TCP Peach ve TCP Westwood gibi protokoller telsiz ortamlardaki performansı artırmak için geliştirilmiş varyantlardır.