HTTP/3
- Okunuşu
- eyç ti ti pi tri
Kısaca
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 nedir?
HTTP/3, IETF tarafından 2022'de RFC 9114 olarak yayımlandı. Geliştiricilerin önceki sürümlerden bildiği her şeyi, yani aynı metotları, durum kodlarını, başlıkları ve URL'leri korur, ama alttaki taşıma katmanını değiştirir: üzerinde TLS olan TCP yerine, TLS 1.3 şifrelemesi yerleşik olan ve UDP üzerine kurulu bir protokol olan QUIC üzerinde çalışır. HTTP/2 gibi birçok isteği tek bir bağlantı üzerinden çoklar ve başlıkları, HTTP/2'nin HPACK'inin QUIC'e uyarlanmış bir çeşidi olan QPACK ile sıkıştırır.
Kazanımlar QUIC'ten gelir. Yeni bir bağlantı iki ya da üç yerine genellikle tek bir gidiş-dönüşten sonra hazır olur, geri dönen bir ziyaretçi de isteğini daha ilk pakette gönderebilir. Her akış bağımsız olarak iletildiği için kaybolan bir paket bağlantıdaki her isteği değil, yalnızca ait olduğu dosyayı geciktirir; bir telefon Wi-Fi'dan mobil veriye geçtiğinde de indirme devam edebilir.
Tarayıcılar işe HTTP/3 ile başlamaz, çünkü bir sunucunun onu desteklediğini önceden bilemezler. HTTP/2 ya da HTTP/1.1 üzerinden gelen ilk yanıt bir Alt-Svc başlığı taşır ya da site DNS'te bir HTTPS kaydı yayımlar; tarayıcı da sonraki istekler için HTTP/3'e geçer, ağ UDP'yi engelliyorsa TCP'ye geri döner. Bütün büyük tarayıcılar ve CDN'ler, NGINX ve Caddy gibi sunucular da onu destekler; bu yüzden onu açmak genellikle kod değil, yapılandırma değişikliğidir.
HTTP/3 sık sık QUIC ile karıştırılır ve HTTP/2 ile ilişkisi de çoğu zaman yanlış anlaşılır. QUIC taşıma protokolüdür, HTTP/3 ise HTTP'nin onun üzerine eşlenmesidir; DNS over QUIC gibi başka protokoller de QUIC kullanır. HTTP/3, HTTP/2'yi gereksiz kılmaz: ikisi benzer özelliklerle yan yana kullanılır ve asıl fark, HTTP/2'nin akışlarının tek bir TCP bağlantısını paylaşması, bu yüzden kaybolan tek bir paketin hepsini durdurması, HTTP/3'ün akışlarının ise durdurmamasıdır.
Önemli noktalar
- HTTP/3, 2022'de RFC 9114 olarak standartlaştırıldı ve UDP üzerindeki QUIC ile çalışır.
- HTTP anlamı aynı kalır: metotlar, durum kodları ve başlıklar değişmez.
- Daha hızlı bağlantı kurulumu ve bağımsız akışlar, TCP'nin sıra başı tıkanmasını (head-of-line blocking) önler.
- Sunucular onu
Alt-Svcya da DNS ile duyurur; UDP engellendiğinde tarayıcılar HTTP/2'ye geri döner. - En çok yavaş, paket kaybı yaşayan ya da değişen mobil ağlarda işe yarar.
Örnek
server {
# HTTP/3 over QUIC on UDP port 443; HTTP/1.1 and HTTP/2 on TCP port 443
listen 443 quic reuseport;
listen 443 ssl;
http2 on;
ssl_certificate /etc/ssl/example.com.crt;
ssl_certificate_key /etc/ssl/example.com.key;
# Tell browsers that HTTP/3 is available on the same port
# (the firewall must also allow UDP port 443)
add_header Alt-Svc 'h3=":443"; ma=86400';
}Sık sorulan sorular
HTTP/2 ile HTTP/3 arasındaki fark nedir?
Aynı HTTP özelliklerini sunarlar, ama HTTP/2 TCP üzerinde, HTTP/3 ise UDP üzerindeki QUIC ile çalışır. Bu sayede HTTP/3 bağlantıları daha hızlı kurar, paketler kaybolduğunda akışları birbirinden bağımsız tutar ve ağ değişikliklerinden sonra da ayakta kalır.
HTTP/3 kullanmak için kodumu değiştirmem gerekir mi?
Hayır. İstekler, yanıtlar ve başlıklar aynı şekilde çalışır, bu yüzden uygulamalar değişmez. Bu sürüm web sunucusunda, yük dengeleyicide ya da CDN'de açılır; orada UDP 443 numaralı portun da açık olması gerekir.
HTTP/3 her zaman daha mı hızlı?
Her zaman değil. Hızlı ve kararlı bağlantılarda fark küçüktür; QUIC sunucuda TCP'den daha fazla işlemci gücü de harcayabilir. En büyük kazanç, paket kaybı yaşanan mobil ve uzun mesafeli bağlantılardadır.
İlgili sayfalar
- HTTP/2Ağlar, s. 11HTTP/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.
- QUICAğlar, s. 25QUIC, UDP üzerine kurulu; şifreli, güvenilir ve çoklu akışlı bağlantıları hızlı kurulumla sağlayan, HTTP/3'ün temelini oluşturan modern bir taşıma protokolüdür.
- HTTPWeb Geliştirme, s. 24HTTP, tarayıcıların, uygulamaların ve sunucuların basit bir istek-yanıt döngüsüyle web sayfaları ve veri alışverişi yapmasını sağlayan protokoldür.
- UDPAğlar, s. 35UDP, bağlantı kurmadan datagram adı verilen küçük ve bağımsız mesajlar gönderen, garantili teslimat yerine hızı seçen hafif bir internet protokolüdür.
- TLSGüvenlik, s. 51TLS, ağda gönderilen veriyi şifreleyen ve sunucunun kimliğini doğrulayan, HTTPS, e-posta ve birçok başka bağlantıyı güvenceye alan kriptografik protokoldür.
- GecikmeAğlar, s. 9Gecikme, bir istek ile yanıtın başlaması arasında geçen süredir; genellikle milisaniyeyle ölçülür ve bir uygulamanın ne kadar hızlı hissettirdiğini belirler.
Kaynaklar
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin