HTTP Nedir?

Bugün internet sitelerinin görüntülenmesinde HTTP (HyperText Transfer Protocol) üstün metin transfer protokolü kullanılmaktadır. İnternet yani www (World Wide Web) veri alışverişi içinde HTTP önemli bir yer tutmaktadır. İnternet sayfası gösterimi esnasında bu protokol sayesinde kaynaklar arasında bir köprü oluşturulur. HTTP ilk olarak 1989 yılında Tim Berners Lee tarafından geliştirilmeye başlandı. Günümüze gelene kadar da W3C (World Wide Web Consortium) ve IETF (Internet Engineering Task Force)  İnternet Mühendisliği Görev Gücü tarafından yapılan bir takım geliştirmelerle HTTP2 ve HTTP3 versiyonları ortaya çıktı.

HTTP Nasıl Çalışır?

İnternet, ilk kullanılmaya başlandığında herkes tarafından standart bir şekilde erişim sağlanabilmesi ve herkesin benzer deneyimi yaşaması için bir takım kurallar ve protokoller koyulma ihtiyacı da ortaya çıktı. 

İnternet üzerinden bilgi paylaşımı yapılabilmesi için bağlantının belli katmanlar üzerinden gerçekleştirilmesi planlandı ve buna bağlı olarak TCP/IP (Transmission Control Protocol / Internet Protocol) bağlantı modeli içindeki belirli katmanlarda bazı taşıma, uygulama ve bağlantı protokolleri (HTTP, UDP, IMAP, POP3) belli bir düzen içinde çalışmak üzere oluşturuldu. HTTP (HyperText Transfer Protocol) uygulama katmanında çalışan ve internet sitelerinin görüntülenmesini sağlayan protokoldür. Bunun için tarayıcımıza bir URL (Uniform Resource Locator) girdiğimizde tarayıcımız, HTTP protokolü ile İstek (Request) yapar, sunucu (Server) HTTP protokolü ile 80 portundan (HTTPS ise 443 portu) gelen bağlantı isteğini kabul eder ve Cevap (Response) olarak web sitesinin kaynağına erişimi (web sitesinin izin verdiği ölçüde) serbest bırakır. Böylece web sitesi tarayıcımızın ekranında görüntülenir.

blank

HTTPS (Secure HyperText Transfer Protocol) protokolü ise aynı işlemlerin SSL (Secure Sockets Layer) denilen bir güvenlik katmanı üzerinden gerçekleşmesini sağlar böylece art niyetli kişilerce kullanıcı adı ve şifre gibi bilgilerin çalınmasını önler ve güvenlik sorunlarının önüne geçer.

Eski teknoloji olan HTTP 1.1 protokolü uzun süre kullanıldı ancak web sitelerinin içeriklerinde bulunan medya sayısı ve gelişen yapısı nedeniyle bağlantı ve gösterim hızlarında sorunlar yaşanmaya başladı, bu sebeple de geliştirme ihtiyacı ortaya çıktı.

HTTP/2 Nedir?

HTTP/2, HTTP 1.1 altyapısı üzerine kurulmuş ve HTTP ana sürümünün ikinci ana sürümü olarak karşımıza çıkıyor. Önceleri HTTP 1.1 sorunlarını aşmak ve hızlandırmak amaçlı Google SPDY protokolü üzerine çalıştı. Bu sistem o kadar kullanışlıydı ve HTTP o kadar yaygın kullanılıyordu ki, yerine yeni bir bağlantı protokolü üretmek ve yaygınlaşmasını sağlamak zor olacağı için tamamen HTTP temeli üzerine yapılan geliştirmeler ile HTTP/2 protokolü ortaya çıkarılmıştır.

HTTP/2 de 2014 yılında onaya sunulmuş ve 2015 yılında incelenmiş ve bir standart olarak kullanılması onaylanmıştır.

