Webben hålls ihop av exakta överenskommelser. Ett Content-Length-fält måste betyda samma sak vid varje steg. En cache får inte återanvända ett svar som kräver validering. En felaktigt formaterad HTTP/3-fältssektion måste misslyckas på korrekt nivå. En säker metod måste förbli säker efter att den passerar genom en omvänd proxy.
Webship 1.3.1 är byggt kring en regel: hastighet räknas bara när byte behåller sitt betydelse.
Det är därför vi beskriver Webship som den mest RFC-kompatibla allmänna webbservern i världen. Detta är ett ingenjörspåstående med en tydlig gräns, inte ett påstående om att varje valfri funktion i varje RFC finns. Kartan nedan namnger de 52 RFC:er som påverkar Webships aktiva serverbeteende eller dess egna protokollgrunder. Nuvarande standarder kommer först. Ersatta dokument identifieras som kompatibilitetslinje. Utkastsspecifikationer får inte ometiketteras som RFC:er.
Kompatibilitet är beteende, inte en märkesbricka
Webship tillämpar standarder på de platser där produktionsservrar oftast blir tvetydiga:
- HTTP/1.1-ramverk avvisar motstridiga längder, ogiltiga överföringskodningar, överdimensionerade begäransmål, felaktigt formade chunkar och former av request-smuggling.
- HTTP/2 och HTTP/3 avvisar förbjudna anslutningsfält, validerar pseudo-fält, begränsar komprimerade fältsektioner och håller strömfel åtskilda från anslutningsfel.
- Statiska filer bevarar HEAD-semantik, validatorer, förhandsvillkorsordning, byteintervall, omdirigeringar och innehållstyper.
- Reverse proxy bevarar inramning, avbokning, släp, uppgraderingar, säkra omförsök och vidarebefordring av identitet samtidigt som man tar bort hopp-för-hopp-fält.
- Cachen beräknar ålder, färskhet, omvalidering, Vary, ogiltigförklaring och regler för användning av föråldrad data snarare än att behandla caching som en nyckel-värde-genväg.
- TLS, QUIC, ACME, tidiga data och WebTransport använder begränsat tillstånd och uttrycklig felpolicy.
Samma regler gäller på den snabba vägen. Webship definierar inte en "korrekt" väg och en annan referensväg.
HTTP-semantik, inramning, cachning och proxyanvändning
- RFC 3986 — Uniform Resource Identifier (URI): Generisk syntax. Webship normaliserar relativa Location- och Content-Location-referenser, inklusive punktsegment, före beslut om cache-ogiltigförklaring.
- RFC 6455 — WebSocket-protokollet. Reverse-proxy-uppgraderingar validerar WebSocket-nyckeln, acceptvärdet, delprotokoll, tillägg och tunnelövergång.
- RFC 6585 — Ytterligare HTTP-statuskoder. Överdimensionerade begäranfält använder det definierade 431-svaret där ett HTTP-svar fortfarande är möjligt.
- RFC 6797 — HTTP Strict Transport Security. Strict-Transport-Security sänds endast över säker överföring och läcker aldrig från en transportneutral cachepost till klartext-HTTP.
- RFC 7235 — HTTP/1.1-autentisering. Autentiseringsscheman tokens tolkas utan att beakta stora eller små bokstäver, inklusive den skyddade MCP-styrpanelen. Dess allmänna HTTP-semantik finns nu i RFC 9110.
- RFC 7239 — Forwarded HTTP Extension. Operatörer kan välja ett standardbaserat Forwarded-fält, äldre X-Forwarded-fält, båda eller inga; opålitliga inkommande identitetsfält tas bort först.
- RFC 7540 — HTTP/2. Detta bevaras som HTTP/2-kompatibilitetslinje; det aktiva HTTP/2-kontraktet är dess efterföljare, RFC 9113.
- RFC 7541 — HPACK: Headerkomprimering för HTTP/2. Webships egna HTTP/2-stack begränsar avkodarens tillstånd och kodarbord medan HPACKs trådbaserade format och Huffmankodning bevaras.
- RFC 7838 — HTTP Alternativa Tjänster. Alt-Svc annonserar en HTTP/3-endpoint utan att ändra det ursprung som representeras av URL:en.
- RFC 8441 — Bootstrapping WebSockets med HTTP/2. Webship stöder den nedströms förlängda-CONNECT-förhandlingsgrunden. Den påstår inte att en HTTP/1.1-uppström implementerar HTTP/2 förlängd CONNECT; icke-stödda uppströmskombinationer misslyckas uttryckligen.
- RFC 8470 — Använda tidiga data i HTTP. Tidiga förfrågningar som Webship inte kommer att bearbeta får 425 Too Early istället för att hanteras med osäkra upprepningsantaganden.
- RFC 8941 — Strukturerade fältvärden för HTTP. HTTP-prioritetsvärden använder parsing av strukturerade fältdictionary; felaktigt formaterade valfria fält ignoreras helt.
- RFC 9110 — HTTP Semantik. Metoder, statuskoder, fält, validatorer, förutsättningar, omdirigeringar, innehållsmetadata, HEAD, CONNECT, OPTIONS och intervallets semantik delar ett gemensamt aktuellt kontrakt över protokollversioner.
- RFC 9111 — HTTP Caching. Webship implementerar korrigerad ålder, explicit färskhet, Vary, only-if-cached, must-revalidate, proxy-revalidate, säker användning av föråldrad data och ogiltigförklaring av effektiva och relaterade URI:er.
- RFC 9112 — HTTP/1.1. Regler för begäran-rad, fält, kroppslängd, överföringskodning, block, trailer, persistens och stängningsavgränsning tillämpas innan applikationsdistribuering.
- RFC 9113 — HTTP/2. Pseudo-fältordning, auktoritet, förbjudna anslutningsfält, TE-begränsningar, ströms livscykel, flödeskontroll, GOAWAY och felscope hanteras av Webships ägda H2-väg.
- RFC 9114 — HTTP/3. Webship äger begäran, styrström, SETTINGS, kritiskström, avbokning och ström-mot-anslutningsfelsvägar som används av dess HTTP/3-server.
- RFC 9204 — QPACK: Fältkomprimering för HTTP/3. Den dynamiska tabellens kapacitet är begränsad av den annonserade gränsen, instruktionsströmmar förblir parsbara vid nollkapacitet, och ogiltigt tillstånd blir det obligatoriska QPACK-felet.
- RFC 9218 — Extenderbart prioriteringsschema för HTTP. Brådskande och inkrementell leverans styr HTTP/3-schemaläggning medan okända prioritetsparametrar förblir utbyggbara.
- RFC 9220 — Bootstrapping WebSockets med HTTP/3. Webship implementerar HTTP/3 extended-CONNECT SETTINGS-grunden som används av moderna tunnlade protokoll; det innebär inte att varje möjligt CONNECT-protokoll accepteras.
- RFC 9297 — HTTP-datagram och kapselprotokoll. WebTransport-sessioner använder begränsad kapselavkodning och HTTP-datagramkoppling, där okända kapslar hanteras som utvidgningspunkter istället för parserfel.
- RFC 9421 — HTTP-meddelandesignaturer. Valfri Ed25519-svarsproveniens kan täcka Webship-version och konfigurationsidentitet utan att ersätta TLS eller applikationsautentisering.
- RFC 10008 — HTTP QUERY-metoden. Webship behandlar QUERY som säker och idempotent, bevarar dess kropp vid proxyning, inkluderar kropp och representationsmetadata i cache-identitet, förbjuder heuristisk färskhet, stöder villkorlig och intervallbaserad funktionalitet, och ogiltigförklarar aldrig en cache enbart för att QUERY användes.
QUIC-transport och överbelastningskontroll
- RFC 3465 — TCP-trafikkontroll med lämplig byte-räkning. Logiken för lämplig byte-räkning är en del av NewReno-trafikkontrollslinjen som används av Webships QUIC-implementering.
- RFC 4303 — IP Encapsulating Security Payload. Webship implementerar inte IPsec ESP; dess QUIC-paketdeduplicerare använder RFC:ens glidande fönster-teknik mot uppspelning enbart som implementeringslinje.
- RFC 5681 — TCP-flaskhalskontroll. Förlust- och omordningsgränser ärver etablerade begränsningar för flaskhalskontroll där QUIC bygger på TCP-praktik.
- RFC 6298 — Beräkning av TCP:s återtransmissionstimer. Utjämnad rundturstid och variationsberäkningar bidrar till QUIC:s återhämtningsmodell.
- RFC 8312 — CUBIC för Snabba Långdistansnätverk. Detta är den tidigare CUBIC-specifikationen som bevarats som algoritmlinje; RFC 9438 är den nuvarande standarden.
- RFC 8899 — Packetization Layer Path MTU Discovery för datagramtransport. Konfigurerbar DPLPMTUD upptäcker användbar QUIC-datagramstorlek utan att förlita sig på känsliga nätverkslagsignaler.
- RFC 8999 — Versionsoberoende egenskaper hos QUIC. Långa headers, anslutnings-ID:n, versionsförhandling och invariant parsning förblir säkra innan en versionsspecifik avkodare körs.
- RFC 9000 — QUIC: En UDP-baserad multiplexerad och säker transport. Anslutnings-ID:n, flöden, flödeskontroll, migration, adressvalidering, Retry, stateless reset, transportparametrar och stängningsbeteende utgör Webships HTTP/3-transportsbas.
- RFC 9001 — Använda TLS för att säkra QUIC. Initiala hemligheter, paketsskydd, huvudsakligt skydd, Retry-integritet, nyckelfaser och TLS-integration följer QUIC-TLS-regler.
- RFC 9002 — QUIC-förlustdetektion och överbelastningskontroll. Paketnummerutrymmen, bekräftelser, PTO, förlustdetektion, återhämtning och överbelastningsredovisning driver transporttillförlitlighet.
- RFC 9221 — En opålitlig datagramförlängning till QUIC. Förhandlade QUIC DATAGRAM-ramar bär opålitlig WebTransport-trafik utan att omvandla den till ströminnehåll.
- RFC 9287 — Smörjning av QUIC-bit. Smörjning av QUIC-bit minskar förbening samtidigt som säkerheten vid förhandling bibehålls.
- RFC 9308 — Tillämpbarhet för QUIC-transportprotokollet. Operativa standardinställningar såsom begränsad vilotid och distributionsvägledning informerar Webships produktionspolicy för transport.
- RFC 9369 — QUIC Version 2. Version 2-pakettyper, initiala nycklar, Retry-integritet, nyckeluppdateringar och versionsförhandling är implementerade tillsammans med QUIC v1.
- RFC 9438 — CUBIC för snabba och långdistansnätverk. Den nuvarande CUBIC-standarden styr Webships CUBIC-köbelastningskontroller; BBR och NewReno förblir valbara när arbetsbelastningen kräver dem.
TLS, certifikat och automatisk certifikathantering
- RFC 3339 — Datum och tid på Internet: Tidsstämplar. ACME-förnyelsefönster använder interoperabla Internettidsstämplar.
- RFC 4648 — Base16, Base32 och Base64-dataencodingar. ACME JOSE-värden och WebSocket-handsskakningsmaterial använder de erforderliga Base64- och Base64url-alfabeten samt fyllnadsreglerna.
- RFC 5280 — Internet X.509 PKI-certifikat och CRL-profil. Certifikattolkning och genererade utmaningscertifikat använder korrekta DNS- och binära IP-subjectAltName-former.
- RFC 5869 — HMAC-baserad Extract-och-Expand nyckelderiveringsfunktion. HKDF-SHA-256 och HKDF-SHA-384-derivering, inklusive utdata-gränser, utgör grunden för TLS- och QUIC-nycklar.
- RFC 6066 — TLS-tillägg. SNI väljer DNS-identiteter, medan bokstavliga IP-adresser korrekt utesluts från det vanliga HostName-formatet.
- RFC 7301 — TLS Application-Layer Protocol Negotiation. ALPN väljer HTTP/1.1, HTTP/2, HTTP/3 och det isolerade ACME-utmaningsprotokollet vid TLS-gränsen.
- RFC 7638 — JSON Web Key Thumbprint. ACME-kontonyckelns tumavtryck härleds i den kanoniska JWK-formen.
- RFC 7807 — Problem Detaljer för HTTP-API:er. Webship använder problem-dokumentformatet som krävs av RFC 8555 ACME-servrar. Den nyare specifikationen för Problem Detaljer ersätter det för nya allmänna API:er, men ACME:s normativa beroende förblir explicit.
- RFC 8446 — TLS 1.3. Webship använder TLS 1.3 för offentlig TLS, inklusive sessionbiljetter, nyckeluppdateringar, varningar, policy för tidig data och härledning av QUIC-nyckel.
- RFC 8555 — Automatisk certifikathanteringsmiljö. Konto, order, auktorisation, utmaning, slutförande, certifikatnedladdning och förnyelseflöden är automatiserade med begränsad indatahantering.
- RFC 8737 — ACME TLS-ALPN-01-utmaning. En utmaningsendast TLS-väg förhandlar endast acme-tls/1 och tillhandahåller den nödvändiga kritiska acmeIdentifier-certifikatförlängningen.
- RFC 8738 — ACME IP Identifier Validation Extension. Webship stöder certifikatbeställningar för IPv4 och IPv6, binära IP SANs och omvänd adress SNI för IP TLS-ALPN-01-validering.
- RFC 9525 — Tjänstidentitet i TLS. DNS-namn och IP-identiteter matchas enligt nuvarande regler för tjänstidentitet, utan jokertecken eller genvägar för vanliga namn för IP-adresser.
- RFC 9773 — ACME-förnyelseinformationsutökning. Förnyelsefönster kan komma från CA, vilket tillåter Webship att sprida förnyelser säkert istället för att använda ett enda stelbent lokalt schema.
WebTransport: exakt om vad som är standardiserat
WebTransport över HTTP/3 räknas inte som en femtionde tredje RFC. Från och med Webship 1.3.1 är dess trådkarta fortfarande draft-ietf-webtrans-http3-16. Webship implementerar det utkastet ovanpå det standardiserade HTTP/3, utökade CONNECT, QUIC DATAGRAM, HTTP Datagram och Capsule-lager som nämns ovan. Det implementerar också den förhandlade RESET_STREAM_AT-förlängningen som krävs för att bevara ett pålitligt sessionsidentifierande prefix när en WebTransport-ström återställs.
Den skillnaden är viktig. Kompatibilitet med standarder förbättras inte genom att kalla ett utkast för ett RFC. Den förbättras genom att spåra utkastet explicit, isolera det från vanliga HTTP-vägar, förhandla varje förlängning, begränsa varje sessionresurs och testa avboknings- och felbeteende.
Varför denna bredd är viktig i produktion
En standardbugg är sällan isolerad. Felaktig HSTS-hantering kan korsa en cachegräns. En felaktigt formaterad QPACK-instruktion kan avsluta orelaterade förfrågningar. Ett osäkert antagande om tidiga data kan upprepa en operation. En QUERY-cache-nyckel som utelämnar begärans kropp kan returnera resultatet av en annan fråga. En proxy som tar bort trailers eller hanterar avbokning felaktigt kan tyst ändra ett applikationsprotokoll.
Webships arkitektur behandlar dessa som sammanlänkade frågor. Parsergränser, säkerhetsinspektion, caching, omvänd proxy, transporttillstånd och instrumentering delar uttryckliga kontrakt. Resultatet är en server som kan växla mellan HTTP/1.1, HTTP/2, HTTP/3, statisk leverans, omvänd proxy, strömning och WebTransport utan att ge varje läge en annan definition av korrekthet.
Verifiera påståendet
Ta inte ett superlativ på förtroende. Läs [Webship 1.3.1-dokumentationen](/docs/1.3.1), granska konfigurationen och protokollgränserna, och reproducera det publicerade beteendet. Ladda sedan ner [Webship](/downloads) och testa de kantfall som är viktiga för ditt system.