Neden HTTP/3’e Geçmelisiniz?

Daha öncesinde HTTPS nedir, SSL sertifikası ne işe fayda yazımızda HTTP protokolünün ne olduğuna ayrıntılıca değinmiştik. Bu yazımızda ise TTP’nin sürümlerinden, her sürümü ile getirdiği yeniliklerden ve neden HTTP/3 sürümüne geçilmesi gerektiğinden bahsedeceğiz. HTTP ve HTTPS protokolleri hakkında temel bilgi edinmek isterseniz, yazmış olduğumuz makaleye göz atabilirsiniz lakin yeniden de özet geçelim.
Bilindiği üzere internet dediğimiz şey birbirine bağlı milyarlarca aygıttan, sunucudan oluşan bir yapı. Günümüzde bizim internet manasında kullandığımız sabal dünyada ise çeşitli web siteleri bulunuyor. Örneğin, Technopat.net kıymetli okurlarına teknoloji alanında yeni ve yanlışsız bilgiler ulaştırmayı hedefleyen bir yayın. Sizler bu yazıya okumak için tıkladığınızda, tarayıcınız birtakım protokoller yardımıyla istemci tarafına isteği iletiyor. Web sunucuları ise istekleri işleyip tarayıcıya birtakım datalar gönderiyor. Tarayıcı tarafından bu dataların işlenmesi sonucunda ise karşımızda sayfamız beliriyor.
İşte bu yayın, HTTP dediğimiz HyperText Transfer Protocol yardımıyla gerçekleşiyor. WorldWideWeb yani WWW projesi kapsamında CERN laboratuvarlarında geliştirilen bu protokol, web sitelerinin en temelinde bulunan kıymetli yapılardan biri. HTTP, bu data transferi için TCP’den yararlanır. Her web sunucusu ile sunucuya istekte bulunan istemcilerin (bilgisayarların) bir IP adresi vardır. Bilgiler de bu adresler sayesinde amacını bulabilir. Bağlantı kabaca bu biçimde gerçekleşir.
Network dünyasına muhakkak bir standart kazandırmak üzere geliştirilen OSI katmanlarının “application-level” yani uygulama katmanında bulunan HTTP, çeşitli web sunucu yazılımlarının çeşitli yapılandırmalarla kullanılmasıyla gelen istekleri farklı vakitlerde işleyebilir. HTTP, birebir vakitte bir uygulama olduğundan güncellenebilir bir yapıya sahip. Bu nedenle devrin gereksinimlerine nazaran çeşitli sürümleri ortaya çıkmış denilebilir.