2015 yılı sonuna doğru da tüm popüler web tarayıcıları HTTP/2 yi destekler hale gelmiştir. Günümüzde birçok web sitesi halen bu teknolojiye geçmiş değil ancak gelişmiş sistemlere sahip büyük firmalar HTTP3 protokolünü kullanmaya başladı bile.

HTTP/2 Getirdiği Avantajlar

HTTP/2 protokolü HTTP 1.1 den farklı olarak web developera (web geliştiricileri) birçok avantaj sunuyor bunun yanında uygulamada sadelik, kolaylık ve hız getirdiği diğer avantajlar. Ayrıca kullanım esnasında bağlantı işlemi sayısını azaltır, header sıkıştırarak site hızında belirgin artış sağlıyor. 

  • HTTP/2 tek TCP bağlantısı üzerinden binary iletişim kuruyor.
  • Statik dosyalar (Resim, video, JS, CSS) daha hızlı aktarılıyor.
  • HTTP Header sıkıştırması ile ağ kaynaklarını daha az tüketiyor.
  • SSL kullanımı ile daha fazla güvenlik sağlıyor.
  • Hızlı sayfa gösterimi sayesinde ve botların HTTP/2 desteği sayesinde SEO (Search Engine Optimization) avantajı sağlıyor.

Bir web sitesi içinde değişik formatlarda birçok farklı dosya bulunur. Resim, video, metin ve sitenin dizaynı ile ilgili CSS (Cascading Style Sheets) ve JS (JavaScript) kodları bulunuyor. Bunların her birinin belirli bir düzen ve kurallar halinde çalışması gerekiyor. 

HTTP 1.1 verilerin düz metin olarak aktarılmasına izin veriyor. HTTP/2 ise binary sistem kullanarak bu işi çözüyor. Binary (ikili) sistem verilerin aktarım hızını artırıyor.  

HTTP 1.1 protokolünde bağlantı yapılırken tüm dosya türleri için ayrı ayrı bir request (istek) gönderiliyordu ve eş zamanlı çağrılar sınırlandırılıyordu, bu da her birine ayrı TCP bağlantısı gerektirdiği için işlemi yavaşlatıyordu. Kullanıcı deneyimini olumsuz etkileyen bu durumu çözmek için atılan adımlar bu şekilde geliştirmeleri gerektirdi.

Bu durum HTTP/2 protokolünde farklı bir şekilde çözülüyor. HTTP/2, Multiplexing ile tarayıcıdan gelen istekleri toplu olarak alıp, statik dosyaları tek bir TCP bağlantısı üzerinden cevaplıyor. HTTP/2 bu yöntem ile web sitelerinin yüklenmesini hızlandırıyor.

HTTP/2 Push özelliğinde de yine tek bir bağlantıda push yöntemiyle, önceden belirlenen tüm dosyalar çekilerek tarayıcı ön belleğine yükleniyor. Kullanıcı her işlemde tekrar sunucu ile iletişim kurma ihtiyacı duymadığı için hem hız kazanmış oluyor hem de sunucu üzerindeki işlem sayısı ve yük azalmış oluyor.

blank

Bunun yanında HTTP/2 de header bilgileri sıkıştırılarak (header compression), gruplanarak, minifying (küçültme) yapılarak basitleştiriliyor. Bu işlemler iletilen web sitesi boyutunun küçülmesi anlamına da geliyor. Ayrıca HTTP/2 geriye dönük uyumluluk calışıyor, HTTP 1.1 desteği de mevcut.

Yine güvenlik açısından bakılırsa HTTP 1.1 versiyonu HTTPS güvenli bağlantı için SSL kurulmadığı sürece HTTP protokolü ile bağlanmaya fırsat veriyor ancak HTTP/2 de TLS bağlantı güvenliği sağlamak zorunlu. Bu da kullanıcılara ait bilgilerin gizliliği hakkında güven veren bir durum. Üçüncü kişiler üzerinden gelecek tehditler böylece önlenmiş oluyor.

