Volver al blog de Webship

Ingeniería Webship

Webship: El servidor web más compatible con RFC del mundo

Webship convierte los requisitos de RFC en un comportamiento explícito a través de HTTP/1.1, HTTP/2, HTTP/3, QUIC, TLS, almacenamiento en caché, proxy inverso, WebTransport, ACME y el nuevo método QUERY. Explora el mapa completo de estándares de 52 RFC.

La web se mantiene unida por acuerdos exactos. Un campo Content-Length debe significar lo mismo en cada salto. Una caché no debe reutilizar una respuesta que requiera validación. Una sección de campo HTTP/3 mal formada debe fallar en el alcance correcto. Un método seguro debe seguir siendo seguro después de pasar por un proxy inverso.

Webship 1.3.1 se construye en torno a una regla: la velocidad solo cuenta cuando los bytes conservan su significado.

Es por eso que describimos Webship como el servidor web de propósito general más compatible con las RFC del mundo. Esta es una afirmación de ingeniería con un límite visible, no una afirmación de que todas las funciones opcionales en cada RFC existan. El mapa a continuación nombra las 52 RFC que afectan el comportamiento activo del servidor de Webship o sus fundamentos de protocolo propios. Los estándares actuales aparecen primero. Los documentos reemplazados se identifican como linaje de compatibilidad. Las especificaciones en borrador no se reclasifican como RFC.

La compatibilidad es comportamiento, no una insignia

Webship aplica estándares en los lugares donde los servidores de producción con mayor frecuencia se vuelven ambiguos:

  • El enmarcado HTTP/1.1 rechaza longitudes conflictivas, codificaciones de transferencia inválidas, objetivos de solicitud sobredimensionados, fragmentos malformados y formas de contrabando de solicitudes.
  • HTTP/2 y HTTP/3 rechazan los campos de conexión prohibidos, validan los pseudo-campos, limitan las secciones de campos comprimidos y mantienen los errores de flujo separados de los errores de conexión.
  • Los archivos estáticos preservan la semántica de HEAD, los validadores, el orden de las condiciones previas, los rangos de bytes, las redirecciones y los tipos de contenido.
  • El proxy inverso preserva el enmarcado, la cancelación, los encabezados finales, las actualizaciones, los reintentos seguros y la identidad de reenvío mientras elimina los campos de salto a salto.
  • La caché calcula la edad, la frescura, la revalidación, Vary, la invalidación y las reglas de uso obsoleto en lugar de tratar el almacenamiento en caché como un atajo de clave-valor.
  • TLS, QUIC, ACME, datos tempranos y WebTransport utilizan estado limitado y una política de fallo explícita.

Las mismas reglas se aplican en el camino rápido. Webship no define un camino “correcto” y un camino de referencia diferente.