Birinci web sitesine ilişkin birinci HTTP sunucu bilgisayarı. Yer: CERN
HTTP/1.0 ve 1.1
1989’da geliştirilmeye başlanılan HTTP’nin birinci sürümü olan RFC 2068 ile 1997 yılında belgelenen HTTP/1, 1.1 periyoduna nazaran daha çok tarayıcı ve bilgisayar dostu bir yapıya sahipti. Bu sürüm aldığı istekler ve cevaplar bakımından üst başlıklarda (header) çeşitli meta bilgileri, HTTP sürümü ve içerikleri barındıran bir yapının yanı sıra GET, HEAD ve POST tabirlerinin dayanağını içinde bulunduruyordu. İsteklerin yapılıp yanıtlanmasından çabucak sonra irtibat sonlandırılmaktaydı.
HTTP/1.0 sürümünün asıl sorunu olan head-of-line block problemi yüzünden gelen isteği tamamlamadan öteki isteği alamıyordu. Bildiğiniz üzere web siteleri çeşitli kaynakları ve kod yapılarını içerir. Bu yapıların yüklenmesi HTTP/1.0 sürümündeki head-of-line block yüzünden epey uzuyordu.
Web 2.0 uygulamalarının yavaş yavaş ortaya çıktığı devirlerde bu kadar gecikmeli bir yapı çok verimli olmadığı için HTTP/1.1 sürümü ortaya çıktı. Yeni sürümde yeni istekler için birbirinin beklenmesine gerek kalmaması için ardışık bir istek nizamı kullanılarak sorun çözüldü.
HTTP/2
HTTP/2, 2015 yılında RFC 7540 ile yayınlanan, şu anda günümüzde birçok sitede kullanılan, adeta standart pozisyonunda olan HTTP sürümüdür. Bu sürümde bir temas üzerinde web sunucusuna üst üste ve tıpkı anda yapılan isteklere cevap verilebilir. Bunun getirisi kadar bir başka götürüsü de ağdaki tıkanıklık yüzünden istekler ve karşılıklar yaşanan paket kaybından etkilenebilmekte. TCP protokolü bu sürümde baytlar halindeki bilgi akışını uç noktalar ortasında sağlar. Temasta yaşanabilecek problemler yüzünden bu transfer esnasında çeşitli baytlar bozulabilir yahut kaybolabilir. Yaşanan kaybı ve bozulmayı düzeltmek için TCP isteği tekrar sağlayarak sorunun çözülmesini sağlar.
İsteğin tekrar sağlanması yüzünden bağlantı esnasında çeşitli gecikmeler ve yavaşlıklar meydana gelebilir. Aslında bu bir nevi HTTP 1.0 sürümünde yaşanan head-of-line block sorununa benzeridir.
HTTP/3
Günümüzde HTTP/2’nin yerine gelmesi planlanan HTTP sürümüdür. Bu sürümde head-of-line block sorununun büsbütün ortadan kaldırılması hedeflenir. Böylelikle daha gecikmesiz, daha süratli ve istekleri daha düzgün işleyip cevap verecek bir temasın oluşturulmasını maksatlar. Öteki HTTP sürümlerinin bilakis irtibat için TCP’den yararlanmaz, bunun yerine çok daha yeni olan QUIC (Quick UDP Internet Connections) denilen bir data taşıma katmanı kullanılır. QUIC’in varsayılan olarak şifreli bir yapıya sahip olması nedeniyle, HTTP/3 kullanılması durumunda hem daha inançlı hem de daha süratli bir biçimde web sitelerine erişebileceğiz.
Bu yeni standart ile HTTP protokolünde TCP ile TLS şifrelemesinin değiştirilmesi planlanmakta. Büyük ve önde gelen bulut sağlayıcılarından olan CloudFlare, HTTP/3’ün şu avantajlarına değinir:
- Yeni header sıkıştırması QPACK
- Kendinden gelen güvenlik
- Head-of-line block sorunu yok
- UDP Performansı
- Deflecting Reflection
Bu yeni HTTP standardı ile artık bizleri daha süratli ve verimli web sitelerinin beklediğini söyleyebiliriz. Bu sürümde HTTP protokolünün birçok sorunu giderilmiş, TCP’nin terk edilmesi ile Head-of-line blocking sorunun çözülmesi nedeniyle web siteleri için performans manasında çok daha fark katacağı biliniyor.

Pekala bir web geliştirici olarak neden HTTP/3’e geçmeliyim?
Bunun yanıtı aslında epeyce kolay. En temelde TCP’den QUIC’e geçilmesinin getirdiği avantajları sırasıyla burada saymaya başlayabiliriz.
Bu avantajların başında düşük gecikme yatar. Örneğin Google’ın yaptığı bir araştırmaya nazaran QUIC kullanılması durumunda YouTube’da yüklenme müddeti yüzde 15, arama sonuçlarının ise yüzde 3.6 daha hızlandığı ortaya çıkmış. Ayrıyeten evvelden ağlar ortasında yapılan geçişlerin sürat üzerinde az da olsa bir tesiri mevcuttu. QUIC’in gelişi ile artık bu durum ortadan kalktı.
İlişkilerde sağlanan el sıkışmaları artık daha verimli formda optimize edildi. QUIC ile birlikte bir kontakta iki yahut daha fazla el sıkışma desteklemek yerine tek el sıkışma kâfi hale gelir. Bu nedenle ortada bir bağlantı kelam konusu ise faal irtibat mühleti artar. Bütün bunların dışında evvelki HTTP sürümlerinde bulunan head-of-line blocking problemi tahlile kavuşmuştur.
Sonuç
Bu yazıda HTTP sürümlerinden, çıkan yeni sürümler ve standartlar ile gelen yeniliklerden bahsettik. Bununla birlikte web sitelerinin neden HTTP/3 sürümüne geçmesi gerektiğine de değindik. Halihazırda birkaç web sunucusu ve bulut sağlayıcısı HTTP/3 destekliyor. Technopat olarak biz de uzun vakittir bu protokolü kullanıyoruz. Sizin de daha süratli web siteleri oluşturmak ve eski sürümlerin gecikmelerinden kurtulmak için yeni standartları eskiye tercih etmenizde fayda var.