Web Performansı & Ağ Protokolleri 5 dk okuma 13 okunma

HTTP/2 ve HTTP/3 ile Performans İyileştirmeleri

HTTP/2, TCP üzerinde tek bağlantıda çoklama (multiplexing) ve HPACK başlık sıkıştırması ile gecikmeyi azaltır; ancak TCP kaynaklı baş-engelleme (HOL) sorununu çözmez. HTTP/3 ise QUIC üzerinde çalışarak HOL'u ortadan kaldırır, 0-RTT ile bağlantı kurulumunu hızlandırır ve ağ değişimlerinde bağlantıyı korur. Gerçek dünya ölçümleri, HTTP/3'ün özellikle paket kaybı ve gecikme koşullarında üstün olduğunu, ancak yoğun eşzamanlı yüklerde CPU maliyeti nedeniyle geri kalabildiğini göstermektedir.

HTTP/2 ve HTTP/3 ile Performans İyileştirmeleri

HTTP/2 ve HTTP/3 ile Performans İyileştirmeleri

Web performansı denince akla ilk gelenler genellikle kod optimizasyonu, CDN ve önbellekleme olur. Ancak altta yatan taşıma katmanı protokolü, tüm bu iyileştirmelerin ne kadar etkili olacağını belirler. HTTP/1.1'den HTTP/2'ye ve oradan HTTP/3'e geçiş, sadece bir sürüm atlaması değil; gecikme, güvenilirlik ve mobilite açısından temel bir paradigma değişimidir.


1. HTTP/2: TCP Üzerinde Çoklama ve Sıkıştırma

HTTP/2, HTTP/1.1'in en büyük sorununu çözmek için tasarlandı: her istek için ayrı bağlantı kurma maliyeti. Tek bir TCP bağlantısı üzerinden birden fazla isteği eşzamanlı olarak iletebilir (multiplexing) . Ayrıca HPACK başlık sıkıştırması ile her istekte tekrarlanan başlıkları (User-Agent, Cookie vb.) sıkıştırarak bant genişliği tasarrufu sağlar .

Sağladığı Kazançlar:

  • Bağlantı Kurulum Maliyetinin Azalması: Tek bağlantı, birçok isteği taşır; TLS el sıkışması bir kez yapılır .

  • Başlık Yükünün Azalması: HPACK, tekrarlayan başlıkları kompakt hale getirir .

HTTP/2'nin Çözemediği Sorun: TCP Baş-Engelleme (HOL)

HTTP/2'nin tüm çoklama yeteneğine rağmen, altında hala TCP vardır. TCP, paketleri sıralı teslim etmek zorundadır. Tek bir paket kaybolduğunda, o paketin arkasındaki tüm veriler (diğer isteklere ait olsa bile) bekletilir. Buna TCP head-of-line (HOL) blocking denir. Yani, HTTP/2 çoklama kazancı, paket kaybı olan ağlarda önemli ölçüde buharlaşır .


2. HTTP/3: QUIC Üzerinde HOL'u Ortadan Kaldırma

HTTP/3, taşıma katmanında TCP yerine QUIC kullanır. QUIC, UDP üzerine inşa edilmiş, güvenilirlik ve sıkıştırmayı kendi içinde barındıran yeni bir protokoldür.

HTTP/3'ün Getirdiği Temel İyileştirmeler:

Özellik HTTP/2 (TCP) HTTP/3 (QUIC)
HOL Engelleme Var (paket kaybında tüm istekler etkilenir) Yok (kayıp, yalnızca ilgili akışı etkiler)
Bağlantı Kurulumu TCP + TLS = 2-3 RTT QUIC + TLS 1.3 = 1 RTT (veya 0-RTT)
Ağ Değişimi Bağlantı kopar, yeniden kurulur Bağlantı kimliği korunur, kesintisiz devam eder
İlk Bayt Süresi (TTFB) Daha yüksek 0-RTT ile önemli ölçüde düşük

QUIC'in Sihri: Akış Bazlı Kurtarma
QUIC'te her istek bağımsız bir akış (stream) olarak taşınır. Bir paket kaybolduğunda, yalnızca o pakete ait akış etkilenir; diğer akışlar veri almaya devam eder. Bu, özellikle kayıplı ağlarda HTTP/3'ü HTTP/2'den belirgin şekilde üstün kılar .


3. Gerçek Dünya Ölçümleri: HTTP/3 Her Zaman Kazanır mı?

Akademik ölçümler, HTTP/3'ün avantajlarının ağ koşullarına ve iş yüküne sıkı sıkıya bağlı olduğunu gösteriyor.

HTTP/3'ün Öne Çıktığı Durumlar:

  • Paket Kaybı ve Gecikme: 2025 tarihli bir çalışma, HTTP/3'ün yüksek paket kaybı koşullarında HTTP/2'yi sürekli olarak geçtiğini, gecikme odaklı senaryolarda ise daha kararlı bir verim sunduğunu göstermiştir .

  • 0-RTT ile TTFB: Ticari bir 5G ağında yapılan ölçümde, QUIC'in 0-RTT özelliği, TCP'nin 3 yönlü el sıkışmasına kıyasla medyan TTFB'yi %70 azaltmıştır .