Semántica, enmarcado, almacenamiento en caché y proxy de HTTP

  • RFC 3986 — Identificador Uniforme de Recursos (URI): Sintaxis Genérica. Webship normaliza referencias relativas de Location y Content-Location, incluidos los segmentos con puntos, antes de las decisiones de invalidación de caché.
  • RFC 6455 — El Protocolo WebSocket. Las actualizaciones de proxy inverso validan la clave WebSocket, el valor aceptado, el subprotocolo, las extensiones y la transición de túnel.
  • RFC 6585 — Códigos de Estado HTTP Adicionales. Los campos de solicitud sobredimensionados utilizan la respuesta 431 definida cuando todavía es posible una respuesta HTTP.
  • RFC 6797 — Seguridad de Transporte Estricta HTTP. Strict-Transport-Security se emite solo a través de transporte seguro y nunca se filtra desde una entrada de caché neutral al transporte hacia HTTP en texto claro.
  • RFC 7235 — Autenticación HTTP/1.1. Los tokens del esquema de autenticación se analizan sin considerar mayúsculas y minúsculas, incluida la superficie de control MCP protegida. Su semántica general de HTTP ahora se encuentra en el RFC 9110.
  • RFC 7239 — Extensión HTTP Forwarded. Los operadores pueden seleccionar un campo Forwarded basado en estándares, campos legacy X-Forwarded, ambos o ninguno; los campos de identidad entrante no confiables se eliminan primero.
  • RFC 7540 — HTTP/2. Esto se conserva como linaje de compatibilidad con HTTP/2; el contrato activo de HTTP/2 es su sucesor, RFC 9113.
  • RFC 7541 — HPACK: Compresión de encabezados para HTTP/2. La pila HTTP/2 propiedad de Webship limita el estado del decodificador y las tablas del codificador mientras preserva el formato de transmisión HPACK y la codificación Huffman.
  • RFC 7838 — Servicios Alternativos de HTTP. Alt-Svc anuncia un endpoint HTTP/3 sin cambiar el origen representado por la URL.
  • RFC 8441 — Inicialización de WebSockets con HTTP/2. Webship admite la base de negociación extended-CONNECT descendente. No pretende que un upstream HTTP/1.1 implemente CONNECT extendido de HTTP/2; las combinaciones de upstream no admitidas fallan explícitamente.
  • RFC 8470 — Uso de datos tempranos en HTTP. Las solicitudes tempranas que Webship no procesará reciben 425 Too Early en lugar de ser manejadas con suposiciones inseguras de reproducción.
  • RFC 8941 — Valores de campo estructurados para HTTP. Los valores de prioridad de HTTP utilizan el análisis de diccionario de campos estructurados; los campos opcionales malformados se ignoran en su totalidad.
  • RFC 9110 — Semántica HTTP. Los métodos, códigos de estado, campos, validadores, precondiciones, redirecciones, metadatos de contenido, HEAD, CONNECT, OPTIONS y la semántica de rangos comparten un contrato vigente entre las versiones del protocolo.
  • RFC 9111 — Caché HTTP. Webship implementa edad corregida, frescura explícita, Vary, only-if-cached, must-revalidate, proxy-revalidate, uso seguro de contenido obsoleto e invalidación de URIs efectivas y relacionadas.
  • RFC 9112 — HTTP/1.1. Las reglas de línea de solicitud, campo, longitud del cuerpo, codificación de transferencia, fragmento, remolque, persistencia y delimitación por cierre se aplican antes del despacho de la aplicación.
  • RFC 9113 — HTTP/2. El orden de pseudo-campos, autoridad, campos de conexión prohibidos, restricciones de TE, ciclo de vida del flujo, control de flujo, GOAWAY y el alcance de errores son manejados por la ruta H2 propiedad de Webship.
  • RFC 9114 — HTTP/3. Webship posee las rutas de solicitud, flujo de control, SETTINGS, flujo crítico, cancelación y errores de flujo frente a conexión utilizadas por su servidor HTTP/3.
  • RFC 9204 — QPACK: Compresión de campos para HTTP/3. La capacidad de la tabla dinámica está limitada por el límite anunciado, los flujos de instrucciones siguen siendo analizables con capacidad cero, y el estado inválido se convierte en el error QPACK requerido.
  • RFC 9218 — Esquema de Priorización Extensible para HTTP. La urgencia y la entrega incremental guían la programación de HTTP/3 mientras los parámetros de prioridad desconocidos permanecen extensibles.
  • RFC 9220 — Inicialización de WebSockets con HTTP/3. Webship implementa la base de SETTINGS extended-CONNECT de HTTP/3 utilizada por los protocolos túnel modernos; eso no implica que se acepte cualquier protocolo CONNECT posible.
  • RFC 9297 — Datagramas HTTP y el Protocolo de Cápsulas. Las sesiones de WebTransport utilizan decodificación de cápsulas limitada y asociación de Datagramas HTTP, manejando las cápsulas desconocidas como puntos de extensión en lugar de fallas del analizador.
  • RFC 9421 — Firmas de Mensajes HTTP. La procedencia de respuesta Ed25519 opcional puede cubrir la identidad de la versión y configuración de Webship sin reemplazar TLS o la autenticación de la aplicación.
  • RFC 10008 — El método HTTP QUERY. Webship trata QUERY como seguro e idempotente, conserva su cuerpo durante el proxy, incluye el cuerpo y los metadatos de representación en la identidad de la caché, prohíbe la frescura heurística, admite comportamiento condicional y de rango, y nunca invalida una caché únicamente porque se haya utilizado QUERY.

Transporte y control de congestión de QUIC

TLS, certificados y gestión automática de certificados

WebTransport: preciso sobre lo que está estandarizado

WebTransport sobre HTTP/3 no se cuenta como un quincuagésimo tercer RFC. A partir de Webship 1.3.1, su mapeo en la transmisión sigue siendo draft-ietf-webtrans-http3-16. Webship implementa ese borrador sobre el HTTP/3 estandarizado, CONNECT extendido, DATAGRAMA QUIC, Datagram HTTP y las capas de Cápsula mencionadas anteriormente. También implementa la extensión RESET_STREAM_AT negociada requerida para preservar un prefijo identificador de sesión fiable cuando se reinicia un flujo de WebTransport.

Esa distinción importa. La compatibilidad con los estándares no se mejora llamando a un borrador un RFC. Se mejora siguiendo el borrador explícitamente, aislándolo de las rutas HTTP ordinarias, negociando cada extensión, limitando cada recurso de sesión y probando el comportamiento de cancelación y fallo.

Por qué esta amplitud importa en la producción

Un error de estándares rara vez está aislado. El manejo incorrecto de HSTS puede cruzar un límite de caché. Una instrucción QPACK malformada puede terminar solicitudes no relacionadas. Una suposición insegura sobre datos tempranos puede repetir una operación. Una clave de caché QUERY que omite el cuerpo de la solicitud puede devolver el resultado de una consulta diferente. Un proxy que elimina trailers o maneja incorrectamente la cancelación puede cambiar silenciosamente un protocolo de aplicación.

La arquitectura de Webship trata estos como asuntos conectados. Los límites del analizador, la inspección de seguridad, la caché, el proxy inverso, el estado del transporte y la instrumentación comparten contratos explícitos. El resultado es un servidor que puede moverse entre HTTP/1.1, HTTP/2, HTTP/3, entrega estática, proxy inverso, transmisión y WebTransport sin darle a cada modo una definición diferente de corrección.

Verifica la afirmación

No confíes en un superlativo. Lee la [documentación de Webship 1.3.1](/docs/1.3.1), inspecciona la configuración y los límites del protocolo, y reproduce el comportamiento publicado. Luego, [descarga Webship](/downloads) y prueba los casos límite que importan para tu sistema.