Kriko


Bizimle iletişim kurmak için aşağıdaki kanalları kullanabilirsiniz:

merhaba@kriko.io

veya
İletişim Formu

kriko.io / Blog  / Vee Karşınızda: HTTP/3

Vee Karşınızda: HTTP/3

IETF tarafından şu anda deneysel olarak geliştirilen HTTP-QUIC protokolünün HTTP/3 olarak yeniden adlandırılmalı yönünde bir öneri geldi. Önümüzdeki dönemlerde HTTP/3, SSL ve TCP'nin bir birleşimi olacak. Böylelikle TCP kurulumunda SSL el sıkışmalarını dahil ederek ilk bağlantı süresinin kısalması sağlanacak. Ayrıca SSL oturumlarının yeniden kullanımında da faydalanabilir; ve bu da HTTP (HTTP/2 dahil) üzerindeki yüküni azaltacağı anlamına geliyor.

1999'da piyasaya sürülen HTTP/1.1'den, 2015'de hayatımıza giren HTTP/2 sürümüne baktığımızda, aslında 2 sürüm arasında uzun bir zaman olduğu ve protokolün geliştirilmesi açısından da büyük bir boşluk olduğu aşikar. Şimdi ise 2019'da HTTP/3'ün sinyallerini alıyoruz. HTTP/3, Google'ın geliştirdiği QUIC protokolünün evrimleşmiş bir versiyonu. Bu öneri ise Mark Nottingham tarafından şurada yapılmış ve ardından çalışmalar da başlatılmış.

TCP iyi ama çevresi kötü!

TCP, bir konumdan diğerine uzun ömürlü, minimum hatalarla en iyi duruma getirilmiş solid bir protokoldür. Bilgisayarlar ile veri iletme/alma birimleri arasında organizasyonu sağlayan, böylece bir yerden diğerine veri iletişimini olanaklı kılan pek çok veri iletişim protokolüne verilen genel addır (TCP/IP protokolleri, bilgisayarlar arası veri iletişiminin kurallarını koyar). Bu protokollere örnek olarak, dosya alma/gönderme protokolü FTP (File Transfer Protocol), Elektronik posta iletişim protokolü SMTP (Simple Mail Transfer Protocol), TELNET protokolü (Internet üzerindeki başka bir bilgisayarda etkileşimli çalışma için geliştirilen *login* protokolü) verilebilir. (1)

Protokol ilk tasarlandığında FTP ve ilk web uygulamaları gibi uygulamalar için idealdi. Ancak, HTTP protokolü günümüzde çok sayıda uygulamada kullanılmakta. Artan bağlantılar kısa ömürlü olup, birden fazla alıcıya gönderiliyor (Örn: video yayını gibi).

HTTP'nin TCP katmanını terk etmesi gerçeği, daha düşük seviyeli deneylere de açık olduğu anlamına geliyor. QUIC desteği, SPDY'de yapıldığı gibi Google Chrome'da (ve diğer Chromium tabanlı tarayıcılarda) zaten yaygın bir şekilde kullanıldı. Ayrıca Caddy web sunucusu ve Lite Speed ​​ürünlerinde de QUIC desteği var.

Resmi bir HTTP/3 standardı olarak "HTTP-over-QUIC" benimseme süreci şu anda yolda. Kullanıcıların ve cihazların web'e nasıl eriştiği konusunda çok fazla değişiklik olurken, benimseme işleminin HTTP/2'ye benzer olması bekleniyor.

QUIC Nedir?

Chromium Projects sayfasında yer alan bilgiye göre:

QUIC (Hızlı UDP İnternet Bağlantısı), TCP ile karşılaştırıldığında gecikmeyi azaltan yeni bir veri taşıma aracıdır. QUIC, UDP üzerinde uygulanan TCP + TLS + HTTP / 2'ye oldukça benzer. TCP, işletim sistemi çekirdeklerinde ve orta katman firmware'lara uygulandığından, TCP'de önemli değişiklikler yapmak imkansızdır. Bununla birlikte QUIC, UDP'nin üst katmanına kurulduğundan, böyle bir sınırlamadan kaynaklı acı çektiğimiz günleri geride bırakacak.