HTTP/2 ye Nasıl Geçilir?

HTTP/2 hala yaygın kullanılan bir protokol değil, ancak en bilindik tarayıcılar (Chrome, Microsoft Edge,Mozilla Firefox, Safari) HTTP/2 desteği sağlıyorlar. Geriye dönük uyumluluk sayesinde de her iki protokolü de kullanan siteleri görüntüleyebiliyorlar. Bunun yanında en bilindik web server (sunucu)’ları da (Apache, NGINX, Litespeed, Cloudflare) HTTP/2 desteğini veriyor. HTTP/2 geçiş için gerekli tüm dosyalara buradan ulaşabilirsiniz. Sisteminizi HTTP/2 ye çevirip çevirmemek size kalmış.

HTTP/3 Nedir?

Tüm bunlardan farklı olarak SPDY ile  HTTP/2 nin gelişmesine ön ayak olan Google bu sefer HTTP/3 protokolünün gelişmesini sağladı. QUIC (Quick UDP Internet Connection) adlı bir protokol geliştirdi ve HTTP/3 protokolünün ortaya çıkmasını sağladı. Aslında QUIC; TCP, TLS, HTTP/2 protokollerinin birleşimi üzerine UDP veri aktarım protokolünün kullanılması olarak tanımlanabilir.

blank

HTTP/3 protokolü, HTTP 1.1 ve HTTP/2 den farklı olarak, Taşıma (Transport) katmanında çalışan ve dosya transferi konusunda özel olarak kullanılan UDP (User Datagram Protocol) protokolü bağlantısı üzerinden çalışıyor. 

UDP internet ağında TCP sistemi içinde handshake oluşturmadan, veri transferine imkan tanıyan ve buna bağlı olarak çok hızlı veri transferi gerçekleştiren bir protokoldür. UDP protokolünde TCP bağlantılarında kullanılan karşılıklı SYN, ACK, FIN gibi bağlantı komutları ve bağlantı ve handshake  işlemlerine gerek kalmadan, doğrudan açılan port üzerinden veri aktarımı sağlıyor.

QUIC protokolünün hızı hakkında biraz fikir sahibi olacağınız bir video paylaşalım.

https://drive.google.com/file/d/1DlMI_3MOxnWarvEVfzKxFqmD7c-u1cYG/view

Bu şekilde veri aktarımı çok hızlı olduğu için özellikle büyük ölçekli dosyaların aktarımı kolayca gerçekleşiyor.

Sonuç

Günümüzde örneğin Youtube kanallarında izletilmek istenen 4K videoların dosya boyutları düşünüldüğünde Google tarafından HTTP protokolünde neden veri aktarım hızını artıracak bir geliştirme ihtiyacı duyduğu anlaşılabiliyor.

QUIC, HTTP/3 ortaya çıkabilmesini sağlayan çok önemli bir gelişmeydi ve QUIC çalışma grubunun bu çalışması HTTP/3 gelişmesini sağladı. 

Günümüzde HTTP/3 kullanan web siteleri mevcut. Google doğal olarak bu teknolojiyi ilk kullanmaya başlayan platform olarak karşımıza çıkıyor. 

İnternet o kadar çok kullanılıyor ve aynı anda o kadar çok veri dosya akışı olmaya başladı ki sistem çok hızlı gelişme ihtiyacı duyuyor. HTTP 1990’lardan beri hayatımızda HTTP 1.1 halen çok geniş bir şekilde kullanılıyor. HTTP/2 ancak 2015 yılında kullanılmaya başladı ve bu sefer yeni bir protokol geliştirmek beş seneyi aldı. 

2021 yılı itibariyle de HTTP/3 resmi olarak kullanılan yeni nesil protokol. Kim bilir, belki çok daha uzun süre gerek kalmaz ancak bu gelişmeler gösteriyor ki özellikle web developer, program ve uygulama geliştiricilerinin başı dertte.