Anasayfa Makale HTTP/3 Hakkında Bilmeniz Gereken Her Şey

HTTP/3 Hakkında Bilmeniz Gereken Her Şey

Yeni internet protokolü HTTP/3 hakkında bilmeniz gereken her şeyi bu yazımızda bulacaksınız.

Kasım 2018’de Internet Engineering Task Force (IETF) Bangkok’da bir toplantı düzenledi ve yeni internetin taslağı oluşturuldu. HTTP/2 protokolünün yerine geçen QUIC transfer protokolü HTTP/3 olarak adlandırıldı. QUIC Protokolü Nedir? yazımızda size bu protokol hakkında bilgi vermiştik. HTTP/3, UDP üzerine kuruldu ve Google, Facebook gibi önde gelen internet şirketleri tarafından kullanılmaya başlandı. Eğer Chrome kullanıyor ve bir Google hizmetine bağlanıyorsanız muhtemelen QUIC protokolünü kullanıyorsunuz.

Elde edilen ilk sonuçlar oldukça umut vaat ediyor ve Haziran 2019’da bu hizmetin test süreci tamamlandığında HTTP/3 yeni ve üçüncü nesil HTTP standardı olarak duyurulacak.

HTTP/2 protokolü dünya çapında %34’lük bir kullanım oranına ulaştı ve tüm modern internet tarayıcılar tarafından destekleniyor. HTTP/2; engelleme yapmayan indirmeler, çoklu hat, tarayıcı talep etmeden sunucu tarafından veri itilmesi gibi ciddi geliştirmelerle birlikte gelmişti. Böylelikle eşleşme ve talep-cevap döngülerinin sayısı azaltılmıştı. HTTP/2 ayrıca tek TCP bağlantısına birden fazla kaynak yerleştirmeyi mümkün hale getirmişti.

HTTP Pipelining: Aynı anda birden çok hat bağlantısı yapma diyebiliriz.

HTTP/2 platformundan daha etkin faydalanmak için SSL şifrelemesini internet sitelerine bir gereksinim haline getirmek için internet tarayıcılarda çeşitli değişiklikler yapıldı. Bu yüzden bazen aşırı işlem yükü oluşabiliyor ve yeni protokolün getirdiği hız geliştirmeleri fark edilmez hale gelebiliyor. Hatta bazı kullanıcılar HTTP/2 geçişi ardından yavaşlama olduğunu belirtti. Ancak zaman içerisinde bu problemlerin çoğu çözüldü ve protokolün faydaları görülmeye başlandı.

İnternet Protokolü

İnternet protokolü, tüm internet topolojisinin en alt katmanını ifade eder. Tüm donanımları, sunucuları ve hatta tüm son kullanıcı makinelerini değiştirmeden bu protokolü değiştirmek mümkün değil. Zaten henüz bu protokolünün yerini alıp çığır açacak ve geriye uyumlu bir alternatif de mevcut değil. 32-bit adresleri kullanan bu protokol 4 milyar civarında adres sınırlamasına sahip. Bu yüzden ev kullanıcılarına internet sağlayıcıları tarafından dinamik IP adresi veriliyor. Statik IP adresi ise genellikle ekstra ücret gerektiriyor.

32-bit adreslemenin yetersiz olduğu anlaşıldı ve IPv6 internet protokolü bu kısıtlılıkları aşmak için ortaya çıkarıldı. IPv6, 1998 yılında taslak olarak ortaya konsa da 2017’de internet standardı haline geldi. IPv6 standardı 128-bit üzerine kurulu ve 3.4 * 10 ^ 38 olası adrese imkan tanıyor. Google verilerine göre IPv6 dönüşümü Mart 2019’da %25’in üzerine çıktı.

İnternet protokolü, internet yığınının ilkel katmanıdır ve basit şeyleri tanımlar. Aktarılan paketlerin sıralanması, teslimi, veri bütünlüğü gibi olguları garanti etmez. Tek başına güvenilmezdir.

TCP

