Ana içeriğe geç

Yan yana

HTTP/2vsHTTP/3

HTTP/2 ile HTTP/3 arasındaki fark nedir?

Güncellendi 2 dk okuma7 fark

Kısaca

İkisi de birçok isteği tek bağlantıdan gönderir; HTTP/2, kaybolan tek paketin her akışı durdurduğu TCP'de, HTTP/3 ise UDP üzerindeki QUIC'te çalışır.

HTTP/2

HTTP/2, birçok istek ve yanıtı kompakt bir ikili biçimde tek bağlantı üzerinden aynı anda gönderen ve sayfaları hızlandıran, HTTP'nin ikinci büyük sürümüdür.

HTTP/2 sayfasını oku

HTTP/3

HTTP/3, sayfaları özellikle güvenilmez ağlarda daha hızlı yüklemek için TCP yerine UDP üzerindeki QUIC protokolüyle çalışan, HTTP'nin üçüncü büyük sürümüdür.

HTTP/3 sayfasını oku

HTTP/2 ve HTTP/3 karşılaştırması

ÖzellikHTTP/2HTTP/3
TaşımaTCPUDP üzerine kurulu QUIC
ŞifrelemeTCP'nin üzerinde TLS; tarayıcılar zorunlu tutarQUIC'e yerleşik TLS 1.3; her zaman açık
Paket kaybıKaybolan tek bir paket bağlantıdaki her akışı durdururKaybolan bir paket yalnızca kendi akışını geciktirir
Bağlantı kurulumuAyrı TCP ve TLS el sıkışmaları: 2 ila 3 gidiş-dönüşTek birleşik el sıkışma: 1 gidiş-dönüş, oturum sürdürülürken 0
Başlık sıkıştırmaHPACKBağımsız akışlara uyarlanmış QPACK
Ağ değiştirmeBağlantı kopar ve yeniden açılması gerekirBağlantı, Wi-Fi'dan mobil veriye geçişte ayakta kalır
DestekTarayıcılarda, sunucularda, proxy'lerde ve CDN'lerde evrenselBütün büyük tarayıcılar ve CDN'ler; bazı ağlar UDP'yi engeller

Fark, açıklamalı

HTTP/2 ve HTTP/3 aynı protokolün iki sürümüdür: metotlar, durum kodları, başlıklar ve URL'ler aynıdır; bir fetch çağrısı gibi uygulama kodu da ikisinde aynı çalışır. 2015'te standartlaşan HTTP/2, bir bağlantının istekleri tek tek değil, ikili çerçeveler hâlinde aynı anda taşımasını sağladı. 2022'de RFC 9114 olarak yayımlanan HTTP/3 bu modeli korur, ama alttaki taşıma katmanını değiştirir: üzerinde TLS olan TCP yerine, TLS 1.3'ün yerleşik olduğu ve UDP üzerine kurulu bir protokol olan QUIC ile çalışır.

Bu değişiklik TCP'deki bir sınırdan doğar. TCP baytları kesinlikle sırasıyla teslim eder; bu yüzden tek bir paket kaybolduğunda, verisi çoktan gelmiş olanlar dahil bağlantıdaki her HTTP/2 akışı yeniden gönderimi bekler. QUIC her akışı bağımsız olarak teslim eder, bu yüzden kaybolan bir paket yalnızca ait olduğu dosyayı geciktirir. QUIC ayrıca bağlantıyı iki ya da üç yerine tek bir gidiş-dönüşte kurar, geri dönen bir ziyaretçinin isteğini daha ilk pakette göndermesine izin verir ve bir telefon Wi-Fi'dan mobil veriye geçtiğinde indirmeyi sürdürür.

Pratikte ikisi birlikte çalışır. Tarayıcı önce HTTP/2 ya da HTTP/1.1 ile bağlanır, sunucunun HTTP/3 desteklediğini bir Alt-Svc başlığından ya da DNS'teki bir HTTPS kaydından öğrenir ve sonraki istekler için geçiş yapar; ağ UDP'yi engelliyorsa TCP'ye geri döner. Bütün büyük tarayıcılar ve CDN'ler ikisini de destekler; bu yüzden HTTP/3'ü açmak genellikle sunucuda ya da CDN'de bir yapılandırma değişikliğidir, HTTP/2 de yedek olarak kalır.

Sık yapılan bir yanlış, HTTP/3'ün her siteyi gözle görülür biçimde hızlandırdığını düşünmektir. Hızlı ve kararlı bağlantılarda fark çoğu zaman küçüktür; kazanç mobil ağlarda, paket kaybı yaşanan ağlarda ve ilk ziyaretlerde ortaya çıkar. Bir diğer yanlış, UDP kullandığı için HTTP/3'ün daha az güvenli olduğunu sanmaktır: QUIC'te şifreleme zorunludur ve her paketin meta verisinin, TCP üzerindeki TLS'e göre daha büyük bir kısmı şifrelenir.

Hangisini kullanmalısınız?

HTTP/2 şu durumlarda doğru seçim:

  • İstemciler UDP'yi engelleyen ya da yavaşlatan ağların veya güvenlik duvarlarının arkasında.
  • Sunucunuz, proxy'niz ya da yük dengeleyiciniz henüz QUIC desteklemiyor.
  • Trafik, paketlerin nadiren kaybolduğu tek bir veri merkezindeki servisler arasında kalıyor.
  • Çoğu gRPC kurulumu gibi HTTP/2 üzerine kurulu araçlara dayanıyorsunuz.

HTTP/3 şu durumlarda doğru seçim:

  • Ziyaretçilerin çoğu, paketlerin kaybolduğu mobil ya da güvenilmez ağlarda.
  • Kullanıcılar bir oturum sırasında, örneğin Wi-Fi'dan mobil veriye geçerek ağ değiştiriyor.
  • Hızlı ilk bağlantılar önemli, örneğin arama sonuçlarından gelen kısa ziyaretlerde.
  • CDN'iniz ya da sunucunuz destekliyor, yani açmak yalnızca yapılandırmaya mal oluyor.

Sık sorulan sorular

HTTP/3 için kodumu değiştirmem gerekir mi?

Hayır. İstekler, yanıtlar, başlıklar ve durum kodları aynıdır, bu yüzden uygulama kodu değişmez; HTTP/3 sunucuda, yük dengeleyicide ya da CDN'de açılır.

HTTP/3, HTTP/2'nin yerini mi alıyor?

Yakın zamanda değil. Tarayıcılar işe HTTP/2 ya da HTTP/1.1 ile başlar ve UDP engellendiğinde TCP'ye geri döner; bu yüzden sunucular ikisini yan yana sunmayı sürdürür.

HTTP/3 neden TCP yerine UDP kullanıyor?

TCP işletim sistemlerine ve ağ cihazlarına gömülüdür, bu yüzden işleyişini değiştirmek uzun yıllar alırdı. QUIC'i UDP'nin üzerine kurmak, tasarımcılarının bağımsız akışları ve daha hızlı el sıkışmaları, tarayıcılar kadar sık güncellenen sıradan yazılımlarla eklemesini sağladı.

Daha fazla

Ayarlar