QUIC Protokolü Nedir?



Bu yazımda yeni nesil QUIC transport protokolü hakkında bilmeniz gerekenleri açıklamaya çalışacağım.

Taşıma katmanındaki protokoller:

? UDP (Kullanıcı Datagram Protokolü) IP üzerinden veri göndermeye yarar. Ancak, UDP paketlerinin üst sınırı vardır ve verilerin ulaşacağını garanti etmez. Diğer taraftan, UDP bağlantısız ve son derece basit bir protokoldür.
? TCP (İletim Kontrol Protokolü), IP üzerinden erişilmesi garanti edilen ve verilerin herhangi bir boyutta gönderilmesine izin veren bir protokoldür. UDP'den farklı olarak, TCP'de, iletişim kurmadan önce iki aygıt birbirine bağlanmalıdır.
? QUIC(Çabuk UDP İnternet Bağlantıları), üzerinde daha kararlı veri akışı sağlayan bağlantı yönelimli bir aktarım protokolüdür. Bağımsız TCP bağlantısına benzer şekilde, Sıfır Gidiş Dönüş Süresi Devam Ettirme (0-RTT) özelliği ile bağlantı gecikmesini sıfıra indirebilir. Bu protokolü, UDP'nin üzerine eklenen HTTP / 2 ile yeni bir protokol (muhtemelen HTTP / 3) olarak tanımlamak mümkündür.
SPDY ile kazanılan tecrübe ile ilk olarak 2012 yılında Google tarafından geliştirilen bu taşıma protokolü, güvenlik özelliklerini hızlı bağlantı süreleri ile birleştiriyor.





QUIC Protokolünü İlginç Yapan Nedir?

QUIC, gecikmeyi azaltmak için tasarlanmıştır. Bunu, iyileştirilmiş paket kaybı kontrolü, çoklu bağlantı desteği ve azalan varış ve kalkışlarla mümkün kılar.
QUIC, çekirdekte değil, kullanıcı alanına entegre edilmiştir. Bu sayede geliştiriciler gerekli optimizasyonları ve iyileştirmeleri daha esnek bir şekilde yapabilirler. Bu açıdan QUIC, TCP'den farklıdır. Çünkü TCP çekirdeğe yerleştirilmiştir. Geliştiriciler yeterince esnek olamaz çünkü çekirdek güncellemeleri kullanıcı güncellemelerinden daha az sıklıkla gerçekleşir.
QUIC ayrıca TLS 1.3 ile güçlü güvenlik özellikleri içerir. İlk QUIC veri alışverişi, TLS 1.3 değişimini TCP ile gördüğümüz üç yollu değişim ile birleştirir. QUIC, TLS'nin kayıt katmanını kendi formatıyla değiştirir, ancak TLS değişim mesajlarını aynı tutar. HTTP / 1 ve HTTP / 2 de zaten TLS 1.3 kullanıyor.



Neden TCP değil de UDP?

İlk görünüşte, TCP çok daha karmaşık ve işlevsel bir protokoldür, ancak biraz külfetli. Öyleyse Google neden doğrudan TCP protokolünü iyileştirmeye çalışmadı? Aslında burada biraz karmaşıklaşıyor. TCP genellikle işletim sistemi çekirdeğine gömülü olarak işlev görür. Google, TCP'ye dayalı bir şey yapmak isteseydi, protokol üzerinde hiçbir kontrolü olmayacaktı. Google'ın ifadelerindeki "QUIC, yeni fikirler üretmek ve deneyim kazanmak için bir test ortamı sunar" ifadesi, UDP'nin neden tercih edildiğini ifade etmek için yeterli olmalıdır.
Google, QUIC standardının TCP ve TLS'de(Taşıma Katmanı Güvenliği) bir yer bulacağını umuyor. Elbette bu bir gecelik iş değil, ancak UDP seçimi burada da önemli bir rol oynuyor. Google sıfırdan bir iletişim protokolü oluşturmaya çalışırsa, birçok makinenin entegre olması yıllar alır, ancak UDP her yerdedir.








QUIC Gecikmeyi Nasıl Azaltır?


QUIC gecikmeyi birkaç şekilde azaltır:

? Gelişmiş Çoklu Bağlantı Desteği: TCP protokolü üzerinden HTTP/2 çoklu bağlantılar tek bir bağlantıya yüklenir. Bu nedenle, tek bir paket kaybı veya yeniden iletim, paralel olarak indirilen tüm kaynakların hat başı engelleme (HOLB) özelliği ile bloke edilmesine neden olur. İlk paket, indirme hattının geri kalanını tutar. QUIC, HOL engellemesini kaldırarak bu çoklu bağlantı sınırlamasının üstesinden gelir.
? Daha Az Gidiş-Dönüş: QUIC, yeni bir bağlantı kurmak için gereken gidiş-dönüş seferlerini azaltmaya odaklanmıştır. Buna el sıkışma, şifreleme ve ilk veri talebi aşamaları da dahildir. QUIC, ayrı bir paket yerine başlangıç paketine eşleştirme bilgisi ekleyebilir. QUIC sunucuları, başvurulabilecek bir statik yapılandırma kaydı yayınlar. QUIC alıcıları, zaman kaybı olmadan sunucuya yeniden bağlanabilmeleri için eşleşme tanımlama bilgisini saklar.
? Geliştirilmiş Paket Kaybı Yönetimi: QUIC, birçok modern teknikle paket kaybını çözebilir. QUIC, paket kaybını azaltmak için paket sınırlarını kriptografik blok sınırları ile numaralandırabilir. Ek olarak, paketleri iyileştirilmiş tıkanıklık kontrolü ile bant genişliği tahminine göre düzenleyebilir. Ayrıca QUIC, en önemli paketlerin kopyalarını gönderebilir.
QUIC'in taşıma protokollerinin gelişimini hızlandıracağı umulmaktadır. QUIC'in esnekliği aynı zamanda hızlı gelişime de izin verir. Yakın gelecekte bu protokoldeki gelişmeleri duymak mümkündür.