İnternet protokolü, internet iletişiminin alt katmanını oluştursa da TCP (Transmission Control Protocol), daha üst katmanda yer alır ve internet, mail, dosya transferi gibi işlemler için gereken güvenilirliği sağlar. Eşleşmeler, paket sıralamaları, kayıp paketlerin yeniden iletimi gibi çok aşamalı bir bağlantı sağlanır. Aynı zamanda göndericiye de paketler ile ilgili geri bildirim sağlanır. Hataları tespit etmek için de sağlama hesaplaması yapılır.

TCP protokolünün ortaya konulması 1974 ve 1981 yıllarına dayanır ve günümüze kadar pek değişmemiştir. Ancak protokolün bu kadar aşamaya sahip olması bir dezavantajdır ve bu aşamalar zayıftır. Bu yüzden modern protokol için TCP bir dar boğaz oluşturmaktadır. HTTP/2 ile TCP üzerinde elde edilebilecek hız geliştirmelerinin üst noktasına ulaşıldı.

TCP protokolünü bir anda değiştirmek ise çok mümkün değildir. TCP/IP yığını 70’lere kadar uzanıyor ve işletim sistemlerine, cihazlara sıkı şekilde bütünleştirilmiş durumda.

UDP

UDP (User Datagram Protocol), internet protokol takımının bir parçasıdır ve özellikleri 1980 yılına dayanmaktadır. İsminden de anlaşılabileceği gibi datagram temelli bağlantısız bir protokoldür. Eşleşmeler yoktur ve teslim ya da sıra garantisi yoktur. Bu yüzden teslim, veri bütünlüğü ve tüm diğer aşamalar uygulama katmanına bırakılmıştır. UDP de TCP gibi yaygın olduğu için internete bağlı cihazların donanımlarında ya da işletim sistemlerinde belirgin değişiklik yapmadan da yenilikleri ortaya çıkarmak mümkün.

UDP paketi TCP paketine göre daha küçüktür ve kaynak portu, hedef portu, uzunluk, paket üst verisi, paket verisi ve sağlama kısımlarını içerir. IPv4 protokolünü kullanırken sağlama kısmı opsiyonelken IPv6 için zorunludur. UDP şu ana kadar VoIP uygulamalarında, video yayınlarında, DNS sisteminde ve DHCP protokolünde kullanılıyor.

QUIC ve HTTP/3

QUIC (Quick UDP Internet Connections), ilk olarak Google tarafından 2012 yılında ortaya çıkarıldı. Ağ katmanlarının sınırları yeniden belirlendi. Düşük seviye UDP protokolü ile birlikte eşleşmeler yeniden tanımlandı, kararlılık ve güvenlik özellikleri kullanıcı alanına bırakıldı. Böylelikle internet genelindeki sistemlerin kernel güncellemesine gerek kalmıyor.

HTTP/2 ile sunulan avantajlar TCP yüzünden kısıtlanmıştı. Veri aktarmak için çok sayıda akışı tek bir TCP bağlantısı kullanmak mümkün. Ancak bir paket kaybı yaşandığında tüm bağlantı ve bunun içindeki tüm akışlar yeniden iletilir. Başarılı şekilde ulaşmış ve bekleyen paketler, kayıp paket yeniden aktarılana kadar engelli kalır.

QUIC protokolünün ise böyle bir kısıtlılığı bulunmuyor. QUIC, bağlantısız UDP protokolü üzerine kurulu olduğu için TCP kısıtlamalarına sahip değil ve bir akış diğerlerini etkilemiyor. QUIC, bağlantısını TCP’den bir üst düzeyde sunuyor. QUIC bağlantılarındaki yeni akışlar diğerinin bitmesini beklemiyor. Ayrı TCP protokolünde olduğu gibi eşleşme gerekmiyor ve bu sayede gecikme azalıyor.

Google bulut platformu 2018 yılında QUIC desteğini sundu ve sayfa yükleme süresinde dünya çapında ortalama %8 iyileşme sağlandı. Özellikle gecikmenin fazla olduğu bölgelerde bu %13’e kadar çıktı. Google protokolün resmi olarak tanıtılmasını beklemeden Chrome, YouTube, Gmail ve arama hizmetleri için protokolü sundu ve 2017 yılında tüm internet trafiğinin %7’si bu protokol ile sağlandı.