Mevcut TCP + TLS + HTTP2 üzerinden QUIC'in temel özellikleri şunlardır:

  • Önemli ölçüde azaltılmış bağlantı kurma süresi
  • Geliştirilmiş tıkanıklık kontrolü (Improved congestion control)
  • Hat tıkanıklığı olmadan çoğullama (Multiplexing)
  • İleri hata düzeltme (Forward error correction)
  • Bağlantı geçişi (Connection Migration

Google, Chrome'dan Google sunucularına gönderilen tüm isteklerin yaklaşık yarısının QUIC üzerinden sunulduğunu ve QUIC trafiğinin artmaya devam ettiğini, bunun sonucunda da Google istemcilerinden -Chrome ve mobil uygulamalar- Google sunucularına veri aktarımında varsayılan protokol olarak kullanıldığını şurada söylüyor. Ayrıca Google, QUIC'in bir internet standardı olması için IETF'e resmi olarak bir teklif sunmayı planlıyor. Fakat öncesinde kontrol formatını değiştirmek ve referans uygulamalarını SPDY-over-QUIC'den HTTP2-over-QUIC'e (mevcut HTTP üzerinden) güncellemek gibi yapılacak bazı temizlik işleri var (QUIC protokol taslağı yeni yayımlanan TLS 1.3 protokolünü kullanır). Gelecek aylarda Google, sunucu tarafında daha iyi ölçeklenebilirlik sağlamak, ileri hata düzeltme ve tıkanıklık denetimini (congestion control) iyileştirmek ve çok yollu (multipath) bağlantılara destek eklemek için çalışma yapmayı da planlıyor. (2)

QUIC'deki bir başka harika özelliği ise mobil destek. Dizüstü bilgisayarınız ile farklı WiFI ağlarına taşınırken veya cep telefonunuzla dolaşırken, IP adresiniz değişebilir. İşletim sistemi ve protokoller eski bağlantıları düzgün kapatmaz ve yeni bağlantılar açar. QUIC ile bir bağlantı geleneksel bir "soket" (kaynak / hedef bağlantı noktası / adres protokolü kombinasyonu) değil, bağlantıya atanan bir 64 bit tanımlayıcıdır.

Böylece hareket ederken IP adresiniz değişse bile, YouTube'dan kesintisiz olarak yayına devam edebilir veya video görüşmesindeyken bağlantı düşmeden devam edebilirsiniz. İnternet mühendisleri yıllardır "mobil IP" ile mücadele ediyor ve işe yarar bir çözüm bulmaya çalışıyorlar. Sabit bir IP adresini bir şekilde uçtan uca tutmanın ilkesine odaklanmışlardı ki, hiç de pratik bir çözüm olduğu söylenemez. QUIC, yani HTTP/3'ün bu sorunu nihayet çözdüğünü görmek ise süper!

Aşağıda ise bir reddit kullanıcısından TCP ve QUIC üzerine harika bir açıklaması var:

Günümüzde yaptığımızdan çok daha büyük paket kaybına sahip ağlar üzerinden paketler gönderdiğimizde ve bilgisayar sistemlerinin TCP mesajlarını yanıtlamak için çok daha uzun sürdüğü durumlarda TCP geliştirildi. Örneğin bir ana bilgisayara bağlanmak için zaman aşımı, TCP el sıkışmasının tek başına 5 saniyede bile tamamlanamaması durumunda bir yanıt almanız pek olası olmasa da hala 20 saniyedir. Bu uzun gecikmeler, ağ bağlantılı uygulamaların bazen uzun bir süre boyunca takılmasının nedenleridir. Protokol, 70'lerde icat edildiğinden bu gecikmelere değinmedik, ancak güvenilirlik ve hız konusunda muazzam gelişmeler gördük.

Sonunda paketleri değiştirmeyecek ve mevcut TCP uygulamalarıyla büyük ölçüde uyumlu olan bu varsayılanları azaltmak yerine, protokol geliştiricileri UDP'yi kullanmaya başladı ve daha sonra kendi TCP'lerini uygulamaya başladı. IPv6'ya geçiş, TCP'yi, çoğunlukla zaman aşımları, pencere boyutu ve TCP yavaş başlatma gibi birçok sorunu gideren bir sürüme güncellemek için ideal zaman olurdu. Bazı değerler işletim sisteminizde düzeltilebilir, ancak en rahatsız edici olan zaman aşımını yapamaz. 5 saniye boyunca kilitlenen bir TCP soketini öldürürseniz, işletim sisteminiz 20 saniye geçene kadar sistem kaynaklarını tüketmeye devam eder.

Referanslar:
(1) https://www.ip-adres.com/bilgi/tcp-ip-protokolleri
(2) https://dev.to/grigorkh/what-is-http3--4pib

Yorum yaz