HTTP/3'ün Geri Kaldığı Durumlar:

  • Yoğun Eşzamanlı İş Yükleri: 360° video akışı üzerine 2026 tarihli bir IEEE çalışması, HTTP/3'ün verim, TTFB ve enerji verimliliğinde HTTP/2'nin gerisinde kaldığını bulmuştur. Nedeni: Çok sayıda eşzamanlı tile isteği, QUIC'te TLS işleme ve bağlantı kurulumu sırasında CPU darboğazı yaratmaktadır .

  • Karmaşık Ağ Yolları: 2026'da Çin'de yapılan bir vaka çalışması, farklı ISS'ler arası (cross-ISP) yollarda HTTP/3'ün 20MB yük aktarımında %24 başarı oranına düştüğünü (HTTP/2'de %70), bunun el sıkışma hatası değil, aktarım ortasında takılma olduğunu göstermiştir .

  • SOHO Ağlarında: 2026 tarihli kapsamlı bir ölçüm çalışması, ev/ofis ağlarında HTTP/3 performansının büyük ölçüde kuyruk yönetimi, bağlantı çekişmesi ve yukarı bağlantı doygunluğu tarafından şekillendiğini, protokol tasarımının tek başına belirleyici olmadığını vurgulamıştır .


4. .NET'te HTTP/3 Kullanımı

.NET, Kestrel üzerinde HTTP/3 desteği sunar. Ancak dikkat edilmesi gereken noktalar vardır.

Kestrel'de HTTP/3 Etkinleştirme:

csharp

builder.WebHost.ConfigureKestrel(kestrel =>
{
    kestrel.ListenAnyIP(443, portOptions =>
    {
        portOptions.Protocols = HttpProtocols.Http1AndHttp2AndHttp3;
        portOptions.UseHttps(); // HTTP/3 için HTTPS zorunlu
    });
});

HTTP/3'ü HTTP/1.1 ve HTTP/2 ile birlikte yapılandırmak gerekir; çünkü tüm router, firewall ve proxyler HTTP/3'ü desteklemez .

Alt-svc ile Keşif: HTTP/3, alt-svc başlığı üzerinden keşfedilir. İlk istek HTTP/1.1 veya HTTP/2 ile gider, ardından bağlantı HTTP/3'e yükseltilir. Kestrel, HTTP/3 etkinleştirildiğinde bu başlığı otomatik ekler .

HttpClient ile HTTP/3:

csharp

var client = new HttpClient();
client.DefaultRequestVersion = HttpVersion.Version30;
client.DefaultVersionPolicy = HttpVersionPolicy.RequestVersionOrHigher;

YARP (Reverse Proxy) Desteği: YARP 1.1, hem gelen hem giden bağlantılarda HTTP/3'ü destekler. Gelen bağlantılar için Kestrel, giden bağlantılar için HttpClient yapılandırılır .

Kritik Uyarı: localhost üzerinde HTTP/3 testi yaparken tarayıcılar, Kestrel'in geliştirme sertifikası gibi öz imzalı sertifikaları kabul etmez. Test için HttpClient kullanılmalıdır .


5. Ne Zaman HTTP/2, Ne Zaman HTTP/3?

Senaryo Öneri
Kayıplı, gecikmeli mobil ağlar HTTP/3 (HOL yok, 0-RTT kazancı)
Sık ağ değiştiren mobil cihazlar HTTP/3 (bağlantı taşıma)
Yoğun eşzamanlı istekler (360° video, tile tabanlı) HTTP/2 (QUIC CPU maliyeti yüksek)
Farklı ISS'ler arası, istikrarsız yollar Dikkatli test; HTTP/3 her zaman kazanmaz
Genel web uygulamaları, API'ler HTTP/2 yeterli; HTTP/3 kademeli etkinleştirilebilir

6. En İyi Pratikler

Pratik Açıklama
HTTP/2'yi varsayılan yapın Geniş destek, düşük CPU maliyeti, olgun araçlar
HTTP/3'ü kademeli etkinleştirin Alt-svc ile keşif; sorun çıkarsa HTTP/2'ye dönüş kolay
0-RTT'yi idempotent isteklerle sınırlayın 0-RTT yeniden oynatma (replay) riski taşır; yalnızca GET gibi güvenli metotlarda kullanın
Kendi iş yükünüzü ölçün Genel benchmark'lar yanıltıcı olabilir; gerçek trafik deseninizle test edin
CPU ve bellek maliyetini izleyin Özellikle yoğun eşzamanlı iş yüklerinde QUIC ek yük getirebilir

Sonuç

HTTP/2, TCP üzerinde çoklama ve başlık sıkıştırması ile önemli kazançlar sağlar, ancak TCP'nin doğasında olan baş-engelleme sorununu çözemez. HTTP/3 ve QUIC, bu sorunu ortadan kaldırır ve özellikle kayıplı, gecikmeli ve mobil ağlarda belirgin avantajlar sunar. Ancak HTTP/3 her derde deva değildir: yoğun eşzamanlı iş yüklerinde CPU maliyeti nedeniyle HTTP/2'nin gerisinde kalabilir ve karmaşık ağ yollarında performans düşüşleri yaşanabilir. Doğru strateji, HTTP/2'yi sağlam bir temel olarak korumak, HTTP/3'ü kademeli olarak etkinleştirmek ve kendi iş yükünüzü ölçerek karar vermektir. Unutmayın: Protokol seçimi, ağ koşullarınız ve iş yükü deseninizle şekillenir; "en yeni" her zaman "en hızlı" değildir.

Tüm yazılar Soru ya da yorumun mu var? Yaz