- Bir web sitesi HTTPS DNS kaydında HTTP/3 desteğini yayımlarsa, tarayıcı ilk bağlantıdan itibaren QUIC/HTTP/3 kullanabilir ve bir bağlantı gidiş-dönüşünü azaltabilir
- Tarayıcılar ya önce HTTP/1 veya HTTP/2 ile bağlanıp
Alt-Svc başlığını okuyarak ya da DNS sorgusu aşamasında HTTPS kaydını okuyarak HTTP/3 desteğini keşfeder
- Firefox Nightly ölçümlerinde bağlantıların %31,4’ü HTTP/3 bilgisini yalnızca
Alt-Svc başlığıyla duyurdu; bu durumda HTTP/3 yalnızca sonraki bağlantılarda kullanılır {p:31}
- HTTPS kayıtları
alpn, ech, ipv4hint, ipv6hint içerir; böylece ilk bağlantının protokol seçimi, ECH ve adres ipuçları DNS yanıtı içinde sağlanır
- HTTPS kayıtları mevcut istemciler için ek olarak çalışır ve
Alt-Svc, kaydı alamayan istemciler için fallback olarak korunmalıdır
Temel kavram
- Tarayıcılar bir sitenin HTTP/3 desteğini iki şekilde keşfeder
- Önce HTTP/1 veya HTTP/2 ile bağlanıp ardından
Alt-Svc HTTP başlığını okuma yöntemi vardır
- Bağlantı açılmadan önce HTTPS DNS kaydı sorgusunda bunu doğrudan görme yöntemi vardır
- Tarayıcı yalnızca HTTPS DNS kaydı kullanıldığında ilk bağlantıdan itibaren HTTP/3 kullanabilir; bu da QUIC sayesinde bir gidiş-dönüşü azaltır
- Firefox Nightly’nin son derlemelerinin ortalama tahminine göre bağlantıların %31,4’ü HTTP/3 desteğini DNS yerine yalnızca
Alt-Svc başlığıyla duyurdu
- Şu anda bu sunucuya olan tek bir gidiş-dönüş yaklaşık 28ms olarak ölçülüyor
Alan adı kontrolü
- savearoundtrip.com, h3, IP ipuçları ve ECH içeren HTTPS kayıtlarını kendisi yayımlar
- Girdiğiniz alan adının HTTPS kaydı, tarayıcıda Cloudflare’ın DNS-over-HTTPS uç noktası üzerinden sorgulanır
Alt-Svc başlığı ve gerçek HTTP/3 el sıkışması doğrudan tarayıcıda doğrulanamaz
- CORS, farklı origin’lerden gelen başlıkları gizler
- Tarayıcı soğuk bir QUIC bağlantısını zorla oluşturamaz
- Girilen alan adı küçük bir açık kaynak backend’e gönderilir; bu backend yalnızca
Alt-Svc kontrolü ve gerçek HTTP/3 el sıkışması kontrolünü yapar
- Veriler saklanmaz ve gerçek HTTP/3 el sıkışması quic-go ile gerçekleştirilir
Bir gidiş-dönüşün maliyeti
- Bir gidiş-dönüş, sunucuya bir mesaj gönderip yanıt alma sürecidir ve ışık hızıyla sınırlıdır
- Yaklaşık gidiş-dönüş süresi aynı şehir içinde 5~20ms, ülkeler arasında 40~80ms, okyanus aşırı veya mobil ağlarda 150ms ve üzeridir
- Cloudflare Radar gerçek zamanlı değerler sunar
- Yaklaşık 100ms altındaki etkileşimler anlık hissedilir; bunun üzeri bekleme hissi verir
- Bu sayfada bağlantının başlamasından ilk boyamaya kadar yaklaşık 41ms geçti ve bu sunucuya olan gerçek zamanlı tek bir gidiş-dönüş yaklaşık 28ms
- Yayımlanmış HTTPS kaydı, tarayıcının ilk bağlantıda TCP yerine QUIC kullanmasını sağlayarak bu gidiş-dönüş süresini azaltabilir
- Bu sayfa statik ve küçük olduğu için toplam zaman bütçesi düşüktür; ancak gerçek uygulamalarda da bir gidiş-dönüş ön tarafta ödenen sabit bir maliyettir ve birden çok origin için tekrar edilebilir
Boşa harcanan gidiş-dönüş
Alt-Svc, RFC 7838 kapsamında tanımlanan bir HTTP yanıt başlığıdır
- İstemcinin
Alt-Svc başlığını okuyabilmesi için önce TCP bağlantısını açmış, TLS el sıkışmasını tamamlamış ve HTTP/1.1 ya da HTTP/2 ile isteği bitirmiş olması gerekir
- Bu yaklaşımda sunucunun HTTP/3’ü de desteklediği ancak önceki bağlantıdan sonra öğrenilir; dolayısıyla HTTP/3’e geçiş bir sonraki bağlantıda gerçekleşir
- RFC 9460 ile tanımlanan HTTPS kaydı, aynı HTTP/3 destek sinyalini DNS içine taşır
- İstemci bu kaydı zaten yaptığı isim çözümlemesi sırasında okuduğu için bağlantıyı açmadan önce HTTP/3 desteğini öğrenebilir
- HTTPS DNS kaydı kullanıldığında ilk bağlantıdan itibaren QUIC/HTTP/3 kullanılabilir; önce HTTP/1 veya HTTP/2 bağlantısı tüketmek gerekmez
HTTPS kayıtlarının daha iyi olmasının nedeni
-
İlk bayttan önce HTTP/3 keşfi
alpn SvcParam, uç noktanın desteklediği ALPN protokol kimliklerini listeler
- Örnekler arasında
h3 yani HTTP/3 ve h2 bulunur
- Bu bilgi isim çözümlemesi sırasında geldiği için istemci
h3 desteğini önceki bir HTTP/1 veya HTTP/2 bağlantısından sonra öğrenmek yerine ilk bağlantıdan itibaren QUIC seçebilir
-
ECH: Şifrelenmiş Client Hello
ech SvcParam, uç noktanın ECHConfigList açık anahtarını içerir
- ECH, SNI sunucu adı dahil TLS ClientHello’yu şifreleyerek ağ gözlemcilerinin ziyaret edilen siteyi görememesini sağlar
- Bu sorun HTTP başlıklarıyla çözülemez; çünkü ilk ClientHello gönderilmeden önce açık anahtar gerekir
- Anahtar, henüz bağlantı yokken gerektiği için yalnızca DNS’teki HTTPS kaydı gibi bant dışı bir kanal ECH’yi bootstrap edebilir
- HTTPS RR olmadan ECH de kullanılamaz
-
IP ipuçlarıyla daha hızlı bağlantı başlangıcı
- Happy Eyeballs v3, A, AAAA ve HTTPS sorgularını paralel yürütür
- HTTPS yanıtındaki
ipv4hint ve ipv6hint, A/AAAA kayıtlarından önce geldiğinde bağlantı için aday adresler sağlar
- İstemci A/AAAA yanıtlarını beklemek yerine ipucu adresleriyle bağlantıyı başlatabilir
- A/AAAA kayıtları gelmeye devam eder ve geldiklerinde ipuçlarının yerini alır
Alt-Svc içinde buna karşılık gelen bir özellik yoktur
-
Tek otorite kaynağı ve önbellekleme
- Erişilebilirlik bilgisi, normal TTL ile DNS içinde kalabilir
Alt-Svc yaklaşımında bilgi origin bazlı HTTP başlık önbelleklerine dağılır ve bir max-age ikilemi ortaya çıkar
max-age çok uzunsa istemciler eski alternatifleri kullanır, çok kısaysa daha sık önceki protokole geri döner
- Tarayıcılar zaten DNS sorgusu yaptığı için HTTPS kayıtları bu sorgunun en uygun bağlantı bilgisini de taşımasını sağlar
-
Özellik karşılaştırması
- | Özellik |
Alt-Svc HTTP başlığı (RFC 7838) | HTTPS RR (RFC 9460) |
- | --- | --- | --- |
- | Öğrenme zamanı | Tam bağlantıdan sonra | DNS çözümlemesi sırasında |
- | İlk bağlantıda h3 | Mümkün değil | Mümkün |
- | IP ipuçları | Yok |
ipv4hint / ipv6hint |
- | ECH anahtarı | Mümkün değil |
ech parametresi |
- | Gerçeğin kaynağı | HTTP başlığı ve kırılgan önbellek | TTL’li DNS |
Gerçek tarayıcı ölçümleri
- Firefox Nightly ölçümlerinde tarayıcı HTTP/3 desteğini ya
Alt-Svc HTTP yanıt başlığıyla ya da HTTPS DNS kaydıyla öğrenebilir
Alt-Svc ancak bağlantı kurulduktan sonra görünür; HTTPS DNS kaydı ise bağlantıdan önce görünür
- Tüm bağlantılar dört gruptan birine girer
- Neither, HTTP/3’ün hiç duyurulmadığı bağlantıdır
- Alt-Svc only, yalnızca başlıkla duyurulan ve bu yüzden ilk bağlantıda HTTP/3 kullanılamayan bağlantıdır
- HTTPS record only, DNS üzerinden duyurulan ve ilk bağlantıdan itibaren HTTP/3’e gidebilen bağlantıdır
- Both, hem DNS hem de başlık üzerinden duyurulan bağlantıdır
- Ölçülen bağlantı oranları sırasıyla Neither %59,8, Alt-Svc only %31,4, HTTPS record only %2,8 ve Both %6’dır {b:60,31,3,6}
- Bu dört grup tüm bağlantıları kapsadığı için toplamları %100’dür
- HTTPS record only ve Both gruplarında kullanılabilir HTTPS kaydı vardı; Alt-Svc only ise kayıt olsaydı azaltılabilecek gecikme aralığıydı
- Bu değerler Firefox Nightly’nin GLAM histogramlarından yeniden oluşturulmuş bağlantı bazlı tahminlerdir ve son derleme ortalamaları olduğu için yaklaşık değerlerdir
HTTPS kaydı yayımlama
- h3 ve adres ipuçlarını duyuran bir ServiceMode HTTPS kaydı tek satırda yayımlanabilir
; zone file (BIND-style)
example.com. 3600 IN HTTPS 1 . alpn="h3,h2" ipv4hint=203.0.113.10 ipv6hint=2001:db8::10
example.com. kaydın yayımlandığı addır; sondaki nokta bunun tam alan adı olduğunu gösterir
3600, çözücünün kaydı önbelleğe alabileceği saniye cinsinden TTL değeridir
IN, tüm web kayıtlarında olduğu gibi internet DNS sınıfıdır
HTTPS, RFC 9460 tarafından tanımlanan kayıt türüdür
1, önceliktir; 1 ve üzeri, parametre taşıyan ServiceMode anlamına gelir
0, yalnızca başka bir hedefe işaret eden AliasMode’dur
. hedef ana makinedir ve example.com yani sahip adın kendisini ifade eder
alpn="h3,h2", sunucunun desteklediği protokolleri iyi bir sırayla listeler; h3 HTTP/3, h2 ise HTTP/2’dir
ipv4hint ve ipv6hint, istemcinin A/AAAA sorgularıyla birlikte hemen bağlantı başlatabileceği adreslerdir
- Cloudflare, Route 53 gibi çoğu yönetilen DNS sağlayıcısı HTTPS kayıt türünü doğrudan sunar
- Alan adının desteklenip desteklenmediği checker ile doğrulanabilir
Gerçek HTTPS kayıtlarının taşıdığı özellikler
- Firefox Nightly’de HTTPS kaydı görülen bağlantılarda hangi özelliklerin bulunduğunun oranı ölçüldü
- ALPN içindeki h3 oranı %80,3, IPv4 ipucu oranı %52,9’du
- IPv6 ipucu oranı %49,4, ECH oranı ise %12,8’di {b:80,53,49,13}
- Bu sayılar GLAM histogramlarından yeniden oluşturulmuş bağlantı bazlı tahminler olduğu için yaklaşık değerlerdir
SSS
-
CDN bunu otomatik yayımlıyor mu
- Bazı CDN’ler HTTPS kayıtlarını otomatik yayımlar
- Cloudflare, proxy kullanılan zone’lar için
alpn="h3" içeren HTTPS kayıtlarını otomatik sağlar
- Diğer CDN’lerde kullanıcıların bunu kendileri yapılandırması gerekir
- Kontrol etmenin en hızlı yolu yukarıdaki alan adı kontrolünü kullanmaktır
-
HTTPS kayıtları eski istemcileri bozar mı
- HTTPS kayıtlarını anlamayan istemciler bu kayıtları yok sayar ve normal A/AAAA sorgularına geri döner
- Hâlâ
Alt-Svc başlığı gönderiyorsanız bu istemciler o başlıktan da yararlanabilir
- HTTPS kaydı yayımlama yöntemi mevcut davranışa eklenen bir yöntemdir
-
Yeniden ziyarette ne olur
- İstemci bir kez HTTP/3 ile iletişim kurduktan sonra sonraki ziyarette QUIC bağlantısını 0-RTT ile sürdürebilir
- 0-RTT’de el sıkışma gidiş-dönüşü olmadan ilk istek hemen gönderilebilir
- HTTPS kaydının kendisi de diğer DNS yanıtları gibi TTL süresince önbelleğe alınır; bu yüzden sonraki ziyarette çoğunlukla sorgu da atlanır
-
Hangi tarayıcılar HTTPS kaydını kullanıyor
- Başlıca tarayıcı motorları HTTPS kayıtlarını varsayılan olarak etkin destekliyor
- Ziyaretçinin DNS-over-HTTPS’i açıp açmadığından bağımsız olarak bu kayıtları okurlar
- Safari işletim sistemi çözücüsünü kullanır
- Chrome kendi yerleşik çözücüsünü kullanır ve DoH veya normal DNS üzerinden çalışır
- Firefox her iki yöntemi de kullanabilir
-
Alt-Svc başlığını kaldırmalı mıyım
Alt-Svc başlığı kaldırılmamalıdır
- Eski istemciler ile HTTPS kaydını iletmeyen çözücüler veya ağlar için fallback olarak gönderilmeye devam etmelidir
- HTTPS kaydını okuyan tarayıcılar HTTP/3 desteğini DNS’ten öğrenir ve HTTP/3 keşfi için bir gidiş-dönüş harcamaz
1 yorum
Lobste.rs görüşleri
Bitince HTTPS DNS kaydı ayarlamayı planlıyorum
digsürümü 9.10.6, bu yüzden bu kayıt türünden daha eski bir sürüm gibi görünüyorApple’ın daha güncel bir
digsunması gerekirmiş gibi geliyor; macOS’ta DNS sorgusu yaparken tercih ettiğiniz bir araç var mı merak ediyorumBirden fazla platformda doggo kullanmayı seviyorum
Kusursuz değil ama genel olarak oldukça iyi çalıştı ve ihtiyaç duyduğum özelliklerin önemli bir kısmını karşılıyor
Homebrew ile kurduğum
ldnsiçindekidrillaracını kullanıyorumQUIC desteği olmasa bile
Neredeyse söylenebilecek tek şey, CSS’in LLM’den çıkmış gibi görünebilmesi
Ayrıca yazı çok geveze. Tekrarlar, işe yaramayan içerikler ve garip görselleştirmeler var; bu yüzden yaklaşık 1700 kelimelik metin tam genişlikte sayfada 7300 px’i aşıyor
500 kelime, 2 diyagram ve toplam uzunluk 2000 px’in altında olacak şekilde kısaltılırsa çok daha iyi olur