TCP'de flow control ile congestion control arasındaki fark nedir? Slow start ve congestion avoidance nasıl çalışır?
Cevap
Flow control alıcının taşmasını engeller (alıcı ne kadar veri kabul edebilir?). Congestion control ağın taşmasını engeller (ağ ne kadar veri taşıyabilir?). Göndericinin yolda tutabileceği onaysız veri miktarı ikisinin minimumudur: min(rwnd, cwnd).
Flow control: receive window (rwnd)
- Alıcı her ACK'te boş buffer alanını Window alanında bildirir.
- Window 0 olursa gönderici durur ve window probe göndererek bekler.
- Header'daki 16 bit alan en fazla 64 KB ifade ettiği için yüksek hızlı/uzak hatlarda Window Scaling opsiyonu kullanılır.
Congestion control: congestion window (cwnd)
- Slow start: cwnd küçük başlar (Linux'ta tipik olarak 10 MSS) ve her RTT'de yaklaşık iki katına çıkar (üstel artış),
ssthreshdeğerine ulaşana kadar. - Congestion avoidance: ssthresh üzerinde cwnd her RTT'de yaklaşık 1 MSS artar (doğrusal, AIMD).
- Kayıp, 3 duplicate ACK ile tespit edilirse: Fast retransmit + fast recovery; cwnd yarıya iner, slow start'a dönülmez.
- Kayıp, retransmission timeout (RTO) ile tespit edilirse: Ciddi tıkanıklık sayılır; cwnd 1 MSS'e düşer, slow start yeniden başlar.
Modern algoritmalar
- CUBIC: Linux ve Windows'ta varsayılan; yüksek bant genişlikli hatlarda daha agresif büyür.
- BBR (Google): Kayba değil, ölçülen bant genişliği ve RTT'ye göre hız belirler; kayıplı hatlarda daha iyi performans verir.
- ECN: Router paketi düşürmek yerine işaretler; gönderici kayıp yaşamadan yavaşlar.
Pratik önemi
Bandwidth-Delay Product (BDP) = bant genişliği x RTT. 1 Gbps ve 50 ms RTT için BDP yaklaşık 6.25 MB'dır; pencere bundan küçükse link dolmaz. "Hattımız 1 Gbps ama uzak sitede dosya transferi 100 Mbps'de kalıyor" şikâyetinin klasik sebebi budur.
sysctl net.ipv4.tcp_congestion_control
ss -ti # bağlantı başına cwnd, rtt, retrans bilgisiİlgili Ağ Temelleri soruları
- OSI modelinin katmanları nelerdir?
- TCP ile UDP arasındaki fark nedir?
- TCP üçlü el sıkışma (three-way handshake) nasıl çalışır?
- 192.168.10.0/26 ağında alt ağ maskesi nedir ve kaç kullanılabilir host vardır?
- Tarayıcıya bir adres yazdığınızda DNS çözümlemesi nasıl gerçekleşir?
- Bilinmesi gereken yaygın port numaraları nelerdir? HTTP ve HTTPS arasındaki fark nedir?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.