Google’ın QUIC sürümü, HTTP/2 işaretini kullanarak sadece HTTP aktarımı üzerine yoğunlaşmıştı. IETF ise kendi QUIC sürümünün HTTP’den daha fazlasında kullanılmasını sağlamaya karar verdi. Ancak HTTP dışı protokollerde şu ana kadar ortaya çıkmış bir çalışma mevcut değil.

IETF ayrıca Google’ın özel çözümü yerine TLS 1.3 şifrelemeyi kullanmayı planlıyor. TLS 1.3, önceki sürümüne kıyasla daha az eşleşme gerektirdiği için protokolün hızına da katkıda bulunuyor.

UDP, QUIC ve HTTP/3 için önemli avantajlar sağlasa da aynı zamanda bazı sorunlara da sebep oluyor. TCP yıllardır ana protokol olduğu için işletim sistemleri ve genel olarak yazılımlar UDP için çok optimize değil. Bu yüzden QUIC ile daha fazla CPU gereksinimi ya da iş yükü ortaya çıkıyor. Bazı tahminlere göre bu HTTP/2 protokolünün iki katına kadar çıkabilir. İşletim sistemlerinin kernel’larında ve cihazların firmware’lerinde bu optimizasyonlar yapılabilir.

QUIC protokolünde bağlantı tanımlayıcıları IP değişikliklerinden etkilenmiyor. Böylelikle örneğin 4G’den Wi-Fi’a geçişte indirmeler yarım kalmıyor. Mobil cihazların hayatımızın vazgeçilmezi haline geldiği bir internet dünyasında bu oldukça önemli.

TLS zorunlu olduğu için ağ trafiğinin gözetlenmesi veya araya girilmesi daha zor olacak. Bu yüzden Cisco gibi üreticiler ve güvenlik duvarı firmaları UDP protokolünü bir sorun olarak görüyor ve devre dışı bırakmak için yollar alıyor. QUIC trafiğinin filtrelenmesi, izlenmesi ya da yönetilmesi daha zor.

QUIC akışları QUIC bağlantıları üzerinden tek ya da çift yönlü olarak iletiliyor. Akışlar tanımlayıcı numaraya sahip ve bu başlatıcıyı ya da akışların tek yönlü mü yoksa çift yönlü mü olacağını belirliyor. Aynı zamanda akış sırasında kontrolü sağlıyor. QUIC aktarım tabanlı bir protokoldür. HTTP ise daha üst katmanda bulunur ve uygulama katmanlı ya da uygulama protokolüdür.

Geri uyumluluk çok önemli olduğu için IETF, HTTP/3 içeresinde HTTP1 ya da HTTP/2 cevaplarını taşıyacak. İstemciye HTTP/3 protokolünün mevcut olduğunu, port ve kaynak bilgisiyle birlikte gönderecek. İstemcilerin önceki HTTP/3 bağlantılarından veri ön belleklemesi ve aynı kaynağa sonraki ziyaretlerinde direkt bağlantı sağlamaları da mümkün olacak.

HTTP/3 Ne Zaman Geliyor?

HTTP/2 standardının tam anlamıyla yerleşmediğini düşünenler için HTTP/3 protokolünü sunmak için erken gelebilir. Bu doğru ancak protokol halihazırda geniş kapsamda testlere ve geliştirmelere sahip. Google neredeyse 2015 yılında, Facebook ise 2017 yılında teste başladı.

Akamai ve Mozilla da standardın geliştirilmesine katkıda bulunuyor. Kasım 2018 IETF toplantısına Facebook, Apple, Google, Mozilla, NetApp, LiteSpeed Tech gibi firmalardan temsilciler katıldı. LiteSpeed çalışan ilk HTTP/3 sunucusunu ortayı çıkarmayı başardı. Cloudflare de QUIC protokolünü beta olarak yürütüyor. Bu yıl içerisinde ana yazılım üreticileri bu standardı kullanmaya başlayacak.

Technopat olarak biz de sunucularımızı HTTP/3’ü destekleyecek şekilde güncelledik ve hazırlıklarımızı yaptık. Bu aşamada CloudFlare’in de desteği ile birlikte yeni protokolü bu yıl içerisinde kullanmaya başlayarak sizlere çok daha hızlı bir internet deneyimi sunmak için sabırsızlanıyoruz!