Geleneksel TCP üçlü el sıkışmasının (SYN, SYN-ACK, ACK) getirdiği 1-RTT gecikme cezasını TCP Fast Open (RFC 7413) ile ortadan kaldırın. TLS 1.3 0-RTT entegrasyonu, hücresel middlebox paket kaybı toleransı, dinleme kuyruğu bellek tahsisi ve üretime hazır Linux sysctl / Nginx yapılandırmalarını hesaplayın.
TFO ile birleştiğinde hem TCP hem de TLS el sıkışmasını tek bir SYN paketine indirir (0-RTT).
Geleneksel 3-Way Handshake ile TCP Fast Open (RFC 7413) arasındaki paket gidiş-dönüş (RTT) farkı.
Zirve 2.000 QPS ve 55 ms RTT şartlarında SYN flood taşmalarını önlemek için önerilen dinleme kuyruğu limiti.
Kuyruktaki bekleyen TFO soketleri için Linux çekirdeğinin (tcp_request_sock + veri tamponu) tahsis edeceği maksimum RAM.
Günde yaklaşık 27.000 bağlantı middlebox engeliyle 1000ms yedek (fallback) gecikmesine uğrayabilir.
Linux çekirdeği sysctl ve ters vekil (Nginx, HAProxy, Envoy, Caddy) şablonları.
# /etc/sysctl.d/99-tcp-fastopen.conf # TCP Fast Open (RFC 7413) Sunucu ve Istemci Yapilandirmasi # Fast Open Modu: 1 = Istemci, 2 = Sunucu, 3 = Her Ikisi (Onerilen: 3) net.ipv4.tcp_fastopen = 3 # TFO Guvenlik Cerez Anahtari (AES-128 / SipHash 16-byte key) # Not: Coklu sunucu kumesinde (Anycast/LB) ayni anahtar tum node'larda paylasilmalidir net.ipv4.tcp_fastopen_key = d248642098a19c37343678a9b25c3a17 # Soket dinleme kuyrugu (somaxconn) ve SYN backlog limitleri net.core.somaxconn = 1024 net.ipv4.tcp_max_syn_backlog = 2048 # Eger istemci tarafinda TFO kullaniliyorsa soket baglanti deneme limiti net.ipv4.tcp_syn_retries = 3
İnternet iletişiminin temel taşı olan TCP protokolü, bağlantı güvenilirliğini ve sıra numarası senkronizasyonunu sağlamak için 1981 yılından bu yana 3 aşamalı el sıkışma (Three-Way Handshake) modelini kullanır. Bir istemci sunucuya bağlanmak istediğinde önce bir SYN segmenti gönderir, sunucu SYN-ACK ile yanıt verir ve istemci ACK ilettiğinde bağlantı kurulmuş olur. Bu süreç, uygulama katmanındaki ilk veri baytı gönderilmeden önce istemci ile sunucu arasında tam bir gidiş-dönüş süresi (Round-Trip Time - RTT) harcanmasına neden olur.
Mobil ağlarda (4G/5G) veya kıtalararası rotalarda RTT süresi 70 ms ile 200 ms arasında değişebilmektedir. Üzerine TLS 1.3 eklendiğinde ilk bayt gecikmesi (TTFB) 2 ila 3 RTT'ye çıkmaktadır. IETF tarafından standartlaştırılan RFC 7413 (TCP Fast Open), istemcinin sunucudan daha önce aldığı şifreli bir çerez (TFO Cookie) sayesinde ilk SYN paketi içerisine uygulama verisi eklemesine olanak tanıyarak bağlantı kurulumundaki bu 1 tam RTT beklemesini ortadan kaldırır.
TFO, sunucuların rastgele IP spoofing kaynaklı SYN Flood veya amplifikasyon saldırılarına uğramasını engellemek için kriptografik çerezler kullanır:
net.ipv4.tcp_fastopen_key) replay saldırılarını sınırlandırmak için 24-48 saatte bir döndürülmelidir.TLS 1.3 standardı 0-RTT Early Data özelliğini sunsa da, bu özellik tek başına kullanıldığında TCP el sıkışması tamamlanmadan veri gönderilemez. Dolayısıyla TLS 0-RTT aktif olsa bile istemci 1 RTT TCP el sıkışması beklemek zorundadır.
TFO + TLS 1.3 0-RTT birleşimi, web altyapısındaki en yüksek verimlilik seviyesini sağlar: İstemci tek bir SYN paketi içine hem TFO çerezini, hem TLS ClientHello'yu, hem de şifrelenmiş HTTP isteğini yerleştirir. Sunucu isteği ilk pakette alır almaz yanıtı üretir; böylece istemci için TTFB tam olarak 0.5 RTT'ye (yalnızca tek yönlü fiziksel iletim süresi) iner.
TFO'nun yaygınlaşmasındaki en büyük pratik engel, internet omurgasında ve eski kurumsal ağlarda bulunan "middlebox" (güvenlik duvarı, IDS/IPS, NAT yönlendirici) cihazlarıdır. Bazı eski donanımlar, RFC 793'e katı şekilde programlandıkları için içerisinde veri (payload) bulunan SYN paketlerini kural dışı sayarak sessizce düşürürler (drop).
Bu durumun kullanıcı deneyimini felç etmemesi için Linux çekirdeği aktif bir koruma mekanizmasına sahiptir: İstemci SYN+Data gönderdiğinde yanıt gelmezse, net.ipv4.tcp_syn_retries süresi (varsayılan 1000 ms) sonunda otomatik olarak veri içermeyen standart bir SYN paketi göndererek bağlantıyı kurtarır. Ayrıca çekirdek, o hedef IP adresini geçici olarak "TFO desteklemiyor" olarak önbelleğe alır ve gereksiz zaman aşımlarını engeller.
1. Çekirdek Dinleme Sınırı: Nginx üzerinde fastopen=N değeri girildiğinde, çekirdek soketi için ayrılan TFO kuyruğunun net.core.somaxconn değerini aşmaması gerekir. Yüksek trafikli sistemlerde somaxconn en az 4096 veya 8192 olarak ayarlanmalıdır.
2. Küme ve Anycast Eşitlemesi: Eğer birden fazla web sunucusu bir Yük Dengeleyici (HAProxy, AWS ALB) veya BGP Anycast arkasında çalışıyorsa, tüm sunuculardaki net.ipv4.tcp_fastopen_key değeri birebir aynı olmalıdır. Aksi takdirde bir sunucunun ürettiği çerezi diğer sunucu tanıyamayarak soğuk el sıkışmaya düşer.
3. Tekrar Saldırısı (Replay Attack) Koruması: TFO ve TLS 0-RTT ile gelen istekler ağda yakalanıp tekrar gönderilebilir. Bu nedenle finansal işlemler, ödeme onayları ve veritabanına yazma yapan POST/PUT isteklerinde 0-RTT devre dışı bırakılmalı veya RFC 8470 Early-Data başlığı doğrulanmalıdır.