HTTP 3 Geliyor, Hazır mıyız?

İnternetin büyük bir kısmında kullanılan HTTP 1.1 ve HTTP 2 yerini, HTTP 3’e bırakmaya hazırlanıyor.

HTTP (Hypertext Transfer Protocol), web sayfalarının gösterilmesini sağlayan protokoldür. Sunucu ile istemci arasında veri transferini sağlayan katmanlardan sadece birini oluşturur. İlk sürümü 1989 yılında CERN’de ortaya çıktı, World Wide Web’le çalıştırılabilmesi için geliştirildi. Protokolün yeni sürümleri, web’in performansını, güvenliğini ve kullanılabilirliğini arttırmayı hedeflemektedir. Günümüzde kullanılan internet sitelerinin çoğunluğu HTTP 1.1 ve HTTP 2 protokollerini kullanmaktadır. Bunun %48,9’luk kısmını HTTP 2 protokolü kullanır.[1]

HTTP 2’de büyük veri paketlerini teslim ederken paket kaybı oluştuğunda yavaşlık meydana gelir. Bu yavaşlık durumlarında HTTP 2’nin, HTTP 1.1’den daha yavaş çalışabilmesine sebep olmaktadır. Bunun nedeni, HTTP 2’nin tek bir TCP bağlantısı kullanmasına karşın, HTTP 1.1’in yaklaşık 6 bağlantı kullanmasıdır. HTTP 2’de paket kaybının yaşanması sonucunda, sonraki paketler de beklemeye alınır ve kayıp paketin tekrardan gönderilmesini bekler, bu işleme HOL (Head of Line Blocking) engellenmesi ismi verilir.[2]

Bu sorun, daha verimli tıkanıklık kontrolü sağlayan farklı bir aktarım protokolü kullanan HTTP 3 ile ortadan kalkıyor. HTTP 3‘te kullanılan QUIC protokolü yapısı ile User Datagram Protocol (UDP) üzerinden HTTP 2 tabanlı veri aktarımı sağlanması, paket kayıplarında yeniden bir el sıkışma yapılmayarak ve paket aktarımını sırasız biçimde yaparak HOLB sorunu ortadan kalkmaktadır.

QUIC

QUIC, Google tarafından 2013 yılında ilk kez duyuruldu. Zamanla yaygınlaşan QUIC, şu anda Google trafiğinin üçte birinden fazlasında kullanılmakta. 2015 yılında Google ile IETF (Internet Engineering Task Force) ile birlikte çalışmaya başlandı. QUIC, veri akışı sırasında gecikmeyi azaltmak üzere tasarlandı ve geliştirildi. Mobil kullanımında, 4G ve Wi-Fi geçişleri sırasında oluşan paket kayıplarından dolayı gecikmeler fazla olduğundan bu soruna çözüm olarak sunuldu. Yukarıda da bahsedildiği üzere HTTP 2 kullanırken oluşan paket kayıplarında gönderilen tüm verinin tekrar baştan gönderilmesi ve bu verilerin gönderilmeden önce TCP el sıkışmasının yeniden gerçekleşmesi ve TLS bağlantısının oluşması ciddi gecikmelere sebep olabilmektedir. QUIC çalışma prensibi olarak, UDP protokolü kullandığından TCP el sıkışması gerçekleştirmez. TLS 1.3 el sıkışması gerçekleştikten sonra veri gönderimi başlar. Bu durumda herhangi bir paket kaybı yaşandığında, gönderilen tüm paketleri yeniden göndermek yerine kayıp paket yeniden gönderilir ve bu gönderim sırasında yeniden el sıkışmaya gerek olmadığından paket kayıplarında oluşan gecikme HTTP 2’ye oranla oldukça azdır.[3]

HTTP 3

HTTP 3, HTTP protokolünün hem güvenliğini hem de performansını geliştirmek için HTTP 2’nin de bazı sınırlamalarını ele almak için tasarlanmış HTTP protokolünün yeni versiyonudur. HTTP 3 kullanımı, API ve mobil uygulama trafiğinde oluşan gecikmelere ve TCP bağlantılarından paket kayıpları ve HOL engellenmesi sorunlarını çözmektedir. HTTP 3’ü kısaca HTTP 2 ile QUIC protokollerinin birleştirilmesi olarak ele alabiliriz. HTTP 2’de kullanılan HPACK başlık sıkıştırma algoritması, HTTP 3’te, bunun bir modifikasyonu olan QPACK adlı bir yeni başlık sıkıştırma yöntemi olarak değiştirilmiştir. Bu sayede tek TCP bağlantısında veri istemciye iletilebilir. QUIC ise TCP bağlantılarda oluşan veri tıkanıklığı ve paket kayıplarına çözüm olduğundan HTTP 2 de tek bağlantıdan veri iletilmesini sağladığından bu iki yöntemin birlikte kullanılan hali, HTTP 3 ortaya çıkmaktadır. HTTP 3 ile birlikte artık SSL olmayan siteler olmayacak çünkü HTTP 3 TLS bağlantısını zorunlu kılmaktadır.[4]

HTTP 3 şu anda büyük tarayıcıların hepsinde destekleniyor. Yalnızca ufak bir ayar ile aktif edilmesi gereklidir. Tarayıcıların desteklenen sürümleri aşağıdaki görselde sunulmuştur.

HTTP/3 Destekleyen Tarayıcılar [5]

HTTP 3 Sınırlamaları

HTTP 3’e geçiş, yalnızca uygulama katmanındaki bir değişikliği değil, aynı zamanda temeldeki taşıma katmanındaki bir değişikliği de içerir. Bu nedenle, HTTP 3’ün kullanılması ve yaygınlaşması, yalnızca uygulama katmanında bir değişiklik gerektiren önceki HTTP 2’ye kıyasla daha zor olacaktır.

HTTP 3’ün ana dezavantajı hem istemci hem de sunucu tarafında yüksek işlemci tüketimidir. Bu tüketim, sunucu tarafında daha belirgindir, çünkü çoğu web sunucusu işlemciyi ve saniyedeki istek sayısını izler, ancak çoğu istemci bunu yapmaz. Bu durumun, internet sitelerinin HTTP’den HTTPS’e geçişinde olduğu gibi işlemci teknolojisi geliştikçe zamanla azalması bekleniyor.[6]

Referanslar:

[1] https://w3techs.com/technologies/overview/site_element

[2] https://www.oreilly.com/content/will-http2-make-my-site-faster/

[3]https://blog.chromium.org/2020/10/chrome-is-deploying-http3-and-ietf-quic.html

[4]https://tools.ietf.org/html/draft-ietf-quic-http-32

[5] https://caniuse.com/?search=http3

[6]https://www.ionos.com/digitalguide/hosting/technical-matters/http3-explained/

Yazar: Görkem Koç