TCP Fast Open Nedir ve Bağlantı Süresini Nasıl Kısaltır?

TFO (TCP Fast Open), yeni bir TCP bağlantısında ilk uygulama verisinin bağlantı kurulumu tamamlanmadan gönderilebilmesini amaçlayan bir TCP uzantısıdır. RFC 7413, mekanizmayı deneysel olarak tanımlar; özellikle aynı istemci ile sunucu arasındaki sonraki bağlantılarda bağlantı kurulumu ile ilk veri aktarımını aynı zamana taşıyarak beklemeyi azaltmayı hedefler.
Normal TCP bağlantısında istemci ve sunucu, SYN, SYN-ACK ve ACK adımlarından oluşan üçlü el sıkışma sırasında birbirlerinin başlangıç sıra numaralarını öğrenir. TFO bu el sıkışmayı ortadan kaldırmaz; uygun koşullarda ilk veriyi SYN ile taşıyarak uygulamanın veriyi daha erken işlemeye başlamasına izin verir.
Bu nedenle TCP Fast Open, genel bir “interneti hızlandırma” yöntemi değildir. Kazanç, istemci ile sunucu arasında daha önce bağlantı kurulmuş olmasına, geçerli Fast Open çerezine, ilk verinin küçük olmasına ve tekrar işlendiğinde sorun oluşturmamasına, iki ucun TFO desteğine ve uyumlu ağ yoluna bağlıdır.
TCP Fast Open Gecikmeyi Nerede Azaltır?
- TFO, üçlü TCP el sıkışmasını kaldırmak yerine ilk veri aktarımını el sıkışmayla aynı zamana taşır.
- İstemci genellikle önce sunucudan bir Fast Open çerezi alır ve bunu sonraki bağlantılarda kullanır.
- Geçerli çerez varsa istemci ilk veriyi SYN içinde gönderebilir; sunucu da veriyi el sıkışma bitmeden uygulamaya teslim edebilir.
- Uygun koşullarda gecikme en fazla bir RTT (ağ gidiş-dönüş süresi) kadar azalabilir; bu kazanç her bağlantıda garanti edilmez.
- SYN içindeki veri tekrar işlenebileceği için her işlem TFO erken verisine uygun değildir.
Normal TCP Bağlantısında Gecikme Nereden Gelir?
TCP bağlantısı kurulurken istemci SYN gönderir, sunucu SYN-ACK ile yanıt verir ve istemci ACK göndererek bağlantı kurulumunu tamamlar. Bu el sıkışma, iki tarafın başlangıç sıra numaralarını karşılıklı olarak öğrenmesini ve bağlantı durumunu oluşturmasını sağlar.
Klasik akışta uygulama ilk veriyi işlemek için el sıkışmanın tamamlanmasını beklerse bu süre, uzak sunuculardaki toplam yanıt süresinin belirgin bir bölümünü oluşturabilir. TFO ağın fiziksel gidiş-dönüş süresini düşürmez; bağlantı kurulumu ile ilk veri aktarımını kısmen üst üste bindirerek bu beklemeyi azaltır.
TCP Fast Open Nasıl Çalışır?
RFC 7413'teki temel TFO akışı iki aşamalıdır. İlk aşamada istemci sunucudan bir Fast Open çerezi edinir; sonraki uygun bağlantıda bu çerezi SYN içindeki veriyle birlikte sunucuya geri gönderir.
İlk Bağlantıda Fast Open Çerezinin Alınması
İstemci, boş çerez alanına sahip Fast Open seçeneği içeren bir SYN göndererek çerez ister. Sunucu TFO'yu destekliyorsa SYN-ACK içinde bir Fast Open çerezi döndürebilir ve istemci bu değeri sonraki bağlantılar için önbelleğe alır.
Fast Open çerezi bir web tarayıcısı oturum çerezi değildir. Sunucunun ürettiği ve istemcinin kaynak IP adresini doğrulamaya yardımcı olan bir taşıma katmanı değeridir. Kullanıcı hesabını veya uygulama oturumunu doğrulamaz; bağlantıyı şifreleyen ve tarafların kimliğini doğrulayabilen TLS protokolünün yerine geçmez.
Sonraki Bağlantıda Verinin SYN ile Gönderilmesi
İstemci geçerli çereze sahip olduğunda yeni SYN paketine hem Fast Open seçeneğini hem de ilk uygulama verisini ekleyebilir. Sunucu çerezi doğrularsa SYN içindeki veriyi kabul edip uygulamaya teslim edebilir ve SYN-ACK ile hem bağlantı isteğini hem de alınan veriyi onaylayabilir.
Sunucu çerezi geçersiz bulursa veya TFO verisini kabul etmezse SYN içindeki veriyi işlemeyip normal TCP kurulumuna dönebilir. İstemci, SYN-ACK yanıtını aldığında onaylanmayan veriyi el sıkışmayı tamamlayan ACK paketiyle yeniden gönderir. Bağlantının geri kalanı normal TCP davranışıyla devam eder.
Bir Gidiş-Dönüş Süresi Kazancı Ne Anlama Gelir?
RFC 7413, uygun TFO kullanımında gecikmenin standart bağlantı akışına göre en fazla bir tam gidiş-dönüş süresi kadar azaltılabileceğini belirtir. Buradaki kazanç, el sıkışmanın kaldırılması değil, ilk uygulama verisinin karşı tarafa daha erken ulaştırılmasıdır.
Kazancın büyüklüğü ağ gecikmesine ve ilk verinin boyutuna bağlıdır. İlk uygulama verisi SYN içine sığmayacak kadar büyükse sunucu kalan bölümü sonraki paketlerde alır; TFO'nun sağladığı başlangıç avantajı da azalır.
Yeniden Oynatma Riski TFO Kullanımını Nasıl Sınırlar?
TFO'nun önemli farkı, SYN içindeki verinin üçlü el sıkışma tamamlanmadan uygulamaya teslim edilebilmesidir. Eski veya tekrarlanan bir SYN, bazı koşullarda aynı erken verinin uygulamaya ikinci kez ulaşmasına neden olabilir. RFC 7413, tekrarlanan veriyi güvenli biçimde işleyemeyen uygulamalarda SYN içinde TFO verisi gönderilmemesini ister.
Bu nedenle TFO ile erken gönderilen veri, tekrar işlendiğinde istenmeyen bir sonuç doğurmayan işlemler için uygundur. Ödeme veya sipariş oluşturma gibi sistemin durumunu değiştiren bir işlem tekrarlandığında sorun çıkabilir. Uygulama katmanı bu tekrarları engellemiyorsa geliştirici bu tür işlemlerde TFO erken verisini kullanmamalıdır.
Fast Open çerezi bu riski tamamen ortadan kaldırmaz. Çerezin temel görevi, saldırganların sahte kaynak IP adresi taşıyan SYN paketleriyle sunucu kaynaklarını kötüye kullanmasını zorlaştırmaktır. Sunucu, çerezi doğrulayarak belirli bir kaynak IP adresi için ürettiği değerin geri gönderildiğini kontrol eder; bu işlem, uygulamadaki eylemin yalnız bir kez çalıştırılacağını garanti etmez.
Ara Ağ Cihazları ve Ağ Yolu Uyumluluğu
İstemci ile sunucu arasındaki güvenlik duvarları, NAT yapan cihazlar, yük dengeleyiciler veya başka ara ağ cihazları tanımadıkları TCP seçeneklerine ya da veri taşıyan SYN paketlerine farklı davranabilir. RFC 7413 bu nedenle TFO denemesinin başarısız olduğu yollarda normal üçlü el sıkışmaya geri dönülmesini ve başarısızlığın bir süre hatırlanmasını önerir.
Geri dönüş mekanizması bağlantının çalışmasını koruyabilir, ancak ilk TFO SYN'i yanıt almadan düşürülürse zaman aşımı ek gecikme yaratabilir. Bu yüzden TFO desteğinin yalnız uç sistemlerde açık olması yetmez. Ağ yöneticisinin gerçek ağ yolundaki başarısız bağlantı ve gecikme ölçümlerini de izlemesi gerekir.
TCP Fast Open Hangi Durumlarda Anlamlıdır?
TFO en çok aynı istemci ile sunucu arasında sık sık yeni TCP bağlantıları kurulan, ilk isteğin küçük olduğu ve bağlantı kurma gecikmesinin uygulamanın toplam yanıt süresinde hissedildiği senaryolarda anlam kazanır. İlk bağlantıda çerez edinme gerektiğinden, tek seferlik bir bağlantı TFO'nun sonraki bağlantılarda sunduğu temel avantajdan çoğu durumda yararlanamaz.
- Aynı istemci ile sunucu arasında sık sık kısa ömürlü TCP bağlantıları kuruluyorsa potansiyel kazanç artar.
- İlk veri küçükse SYN içinde taşınabilme olasılığı yükselir.
- Aynı erken verinin birden fazla kez işlenmesi uygulamada sorun oluşturmamalıdır.
- İstemci, sunucu ve aradaki ağ yolu TFO davranışıyla uyumlu olmalıdır.
- Uzun süre açık kalan veya zaten yeniden kullanılan bağlantılarda yeni bağlantı kurulumu seyrek olduğu için kazanç daha sınırlı kalır.
TCP Fast Open Neleri Değiştirmez?
TCP Fast Open, TCP'nin güvenilir sıralama, yeniden iletim, akış kontrolü ve tıkanıklık kontrolü işlevlerinin yerine geçmez. El sıkışmadan sonra bağlantı normal TCP bağlantısı olarak devam eder; TFO yalnız bağlantının başlangıcındaki veri zamanlamasını değiştirir.
TFO ayrıca bir şifreleme veya kimlik doğrulama protokolü değildir. Trafiğin gizliliği ve tarafların kimliğinin doğrulanması ayrı güvenlik katmanlarıyla sağlanır; TFO'nun etkinleştirilmesi bu gereksinimleri ortadan kaldırmaz.







