Web, kesin anlaşmalarla bir arada tutulur. Bir Content-Length alanı her adımda aynı anlama gelmelidir. Bir önbellek, doğrulama gerektiren bir yanıtı yeniden kullanmamalıdır. Hatalı bir HTTP/3 alan bölümü, doğru kapsamda başarısız olmalıdır. Güvenli bir yöntem, bir ters proxy'den geçtikten sonra da güvenli kalmalıdır.
Webship 1.3.1 bir kural etrafında inşa edilmiştir: hız, ancak byte’lar anlamlarını koruduğunda önemlidir.
İşte bu nedenle Webship’i dünyadaki en RFC-uyumlu genel amaçlı web sunucusu olarak tanımlıyoruz. Bu, her RFC’deki tüm isteğe bağlı özelliklerin mevcut olduğunu iddia etmek değil, görünür bir sınırı olan mühendislik iddiasıdır. Aşağıdaki harita, Webship’in aktif sunucu davranışını veya sahip olduğu protokol temellerini etkileyen 52 RFC’ye isim vermektedir. Mevcut standartlar önce gelir. Yerine geçen belgeler uyumluluk kökeni olarak tanımlanır. Taslak spesifikasyonlar RFC olarak yeniden adlandırılmaz.
Uyumluluk bir rozet değil, davranıştır
Webship, üretim sunucularının en sık belirsizleştiği yerlerde standartları uygular:
- HTTP/1.1 çerçevelemesi, çelişkili uzunlukları, geçersiz transfer kodlamalarını, aşırı büyük istek hedeflerini, hatalı parçaları ve istek kaçırma biçimlerini reddeder.
- HTTP/2 ve HTTP/3 yasaklanmış bağlantı alanlarını reddeder, sahte alanları doğrular, sıkıştırılmış alan bölümlerini sınırlar ve akış hatalarını bağlantı hatalarından ayrı tutar.
- Statik dosyalar, HEAD semantiğini, doğrulayıcıları, ön koşul sırasını, bayt aralıklarını, yönlendirmeleri ve içerik türlerini korur.
- Ters vekil, hop-by-hop alanlarını kaldırırken çerçevelemeyi, iptali, ekleri, yükseltmeleri, güvenli tekrar denemeleri ve yönlendirme kimliğini korur.
- Önbellek, önbelleğe almayı bir anahtar-değer kısayolu olarak ele almak yerine, yaş, tazelik, yeniden doğrulama, Vary, geçersiz kılma ve bayat kullanım kurallarını hesaplar.
- TLS, QUIC, ACME, erken veri ve WebTransport, sınırlı durum ve açık başarısızlık politikası kullanır.
Aynı kurallar hızlı yolda da geçerlidir. Webship, tek bir “doğru” yol ve farklı bir kıyaslama yolu tanımlamaz.
HTTP anlambilimi, çerçeveleme, önbellekleme ve vekillik
- RFC 3986 — Tekdüze Kaynak Tanımlayıcı (URI): Genel Sözdizimi. Webship, önbellek geçersiz kılma kararlarından önce, nokta segmentleri de dahil olmak üzere göreli Location ve Content-Location başvurularını normalize eder.
- RFC 6455 — WebSocket Protokolü. Reverse-proxy yükseltmeleri WebSocket anahtarını, kabul değerini, alt protokolü, uzantıları ve tünel geçişini doğrular.
- RFC 6585 — Ek HTTP Durum Kodları. Aşırı büyük istek alanları, bir HTTP yanıtı hala mümkün olduğunda tanımlanmış 431 yanıtını kullanır.
- RFC 6797 — HTTP Sıkı Taşıma Güvenliği. Strict-Transport-Security yalnızca güvenli taşıma üzerinden yayınlanır ve asla taşıma tarafsız önbellek kaydından açık metin HTTP'ye sızmaz.
- RFC 7235 — HTTP/1.1 Kimlik Doğrulama. Kimlik doğrulama şeması belirteçleri büyük/küçük harf duyarsız olarak ayrıştırılır, korunan MCP kontrol yüzeyi dahil. Genel HTTP semantiği artık RFC 9110'da bulunmaktadır.
- RFC 7239 — İletilen HTTP Uzantısı. Operatörler, standart tabanlı bir Forwarded alanı, eski X-Forwarded alanlarını, her ikisini veya hiçbirini seçebilir; güvenilmeyen gelen kimlik alanları önce kaldırılır.
- RFC 7540 — HTTP/2. Bu, HTTP/2 uyumluluk soy geçmişi olarak korunmaktadır; aktif HTTP/2 sözleşmesi onun halefi olan RFC 9113'tür.
- RFC 7541 — HPACK: HTTP/2 için Başlık Sıkıştırma. Webship’e ait HTTP/2 yığını, HPACK kablo formatını ve Huffman kodlamasını korurken çözücü durumunu ve kodlayıcı tablolarını sınırlar.
- RFC 7838 — HTTP Alternatif Servisleri. Alt-Svc, URL tarafından temsil edilen kaynağı değiştirmeden bir HTTP/3 uç noktasını duyurur.
- RFC 8441 — HTTP/2 ile WebSocket Başlatma. Webship, downstream genişletilmiş-CONNECT müzakere temelini destekler. Bir HTTP/1.1 upstream’in HTTP/2 genişletilmiş CONNECT uyguladığını iddia etmez; desteklenmeyen upstream kombinasyonları açıkça başarısız olur.
- RFC 8470 — HTTP’de Erken Veriyi Kullanma. Webship tarafından işlenmeyecek erken istekler, güvensiz tekrar oynatma varsayımlarıyla ele alınmak yerine 425 Too Early yanıtı alır.
- RFC 8941 — HTTP için Yapılandırılmış Alan Değerleri. HTTP öncelik değerleri yapılandırılmış alan sözlüğü ayrıştırmasını kullanır; hatalı isteğe bağlı alanlar tamamen görmezden gelinir.
- RFC 9110 — HTTP Semantiği. Yöntemler, durum kodları, alanlar, doğrulayıcılar, önkoşullar, yönlendirmeler, içerik metadata’sı, HEAD, CONNECT, OPTIONS ve aralık semantiği, protokol sürümleri arasında tek bir mevcut sözleşmeyi paylaşır.
- RFC 9111 — HTTP Önbellekleme. Webship, düzeltilmiş yaşı, açık tazeliği, Vary başlığını, sadece-önbellekten, tekrar doğrula (must-revalidate), vekil-tekrar doğrula (proxy-revalidate), güvenli eski kullanım ve geçerli ve ilişkili URI'lerin geçersiz kılınmasını uygular.
- RFC 9112 — HTTP/1.1. İstek satırı, alan, gövde uzunluğu, aktarım kodlaması, parça, ek, kalıcılık ve kapatma ile sınırlı kurallar, uygulama gönderiminden önce uygulanır.
- RFC 9113 — HTTP/2. Pseudo-alan sırası, yetki, yasaklı bağlantı alanları, TE kısıtlamaları, akış yaşam döngüsü, akış kontrolü, GOAWAY ve hata kapsamı, Webship’in sahip olduğu H2 yolu tarafından yönetilir.
- RFC 9114 — HTTP/3. Webship, HTTP/3 sunucusu tarafından kullanılan istek, kontrol akışı, AYARLAR, kritik akış, iptal ve akışa karşı bağlantı hata yollarının sahibidir.
- RFC 9204 — QPACK: HTTP/3 için Alan Sıkıştırma. Dinamik tablo kapasitesi ilan edilen sınırlama ile sınırlandırılmıştır, talimat akışları sıfır kapasitede bile çözümlenebilir durumda kalır ve geçersiz durum gerekli QPACK hatası haline gelir.
- RFC 9218 — HTTP için Genişletilebilir Önceliklendirme Şeması. Aciliyet ve kademeli teslim rehberi, bilinmeyen öncelik parametreleri genişletilebilir kalırken HTTP/3 planlamasını yönlendirir.
- RFC 9220 — HTTP/3 ile WebSocket Başlatma. Webship, modern tünellenmiş protokoller tarafından kullanılan HTTP/3 genişletilmiş-CONNECT SETTINGS temelini uygular; bu, her olası CONNECT protokolünün kabul edildiği anlamına gelmez.
- RFC 9297 — HTTP Datagramları ve Kapsül Protokolü. WebTransport oturumları, sınırlı kapsül çözümlemesi ve HTTP Datagram ilişkisi kullanır; bilinmeyen kapsüller, ayrıştırıcı hataları yerine genişletme noktaları olarak işlenir.
- RFC 9421 — HTTP Mesaj İmzaları. İsteğe bağlı Ed25519 yanıt kökeni, TLS veya uygulama kimlik doğrulamasının yerine geçmeden Webship sürümü ve yapılandırma kimliğini kapsayabilir.
- RFC 10008 — HTTP QUERY Yöntemi. Webship, QUERY'yi güvenli ve tekrarlanabilir olarak değerlendirir, proxy üzerinden iletilirken gövdesini korur, önbellek kimliğinde gövde ve temsil meta verilerini içerir, sezgisel tazeliğe izin vermez, koşullu ve aralık davranışını destekler ve yalnızca QUERY kullanıldığı için önbelleği geçersiz kılmaz.
QUIC taşıma ve tıkanıklık kontrolü
- RFC 3465 — Uygun Bayt Sayımı ile TCP Tıkanıklık Kontrolü. Uygun-bayt-sayımı mantığı, Webship’in QUIC uygulaması tarafından kullanılan NewReno tıkanıklık-kontrol hattının bir parçasıdır.
- RFC 4303 — IP Encapsulating Security Payload. Webship, IPsec ESP'yi uygulamaz; QUIC paket tekrarsızlaştırıcısı, sadece uygulama soy ağacı olarak RFC'nin kaydırmalı pencere anti-tekrar tekniğini kullanır.
- RFC 5681 — TCP Tıkanıklık Kontrolü. Kayıp ve yeniden sıralama eşik değerleri, QUIC'in TCP uygulamasına dayandığı yerlerde yerleşik tıkanıklık kontrolü kısıtlamalarını devralır.
- RFC 6298 — TCP’nin Tekrar Gönderme Zamanlayıcısını Hesaplamak. Düzleştirilmiş gidiş-dönüş süresi ve varyans hesaplamaları, QUIC kurtarma modeline katkıda bulunur.
- RFC 8312 — Hızlı Uzun Menzilli Ağlar için CUBIC. Bu, algoritma soyunu korumak için tutulan önceki CUBIC spesifikasyonudur; RFC 9438 şu anki standarttır.
- RFC 8899 — Datagram Taşımaları için Paketleme Katmanı Yol MTU Keşfi. Yapılandırılabilir DPLPMTUD, kırılgan ağ katmanı sinyallerine bağlı kalmadan kullanılabilir QUIC datagram boyutunu keşfeder.
- RFC 8999 — QUIC’in Sürümden Bağımsız Özellikleri. Uzun başlıklar, bağlantı kimlikleri, sürüm müzakeresi ve değişmez ayrıştırma, sürüme özel bir çözücü çalışmadan önce güvenli kalır.
- RFC 9000 — QUIC: UDP Tabanlı Çoklu ve Güvenli Taşıma. Bağlantı Kimlikleri, akışlar, akış kontrolü, taşınma, adres doğrulama, Tekrar deneme, durumsuz sıfırlama, taşıma parametreleri ve kapatma davranışı Webship’in HTTP/3 taşıma temelini oluşturur.
- RFC 9001 — QUIC'i Güvenli Hale Getirmek İçin TLS Kullanımı. Başlangıç gizli anahtarları, paket koruması, başlık koruması, Tekrar deneme bütünlüğü, anahtar aşamaları ve TLS entegrasyonu QUIC-TLS kurallarına uyar.
- RFC 9002 — QUIC Kayıp Tespiti ve Tıkanıklık Kontrolü. Paket numarası alanları, onaylar, PTO, kayıp tespiti, kurtarma ve tıkanıklık hesaplaması taşıma güvenilirliğini sağlar.
- RFC 9221 — QUIC'e Güvensiz Datagram Uzantısı. Pazarlıklı QUIC DATAGRAM çerçeveleri, WebTransport trafiğini akış içeriğine dönüştürmeden güvensiz şekilde taşır.
- RFC 9287 — QUIC Bit'in Yağlanması. QUIC bit yağlaması, müzakere güvenliğini korurken katılaşmayı azaltır.
- RFC 9308 — QUIC Taşıma Protokolünün Uygulanabilirliği. Sınırlı boşta süre ve dağıtım rehberi gibi operasyonel varsayılanlar, Webship’in üretim taşıma politikasını bilgilendirir.
- RFC 9369 — QUIC Sürüm 2. Sürüm 2 paket türleri, başlangıç anahtarları, Retry bütünlüğü, anahtar güncellemeleri ve sürüm müzakeresi, QUIC v1 ile birlikte uygulanmıştır.
- RFC 9438 — Hızlı ve Uzun Mesafeli Ağlar için CUBIC. Mevcut CUBIC standardı, Webship’in CUBIC tıkanıklık denetleyicisini yönetir; iş yükü gerektiğinde BBR ve NewReno seçilebilir olarak kalır.
TLS, sertifikalar ve otomatik sertifika yönetimi
- RFC 3339 — İnternette Tarih ve Saat: Zaman Damgaları. ACME yenileme pencereleri birlikte çalışabilir İnternet zaman damgalarını kullanır.
- RFC 4648 — Base16, Base32 ve Base64 Veri Kodlamaları. ACME JOSE değerleri ve WebSocket el sıkışma materyali, gerekli Base64 ve Base64url alfabelerini ve dolgu kurallarını kullanır.
- RFC 5280 — İnternet X.509 PKI Sertifika ve CRL Profili. Sertifika ayrıştırma ve oluşturulan zorluk sertifikaları doğru DNS ve ikili IP subjectAltName biçimlerini kullanır.
- RFC 5869 — HMAC tabanlı Çıkarma ve Genişletme Anahtar Türetme Fonksiyonu. HKDF-SHA-256 ve HKDF-SHA-384 türetmesi, çıktı sınırları dahil, TLS ve QUIC anahtarlarını destekler.
- RFC 6066 — TLS Uzantıları. SNI DNS kimliklerini seçer, oysa literal IP adresleri sıradan HostName formundan doğru şekilde hariç tutulur.
- RFC 7301 — TLS Uygulama Katmanı Protokol Müzakeresi. ALPN, TLS sınırında HTTP/1.1, HTTP/2, HTTP/3 ve izole ACME doğrulama protokolünü seçer.
- RFC 7638 — JSON Web Key Başparmağı. ACME hesap anahtarı başparmak izleri, kanonik JWK biçiminde türetilir.
- RFC 7807 — HTTP API’leri için Problem Detayları. Webship, RFC 8555 ACME sunucularının gerektirdiği problem-dökümanı formatını kullanır. Daha yeni Problem Detayları spesifikasyonu, yeni genel amaçlı API’ler için bunu geçersiz kılar, ancak ACME’nin normatif bağımlılığı açıkça devam etmektedir.
- RFC 8446 — TLS 1.3. Webship, oturum biletleri, anahtar güncellemeleri, uyarılar, erken veri politikası ve QUIC anahtar türetmeyi içeren genel TLS için TLS 1.3 kullanır.
- RFC 8555 — Otomatik Sertifika Yönetim Ortamı. Hesap, sipariş, yetkilendirme, doğrulama, sonuçlandırma, sertifika indirme ve yenileme akışları sınırlı girdi işleme ile otomatikleştirilmiştir.
- RFC 8737 — ACME TLS-ALPN-01 Mücadelesi. Sadece mücadele amaçlı bir TLS yolu yalnızca acme-tls/1'yi müzakere eder ve gerekli kritik acmeIdentifier sertifika uzantısını sunar.
- RFC 8738 — ACME IP Tanımlayıcı Doğrulama Uzantısı. Webship, IPv4 ve IPv6 sertifika siparişlerini, ikili IP SAN'larını ve IP TLS-ALPN-01 doğrulaması için ters adres SNI'yi desteklemektedir.
- RFC 9525 — TLS'de Hizmet Kimliği. DNS adları ve IP kimlikleri mevcut hizmet-kimliği kuralları altında eşleştirilir, IP adresleri için joker karakter veya ortak ad kısayolları kullanılmaz.
- RFC 9773 — ACME Yenileme Bilgisi Uzantısı. Yenileme pencereleri CA'dan gelebilir ve bu, Webship’in yenilemeleri tek bir katı yerel program kullanmak yerine güvenli bir şekilde yaymasına olanak tanır.
WebTransport: standartlaştırılan şey hakkında kesin
HTTP/3 üzerinden WebTransport, elli üçüncü RFC olarak sayılmamaktadır. Webship 1.3.1 itibarıyla, onun iletim eşlemesi hala draft-ietf-webtrans-http3-16 olarak kalmaktadır. Webship, bu taslağı standartlaştırılmış HTTP/3, genişletilmiş CONNECT, QUIC DATAGRAM, HTTP Datagram ve yukarıda adı geçen Capsule katmanlarının üzerine uygular. Ayrıca, bir WebTransport akışı sıfırlandığında güvenilir bir oturum tanımlayıcı ön eki korumak için gerekli olan müzakere edilmiş RESET_STREAM_AT uzantısını da uygular.
Bu ayrım önemlidir. Bir taslağı RFC olarak adlandırmak, standart uyumluluğunu artırmaz. Bunu artıran, taslağı açıkça takip etmek, onu sıradan HTTP yollarından izole etmek, her uzantıyı müzakere etmek, her oturum kaynağını sınırlandırmak ve iptal ve başarısızlık davranışını test etmektir.
Üretimde bu kapsam neden önemlidir
Bir standart hatası nadiren izole olur. Yanlış HSTS işleme bir önbellek sınırını aşabilir. Hatalı bir QPACK talimatı ilgisiz istekleri sonlandırabilir. Güvensiz bir erken veri varsayımı bir işlemi tekrar oynatabilir. İstek gövdesini atlayan bir QUERY önbellek anahtarı farklı bir sorgunun sonucunu döndürebilir. Ekleri kaldıran veya iptali yanlış yöneten bir proxy, bir uygulama protokolünü sessizce değiştirebilir.
Webship’in mimarisi bunları bağlantılı konular olarak ele alır. Ayrıştırıcı sınırları, güvenlik denetimi, önbelleğe alma, ters proxyleme, taşıma durumu ve ölçümlemeler açık sözleşmeleri paylaşır. Sonuç, her mod için doğruluk tanımını farklı tanımlamadan HTTP/1.1, HTTP/2, HTTP/3, statik teslimat, ters proxyleme, akış ve WebTransport arasında geçiş yapabilen tek bir sunucudur.
İddiayı doğrula
Bir üstlük ifadesini güvenerek kabul etmeyin. [Webship 1.3.1 dokümantasyonunu](/docs/1.3.1) okuyun, yapılandırmayı ve protokol sınırlarını inceleyin ve yayımlanmış davranışı yeniden üretin. Sonra [Webship'i indirin](/downloads) ve sisteminiz için önemli olan uç durumları test edin.