HTTP/1.1, HTTP/2 y HTTP/3
Volver a Learn
FAACCapítulo 5

Fundamentos y Arquitectura de APIs Corporativas

HTTP/1.1, HTTP/2 y HTTP/3

Semántica, mensajes, conexiones, multiplexación y QUIC en arquitecturas de APIs

Edición en profundidad — material de estudio y consulta profesional

Evolución de mensajes HTTP a streams multiplexados y QUIC a través de un API Gateway

Presentación del capítulo

a menudo se presenta a través de breves ejemplos y , pero esta vista es insuficiente para quienes operan puertas de enlace empresariales. En producción, es un protocolo con su propia semántica, estrictas reglas de delimitación, mecanismos de negociación, caché, condiciones, intermediarios y diferentes mapeos de transporte. Una llamada que parece ser una solicitud única se puede recibir en en el borde, convertirse a /2 hasta la puerta de enlace y reenviarse en /1.1 al . Cada salto tiene su propia conexión, estado, , compresión de campo y riesgo operativo.

Las versiones /1.1, /2 y no representan tres diferentes. Comparten métodos, códigos de estado, campos y conceptos de definidos por la semántica , pero codifican y transportan estos elementos de diferentes maneras. /1.1 utiliza una sintaxis textual sobre una secuencia ; /2 introduce tramas binarias y flujos multiplexados a través de una conexión; lleva la semántica a , que funciona sobre e integra 1.3 en el transporte.

Para un ingeniero de , la distinción entre semántica y control de versiones por cable es fundamental. Un error 405 no es consecuencia de o ; indica que el método no está permitido por el recurso. Un sin respuesta apunta a otra capa. Es posible que la puerta de enlace haya generado un 502 después de una conexión fallida con el canal ascendente. El comportamiento intermitente en /2 puede implicar límites de flujo, ventana de flujo, drenaje o una traducción inapropiada a /1.1 en el siguiente salto.

Este capítulo construye un modelo mental completo: primero establece la semántica común, luego profundiza en el formato y las conexiones de /1.1, luego explica la arquitectura de frame y flujo de /2 y finalmente presenta y . El objetivo no es memorizar listas, sino comprender qué propiedades permanecen estables, cuáles cambian entre versiones y qué evidencia se debe recopilar en cada punto de una arquitectura empresarial.

Principio central

La semántica pertenece a la operación; la versión y la conexión pertenecen a cada salto. Un finaliza un mensaje, aplica reglas y crea un mensaje nuevo para el siguiente destino.

Objetivos de aprendizaje

  • Explicar la arquitectura semántica de y separar el significado, la y el mapeo de transporte.
  • Interprete el método, el objetivo de la solicitud, la , los campos, el , los avances y los códigos de estado.
  • Distinguir seguridad, y capacidad de caché de los métodos principales.
  • Diseñe el almacenamiento en caché y la revalidación mediante -Control, Age, , Last-Modified y solicitudes condicionales.
  • Interprete la sintaxis /1.1, incluidos CRLF, longitud de , codificación de transferencia y mensajes sin .
  • Comprenda las conexiones persistentes, la canalización, el mantenimiento de actividad, los tiempos de espera y el .
  • Reconozca los riesgos de análisis divergente, smuggling, división de respuestas y campos salto por salto.
  • Explicar tramas, flujos, , , y en /2.
  • Comprenda , h2, h2c, fusión de conexiones y límites de concurrencia.
  • Explique , integración de 1.3, , migración, pérdida y transmisiones independientes.
  • Comprenda tramas , flujos de control, , Alt-Svc y descubrimiento de /SVCB.
  • Compare /1.1, /2 y en cuanto a latencia, observabilidad, seguridad y funcionamiento.
  • Aplicar los conceptos a Axway , Azure Management y arquitecturas con múltiples .
  • Diagnostica fallas a través de seguimientos, encabezados, registros, métricas de conexión y capturas de tráfico.

Estructura del capítulo

Tabla 1 - Organización conceptual del capítulo.
BloquearContenidoPregunta guía
unSemántica HTTP¿Qué significa el mensaje independientemente de la versión?
bHTTP/1.1¿Cómo se delimitan los mensajes de texto dentro de una secuencia TCP?
cHTTP/2¿Cómo comparten eficientemente una conexión los fotogramas y las transmisiones?
reHTTP/3 y QUIC¿Cómo reducir los bloqueos y hacer que la conexión, la seguridad y la movilidad sean parte del transporte?
yPuertas de enlace y operación¿Cómo conviven las distintas versiones y cómo localizar fallos en cada salto?

: protocolo de aplicación y arquitectura semántica

9110 define como un protocolo de aplicación sin estado para sistemas distribuidos y establece conceptos comunes a todas las versiones. "Sin estado" no significa que las aplicaciones no puedan mantener la sesión o el estado comercial. Significa que el protocolo no requiere que el servidor preserve, entre solicitudes independientes, el contexto necesario para interpretar el siguiente mensaje. El estado se puede representar en recursos, bases de datos, , , cachés o sesiones, pero cada solicitud debe contener suficiente información para ser procesada según el contrato.

La unidad semántica principal es un mensaje de solicitud o respuesta. Una solicitud expresa un método aplicado a un objetivo, acompañado de campos y, opcionalmente, . Una respuesta comunica el resultado a través de un código de estado, campos y posible . no determina que el sea ni que la sea . El protocolo puede transportar , imágenes, , Protobuf, archivos, eventos y otros formatos registrados o acordados entre las partes.

La semántica también define propiedades que guían a los intermediarios. Los cachés necesitan saber cuándo se puede reutilizar una respuesta; los servidores deben diferenciar los campos destinados al siguiente salto de los metadatos de un extremo a otro; los clientes deben decidir cuándo se puede repetir una operación después de un fallo; Las puertas de enlace deben preservar la , el método y el sin crear ambigüedad. Estas propiedades son más importantes para la interoperabilidad que la apariencia textual que se ve en un ejemplo de /1.1.

Semántica HTTP común asignada de forma diferente por HTTP/1.1, HTTP/2 y HTTP/3
Figura 1: la semántica es compartida; cada versión define un mapeo diferente para la red.

Lectura para puertas de enlace

Cuando una puerta de enlace recibe /2 y llama a un en /1.1, no "reenvía fotogramas". Decodifica un mensaje, ejecuta políticas y genera otro mensaje compatible con el siguiente protocolo.

Evolución: de los mensajes mínimos al transporte multiplexado

/0.9 tenía una forma extremadamente simple: una solicitud seguida de la ruta y una respuesta compuesta por el documento. No hubo códigos de estado, campos, negociación de tipos ni conexión persistente. Esta simplicidad se adaptaba a los primeros documentos web, pero no ofrecía mecanismos adecuados para aplicaciones distribuidas complejas. /1.0 introdujo versiones de línea iniciales, códigos de estado, campos y tipos de medios, lo que le permite representar metadatos y diferente.

/1.1 consolidó conexiones persistentes de forma predeterminada, el campo Host, almacenamiento en caché más completo, solicitudes condicionales, transferencias fragmentadas y reglas de . El protocolo ahora admite múltiples sitios en la misma dirección y reduce el costo de abrir una conexión por objeto. Aun así, la dependencia de un flujo ordenado y un formato secuencial ha creado límites para páginas y con muchas operaciones simultáneas.

/2 conservó la semántica y reemplazó el formato de mensaje de texto con frames binarios asociados con transmisiones. Esto nos permitió intercalar múltiples intercambios en la misma conexión y comprimir campos repetitivos con . mantuvo el modelo de flujos y frames, pero reemplazó con . Por lo tanto, la pérdida en un flujo no necesariamente impide la entrega de datos disponibles de otros flujos, y el protocolo de enlace criptográfico se convierte en parte del establecimiento de transporte.

Cronología de la evolución de HTTP/0.9 a HTTP/3
Figura 2 - Evolución histórica del protocolo .

Compatibilidad semántica

Un método sigue siendo en /1.1, /2 y . Lo que cambia es cómo se representan y transportan el método, el objetivo, los campos y el .

Modelo de transacción: solicitud, respuesta y mensajes autodescriptivos.

Una transacción comienza cuando un cliente envía una solicitud a un servidor de o intermediario. La solicitud contiene información de control y metadatos que le permiten determinar el recurso, la operación y la forma de respuesta esperada. El servidor produce una o más respuestas informativas y una respuesta final. En /1.1, los elementos aparecen como líneas y campos; en /2 y , se convierten en pseudocampos y frames.

El de un mensaje es conceptualmente diferente de su en el cable. Campos como Content-Type y Content-Encoding describen la . El le indica cómo ubicar el dentro de la conexión. En /1.1, Content-Length o fragmentado pueden delimitar el cuerpo; En /2 y , el se carga en frames de DATOS y el final de la transmisión indica su finalización. Confundir metadatos de con frames produce errores y vulnerabilidades de interoperabilidad.

Los avances son campos enviados después del . Pueden transportar metadatos calculados al final de la transmisión, como la integridad o el estado de los protocolos creados en . No todos los intermediarios conservan los remolques y el contrato debe considerar esta posibilidad. En las puertas de enlace, convertir la transmisión en búfer completo puede cambiar la latencia, la memoria consumida y la capacidad de entregar avances al cliente.

Anatomía conceptual de una solicitud y respuesta HTTP
Figura 3 - Anatomía conceptual de solicitud y respuesta.
POST /v1/payments HTTP/1.1
Host: api.example.com
Content-Type: application/json
Accept: application/json
Content-Length: 42
{"amount":100.00,"currency":"BRL"}

Identificadores, , y destino de la solicitud

Un identifica un recurso o referencia utilizada en la interacción. En el uso común de , el incluye esquema, , ruta y consulta. En ` :// .example.com:443/v1/accounts/123? view=summary`, el esquema es , la contiene host y puerto, la ruta identifica una jerarquía lógica y la consulta agrega parámetros. El fragmento, cuando está presente en un , lo procesa el cliente y no se envía en la solicitud .

/1.1 utiliza diferentes formas de solicitud-objetivo según el método y el tipo de intermediario. El formulario de envía ruta y consulta; la forma absoluta es típica en directos; CONNECT utiliza el formulario de ; y la forma de asterisco aparece en OPCIONES `*`. El campo Host es obligatorio en /1.1 e informa a la prevista. En /2 y , pseudocampos como `:scheme`, `:authority`, `:path` y `:method` representan estos componentes.

Las puertas de enlace deben tratar a la con cuidado porque participa en el enrutamiento, la selección de certificados, las políticas y la protección contra ataques al encabezado del host. Un puede recibir una dirección pública y llamar a un host interno diferente; Esto no autoriza a sustituir indiscriminadamente el significado de la original. En algunas arquitecturas, el necesita conocer el host externo a través de campos "reenviados" o equivalentes, pero estos campos solo deben ser confiables cuando los ingresan intermediarios controlados.

Tabla 2: Componentes comunes de un URI HTTP.
ComponenteEjemploUso técnico
esquemahttpsDefine el esquema de seguridad y las expectativas.
autoridadapi.ejemplo.com:443Identifica el host y el puerto lógico del origen.
Camino/v1/cuentas/123Selecciona recurso o ruta.
Consultaver=resumenParámetros no jerárquicos.
Fragmento#secciónNo se envía al servidor.

Métodos: intención, seguridad semántica e .

El método expresa la intención de la solicitud. solicita la transferencia de una ; solicita los mismos metadatos sin de respuesta; pide al recurso que procese el según su semántica; reemplaza o crea estado en el de destino; solicita la eliminación de la asociación actual; OPCIONES describe las opciones de comunicación; CONNECT establece un túnel; ejecuta un diagnóstico de bucle invertido y normalmente está deshabilitado en entornos corporativos.

Un se define como esencialmente de sólo lectura: el cliente no solicita un cambio en el estado del servidor. Esto no impide los registros, las métricas o la facturación operativa, pero sí significa que el efecto deseado no es un cambio empresarial. significa que repetir la misma intención varias veces debería producir el mismo efecto deseado que una sola ejecución. y son semánticamente idempotentes, aunque las respuestas observables y los efectos secundarios pueden .

La distinción es decisiva para los . Una puerta de enlace puede repetir una solicitud después de un fallo de conexión con menos riesgo semántico. Volver a intentar la de pago puede duplicar la operación si el procesó el antes de que se perdiera la respuesta. Las financieras a menudo introducen una clave de de la aplicación, manteniendo el resultado asociado con una clave única. Esta estrategia complementa, pero no cambia, la semántica del método .

Comparación de seguridad e idempotencia de los principales métodos HTTP
Figura 4 - Propiedades semánticas de los métodos principales.

Reintentar no es sólo una decisión técnica

Antes de configurar los en la puerta de enlace, clasifique la operación, determine el punto en el que el flujo ascendente puede haber tenido efecto y defina cómo se detectarán los duplicados.

Códigos de estado y autoría de respuesta

El código de estado describe el resultado del intento de interpretar y satisfacer la solicitud. Las respuestas 1xx son informativas; 2xx indica éxito; 3xx aconseja la redirección o el uso de otra ; 4xx indican que la solicitud no puede atenderse en las condiciones presentadas; 5xx informe del servidor o fallo del intermediario. La clase es relevante, pero el código específico y los campos asociados proporcionan la semántica completa.

En arquitecturas con , el código final puede ser creado por cualquier intermediario. Un 401 puede provenir de una política de autenticación de puerta de enlace sin que se llame al . Un 429 puede representar el límite de velocidad del borde. Un 502 normalmente indica que una puerta de enlace no obtuvo una respuesta válida desde el nivel ascendente; un 504 representa el que actúa como puerta de enlace. Los registros deben registrar la autoría, la etapa de la política y el estado ascendente por separado.

Las frases de motivo /1.1 son informativas y no deben controlar la lógica. /2 y llevan el código en `:status` y no llevan la frase de motivo. Los clientes deben tomar decisiones basándose en el número y los campos, no en textos como "OK" o "No autorizado". En las , las respuestas de error pueden agregar un formato de problema, correlación y detalles, pero el cuerpo no reemplaza la semántica de estado.

Tabla 3 - Códigos frecuentes en API corporativas.
CódigoSignificado operacionalPunto de atención en pasarelas
200Operación completada con representación.Se puede almacenar en caché según los campos y el método.
201Recurso creado.La ubicación puede identificar el nuevo recurso.
204Éxito sin contenido.No inventes un cuerpo durante la transformación.
304La representación almacenada sigue siendo válida.No es una respuesta normal del cuerpo.
400Solicitud no válida.Puede provenir de análisis, validación o contrato.
401Credenciales faltantes o no válidas.WWW-Authenticate describe el desafío.
403Entidad entendida pero no autorizada.No confundir con falla de autenticación.
404Recurso no encontrado u oculto.Podría provenir del enrutamiento de la puerta de enlace.
409Conflicto con el estado actual.Útil en competición e idempotencia.
413Contenido demasiado grande.Puede existir límite en cada intermediario.
429Límite excedido.Reintentar después puede guiar el retry.
502Respuesta no válida desde arriba.Investigue la conexión y el análisis entre la puerta de enlace y el backend.
503Servicio no disponible.Piscina vacía, mantenimiento o sobrecarga.
504Tiempo de espera de la puerta de enlace.Descubra qué salto expiró primero.

Campos : metadatos, alcance y normalización

Los campos son pares nombre-valor extensibles. Llevan información sobre control, , almacenamiento en caché, autenticación, negociación e intermediarios. Los nombres no distinguen entre mayúsculas y minúsculas, aunque los valores pueden tener reglas específicas. Un campo puede permitir una sola aparición, varias ocurrencias o una lista que se puede componer. Las implementaciones no deben concatenar campos indiscriminadamente, especialmente `Set- `, cuya semántica requiere un tratamiento específico.

9110 distingue los campos de un extremo a otro de la información relacionada con la conexión. /1.1 utiliza el campo Conexión para declarar nombres de campos que se aplican solo al siguiente salto. Los intermediarios deben eliminar estos campos antes de reenviar. /2 y prohíben varios campos específicos de la conexión, ya que los flujos y los frames reemplazan mecanismos como `Transfer-Encoding: fragmentado`. Replicar encabezados /1.1 sin comprender su alcance puede provocar fallas en el protocolo.

La normalización es necesaria pero peligrosa. Las puertas de enlace pueden cambiar las mayúsculas, el orden, combinar líneas, eliminar espacios opcionales o reconstruir mensajes. Las solicitudes no deben depender del orden de los campos. Por otro lado, las firmas y los esquemas de autenticación pueden definir una canonicalización explícita. Se debe ejecutar una política de puerta de enlace que modifique los valores firmados antes de firmar o preservar exactamente los componentes cubiertos.

Tabla 4: Categorías de campos relevantes para las API.
categoríaEjemplosFunción
Enrutamiento y orientaciónAnfitrión, reenviadoIdentificar la autoridad y el camino a través de intermediarios.
RepresentaciónTipo de contenido, codificación de contenido, idioma de contenidoDescribe el contenido transferido.
NegociaciónAceptar, Aceptar-Codificación, Aceptar-IdiomaExpresar las preferencias del cliente.
cachéControl de caché, Edad, ETag, VariarControlar el almacenamiento y la reutilización.
AutenticaciónAutorización, autenticación WWWPresentar credencial o desafío.
CondiciónSi coincide, Si no coincide, Si se modifica desdeEjecutar la operación según el estado conocido.
Observabilidadtraceparent, tracestate, correlaciónPropagar contexto entre servicios.

Representaciones, tipos de medios y .

Un recurso es una abstracción; la es una secuencia de bytes y metadatos que describe un estado de ese recurso. El mismo recurso se puede representar como , , CSV o imagen. `Content-Type` informa el tipo de medio de la enviada, mientras que `Accept` expresa qué tipos el cliente considera aceptables. Enviar sin `Content-Type: application/ ` obliga al receptor a inferir o rechazar el .

La negociación de puede ocurrir de manera proactiva, utilizando los campos Aceptar, Aceptar-Codificación y Aceptar-Idioma, o reactivamente, cuando el servidor ofrece alternativas. El campo informa qué dimensiones de la solicitud influyeron en la selección de la respuesta y es esencial para las cachés. Si una respuesta varía según "Aceptar-Codificación", un caché no debe entregar bytes comprimidos con gzip a un cliente que no los acepta.

Content-Encoding describe transformaciones aplicadas a la , como gzip o br. No debe confundirse con Transfer-Encoding, que en /1.1 participa en el de mensajes. Las puertas de enlace que descomprimen para su inspección deben decidir si recomprimir, corregir la Content-Length, preservar cuando sea semánticamente válido y considerar límites de expansión para evitar ataques de descompresión.

GET /reports/2026 HTTP/1.1
Host: api.example.com
Accept: application/json, application/xml;q=0.8
Accept-Encoding: br, gzip
HTTP/1.1 200 OK
Content-Type: application/json
Content-Encoding: gzip
Vary: Accept, Accept-Encoding

Caché : frescura, reutilización e invalidación

El almacenamiento en caché no es sólo una optimización del navegador. Las , los inversos y las puertas de enlace pueden almacenar respuestas y atender solicitudes sin llamar al . 9111 define cuándo una respuesta puede almacenarse, considerarse nueva, reutilizarse o revalidarse. -Control incluye directivas como max-age, no- , no-store, private, public y must-revalidate. "no- " no significa "no almacenar"; significa que la respuesta debe validarse antes de su reutilización, excepto para reglas específicas.

La antigüedad de una respuesta considera el tiempo desde su generación y permanencia en cachés. El campo Edad informa la edad estimada. Las cachés compartidas deben respetar las políticas de autorización y privacidad. En las bancarias, almacenar respuestas personalizadas sin la clave de caché adecuada puede provocar fugas entre usuarios. La clave normalmente incluye y dimensiones indicadas por Vary, pero las puertas de enlace pueden agregar reglas específicas según la identidad, el inquilino o el producto.

Invalidar la caché es difícil porque pueden existir copias en varios niveles. Las estrategias incluyen corto, control de versiones de , depuración explícita y revalidación. La elección debe equilibrar la coherencia, el coste y la disponibilidad. Un no disponible puede protegerse mediante respuestas almacenadas, pero servir información antigua en operaciones financieras puede ser inaceptable. La política de caché es una decisión de dominio, no sólo de rendimiento.

Flujo de revalidación de caché condicional con ETag
Figura 5 - Revalidación condicional con .

Solicitudes condicionales y control de concurrencia

Las solicitudes condicionales le permiten realizar una operación solo si el estado del recurso satisface una condición. `If-None-Match` se utiliza para revalidar el caché o garantizar la creación solo cuando no existe ninguna actual. `If-Match` requiere que la entidad actual coincida con una y es útil para evitar la pérdida de actualizaciones. Los campos basados ​​en fechas, como If-Modified-Since y If-Unmodified-Since, tienen menor granularidad y confiabilidad que los validadores opacos.

es un identificador de la seleccionada. Una fuerte indica equivalencia byte a byte adecuada para operaciones como rangos; uno débil indica suficiente equivalencia semántica para ciertos usos de la caché. No es necesario que sea un criptográfico ni que revele una versión interna. Las puertas de enlace que transforman el pueden invalidar la del , porque la entregada al cliente ya no es la misma.

En control optimista, el cliente lee una con , la cambia localmente y envía o con If-Match. Si otro actor modificó el recurso, el servidor responde 412 Precondición fallida. Esto evita sobrescribir silenciosamente una actualización simultánea. La política debe implementarse en el componente que controla el estado del negocio; una puerta de enlace puede validar la presencia y el formato, pero no conoce la versión actual del recurso por sí sola.

GET /accounts/123
<- ETag: "v17"
PATCH /accounts/123
If-Match: "v17"
Content-Type: application/merge-patch+json
{"nickname":"Reserva"}
<- 204 No Content   o   412 Precondition Failed

/1.1: sintaxis textual y flujo de bytes

/1.1 representa los mensajes como una línea de inicio, una secuencia de campos, una línea vacía y opcional. Las líneas están delimitadas por CRLF. Una solicitud comienza con método, destino de solicitud y versión; una respuesta comienza con la versión y el estado. Aunque las herramientas muestran mensajes en un formato legible, la implementación debe manejar octetos, límites, espacios y caracteres prohibidos de acuerdo con la especificación. La excesiva tolerancia hacia los mensajes no válidos es una fuente recurrente de inconsistencia entre intermediarios.

El receptor necesita determinar dónde termina cada mensaje en una conexión persistente. entrega un flujo de mensajes sin límites: un `recv()` puede devolver parte de una línea, varias líneas o datos de mensajes consecutivos. El analizador acumula bytes, reconoce la sección del campo y aplica reglas de . La conexión no puede simplemente utilizar el " del paquete" como límite, ya que los paquetes y los segmentos son detalles inferiores que se pueden dividir o combinar.

En las , existen límites de tamaño para la fila inicial, los campos y el en todos los clientes, , puertas de enlace y servidores. La puerta de enlace puede rechazar un campo aceptado por el borde; una carga útil permitida por la puerta de enlace puede exceder el . Es necesario coordinar los ajustes. Los errores 400, 413, 414 y 431 ayudan a diferenciar entre solicitudes con formato incorrecto, extenso, largos y campos excesivos.

HTTP-message = start-line CRLF
               *( field-line CRLF )
               CRLF
               [ message-body ]

en /1.1: Content-Length, y ausencia de cuerpo

Content-Length informa la Content-Length en octetos. Cuando es válido, el receptor lee exactamente esa cantidad después de la línea vacía. `Transfer-Encoding: fragmentado` codifica el en bloques, cada uno precedido por un tamaño hexadecimal y terminando con un fragmento cero y avances opcionales. le permite transmitir sin conocer el tamaño total de antemano, pero es un mecanismo salto por salto y no aparece en /2 o .

No todas las respuestas tienen cuerpo. Las respuestas a no incluyen , aunque los campos describen lo que habría devuelto un . Los códigos 1xx, 204 y 304 tienen reglas específicas sin . Las respuestas exitosas a CONNECT cambian la conexión al modo túnel. En otros casos, cerrar la conexión puede limitar la respuesta, pero esto impide la reutilización y es menos sólida.

Múltiples longitudes de con valores diferentes, una combinación incorrecta de longitud de y codificación de transferencia o una sintaxis fragmentada no válida deben tratarse como un error. Si un y un eligen reglas diferentes, es posible que no estén de acuerdo sobre dónde termina la solicitud. El resultado puede desde la corrupción de la conexión hasta el smuggling. La estrategia segura es un análisis estricto y una normalización consistente antes del reenvío.

Formas de delimitar el contenido del mensaje en HTTP/1.1
Figura 6: Dos formas comunes de delimitar en /1.1.
Tabla 5 - Determinación de longitud en HTTP/1.1.
Situación¿Cómo se determina la longitud?Nota
Responder a la CABEZASin contenidoLos campos pueden describir un GET equivalente.
1xx, 204, 304Sin contenidoEl framing no debería inventar monos.
CONECTAR 2xxTúnel tras cabecerasLos siguientes bytes no son mensajes HTTP ordinarios.
Transfer-Encoding final fragmentadaSe reduce al tamaño ceroLos avances pueden seguir al fragmento cero.
Longitud válida del contenidoNúmero exacto de octetosLos valores en conflicto son un error.
Respuesta sin frame explícitoHasta que se cierre la conexiónNo reutilizable y susceptible de truncamiento.

Conexiones persistentes, reutilización, y tiempos de espera

/1.1 utiliza conexiones persistentes de forma predeterminada. Después de una respuesta, el cliente y el servidor pueden reutilizar / para nuevas solicitudes, lo que reduce los protocolos de enlace y la latencia. La reutilización sólo es segura cuando el mensaje anterior ha sido completamente delimitado y consumido. Si un cliente abandona un cuerpo sin leerlo, la conexión puede desalinearse para la siguiente transacción.

Las puertas de enlace mantienen grupos de conexiones para los servidores. El grupo separa la conexión del cliente de la conexión ascendente: cientos de clientes pueden compartir un grupo de conexiones persistentes, según la competencia y la capacidad. Los parámetros relevantes incluyen el máximo por objetivo, el tiempo de inactividad, la vida útil, el de conexión, el de lectura y la validación antes de la reutilización. Un equilibrador de carga puede finalizar conexiones inactivas antes de la puerta de enlace, provocando reinicios al reutilizar aparentemente válidos.

Los tiempos de espera deben formar un presupuesto coherente. El cliente tiene que esperar más tiempo que el borde; el borde, más que la puerta de entrada; la puerta de enlace, tiempo suficiente para el , pero menos que el límite total del consumidor. Si todos usan el mismo valor, los componentes pueden caducar simultáneamente y producir tormentas de . Los registros deben distinguir el tiempo de conexión, el envío, la espera del primer byte y la lectura del .

Tabla 6 - Límites y tiempos de espera de conexión.
Parámetroque limitesSíntoma cuando es inapropiado
Tiempo de espera de conexiónEstablecimiento de TCP/TLS en sentido ascendenteFalla rápidamente o espera demasiado antes de enviar.
Tiempo de espera de lectura/respuestaEsperando respuesta o datos504 incluso cuando el backend se completa más tarde.
Tiempo de inactividadTiempo sin tráfico en conexión reutilizableRST al reutilizar una conexión terminada por otro salto.
Vida útil máximaVida total de la conexiónAyuda a renovar DNS y distribuir conexiones.
Tamaño de la piscinaConexiones simultáneas por destinoCola local, latencia o exceso de sockets.
Tiempo de espera total de la solicitudPresupuesto de operaciónNecesita incluir políticas y todos los saltos.

y bloqueo -of-line en /1.1

La canalización le permite enviar múltiples solicitudes a través de una conexión sin esperar cada respuesta. Sin embargo, las respuestas deben emitirse en el mismo orden. Si la primera solicitud lleva tiempo, las respuestas listas de solicitudes posteriores se retrasan. Este bloqueo se conoce como encabezado de línea en el nivel /1.1. La complejidad de los , los servidores intermediarios y las implementaciones inconsistentes han limitado la adopción práctica de la canalización.

Los clientes a menudo han solucionado el problema abriendo múltiples conexiones paralelas por fuente. Esto aumenta los apretones de manos, el uso de puertos, la congestión de las colas y la presión sobre los equilibradores. Para las , varias conexiones pueden distribuir la carga de manera diferente a una conexión /2 con muchas transmisiones. Las métricas basadas únicamente en "conexiones activas" no representan correctamente la competencia cuando las versiones coexisten.

/2 fue diseñado para multiplexar solicitudes independientes sin imponer un orden global de respuestas. Aun así, todas las tramas viajan a través de un flujo , por lo que una pérdida de segmento puede retrasar la entrega de bytes posteriores de todos los flujos. traslada el aislamiento de flujo al transporte .

Bloqueo de encabezado de línea en respuestas de canalización HTTP/1.1
Figura 7: Cabeza de línea en la canalización /1.1.

Intermediarios, campos salto a salto y transformación

El es un participante que recibe un mensaje y reenvía otro. Puede seleccionar el siguiente destino, aplicar autenticación, transformar , almacenar en caché o registrar telemetría. Una puerta de enlace actúa como intermediario con políticas basadas en . No es necesario que el mensaje de salida sea byte por byte igual que la entrada, pero debe preservar la semántica definida y cumplir con los requisitos de seguridad.

Los campos salto a salto pertenecen a una única conexión y no deben reenviarse automáticamente. En /1.1, Connection declara opciones aplicables al salto; TE tiene uso restringido; Transfer-Encoding y Upgrade describen la conexión actual. /2 y eliminan o reemplazan estos conceptos. Una puerta de enlace traduce el y no debe enviar "Transfer-Encoding: fragmentada" en una secuencia /2.

Las transformaciones pueden cambiar la Content-Length, la codificación del , la , la firma, la capacidad de caché y la transmisión. Una política que convierte a necesita definir un nuevo tipo de y recalcular la longitud. Si la puerta de enlace almacena en búfer para validar el esquema, la primera respuesta puede ser más lenta y el consumo de memoria puede aumentar con las cargas útiles. La arquitectura debe documentar qué transformaciones están permitidas y en qué salto.

Regla de funcionamiento

Capture el mensaje lógico antes y después de cada política relevante. Comparar solo los paquetes perimetrales con los registros de ignora las transformaciones introducidas en el camino.

Parsing divergente y seguridad de mensajes /1.1

El smuggling ocurre cuando dos participantes interpretan los límites de los mensajes de manera diferente. Un atacante envía una cadena ambigua; el primer considera una parte como un cuerpo, mientras que el segundo interpreta los bytes restantes como una nueva solicitud. Esto puede eludir controles, envenenar el caché, mezclar respuestas entre usuarios o tomar rutas imprevistas. Las variaciones clásicas explotan los conflictos entre Content-Length y Transfer-Encoding, pero el problema general es el desacuerdo en el análisis.

La división de respuestas explora la inserción de delimitadores de línea en valores que terminan incrustados en los encabezados, creando campos o respuestas adicionales. Las implementaciones deben rechazar CR y LF no permitidos. La normalización inconsistente de espacios, nombres y caracteres también puede crear discrepancias. El principio es aceptar sólo sintaxis válida, rechazar ambigüedades y evitar reenviar mensajes parcialmente interpretados.

/2 y tienen frames binarios, pero pueden participar en ataques cuando un intermediario convierte mensajes a /1.1 de forma insegura. Una solicitud H2 puede contener metadatos que, cuando se serializan, crean ambigüedades en el H1. Por lo tanto, la seguridad requiere validación en el punto de traducción, no sólo en el borde. Las actualizaciones recientes de especificaciones también refinan los requisitos de actualización y los datos anticipados; Los operadores deben realizar un seguimiento de las erratas y que actualizan el comportamiento.

Contrabando de solicitudes causado por interpretaciones de framings divergentes
Figura 8: Ejemplo conceptual de smuggling a través de un frame divergente.

Defensa en profundidad

Utilice analizadores conformes, elimine combinaciones ambiguas, normalice una vez, mantenga actualizados el y el y pruebe explícitamente las traducciones H2/H3 a H1.

/2: capa de binario

/2 es una expresión optimizada de la semántica . Una vez establecida la conexión, los participantes intercambian tramas binarias con un encabezado fijo que informa la longitud, el tipo, las banderas y el ID de la transmisión. Los frames contienen bloques de campos comprimidos; LOS DATOS transportan ; AJUSTES negocia parámetros; WINDOW_UPDATE controla el flujo; RST_STREAM finaliza una transmisión; inicia la terminación coordinada de la conexión.

Un mensaje se asigna a una secuencia de fotogramas en una secuencia. La tiene un identificador y un ciclo de vida independientes. La solicitud y la respuesta de una operación utilizan la misma secuencia. Se pueden entrelazar tramas de diferentes flujos, lo que permite la concurrencia sin abrir una conexión para cada llamada. El receptor reconstruye cada mensaje utilizando el ID de transmisión y indicadores como END_HEADERS y END_STREAM.

El protocolo comienza con un prefacio de conexión y un intercambio de AJUSTES. Los parámetros incluyen el tamaño de la tabla de campos, el número máximo de transmisiones simultáneas, el tamaño de la ventana inicial y el tamaño máximo del frame. Es necesario confirmar la CONFIGURACIÓN. La configuración es direccional: lo que anuncia un punto final limita el comportamiento del par cuando le envía.

Frames de diferentes transmisiones entrelazados a través de una conexión HTTP/2
Figura 9: Frames de múltiples transmisiones que comparten una conexión /2.
Tabla 7 - Tramas HTTP/2 importantes.
frameAlcancePropósito
FECHAcorrienteContenido del mensaje y posible END STREAM.
ENCABEZADOScorrienteBloque de arranque o remolques comprimidos.
AJUSTESConexiónParámetros y capacidades direccionales.
ACTUALIZACIÓN DE VENTANAConexión o transmisiónIncrementar el crédito de control de flujo.
PRIMERA CORRIENTEcorrienteCancelar una operación específica.
pingConexiónMida la vida/RTT sin semántica HTTP.
GOAWAYConexiónDetener nuevos arroyos y drenar los existentes.
ACTUALIZACIÓN PRIORITARIAcorrientePrioridad de señal según plantilla extensible actual.

, estados y cierre

Las transmisiones pueden estar inactivas, abiertas, medio cerradas, reservadas o cerradas, según las tramas enviadas y recibidas. END_STREAM cierra la dirección del remitente y permite que continúe la otra dirección. RST_STREAM finaliza inmediatamente la transmisión e informa un código de error. Los errores de transmisión no tienen por qué interrumpir toda la conexión; Los errores de conexión requieren y apagado.

contiene el ID de transmisión más grande que puede haberse procesado y un código de error. El par no debe crear nuevos flujos en la conexión y puede repetir operaciones de flujo por encima del límite, considerando la . En implementaciones y drenajes, las puertas de enlace deben emitir y permitir la finalización de los flujos aceptados. La terminación abrupta de convierte el mantenimiento planificado en fallas de red indistinguibles.

La cantidad de transmisiones en competencia está limitada por SETTINGS_MAX_CONCURRENT_STREAMS y los recursos locales. Un cliente puede mantener una conexión, pero ser bloqueado esperando que el crédito abra una nueva transmisión. Las métricas deben mostrar transmisiones activas, pendientes y rechazadas, no solo conexiones. Un solo cliente con /2 puede generar una alta competencia por una conexión.

Tabla 8 - Eventos del ciclo de vida en HTTP/2.
EventoEfectoDecisión operativa
FINALIZAR TRANSMISIÓN en solicitudContenido terminado por el cliente.Gateway puede iniciar el procesamiento o la transmisión completos.
FINALIZAR TRANSMISIÓN en respuestaMensaje finalizado del servidor.La transmisión puede cerrarse si ambas direcciones han terminado.
PRIMERA CORRIENTECancela una transmisión específica.Registrar lanzador y código; Es posible que ya exista un efecto comercial.
SALIDA SIN ERRORDrenaje coordinado.Abra una nueva conexión para nuevas transmisiones.
GOAWAY con errorFallo de conexión.Evaluar retries por flujo e idempotencia.
Límite de transmisiónNuevas operaciones esperan.Incrementar las conexiones o ajustar la competencia con cautela.

, y presión de memoria.

La permite entrelazar tramas, pero no elimina la necesidad de contrapresión. /2 aplica a DATOS a nivel de conexión y flujo. El receptor anuncia crédito; a medida que consume bytes, envía WINDOW_UPDATE. Si la aplicación no lee una secuencia, su ventana puede restablecerse. Si la ventana de conexión se restablece, se impide que todas las transmisiones envíen DATOS, incluso si algunos consumidores son rápidos.

El no es lo mismo que el control de congestión . El primero protege los del receptor y de la aplicación; el segundo adapta el envío a la capacidad de la red. Ambos actúan simultáneamente. El aumento de las ventanas puede mejorar el rendimiento en rutas de productos con un alto retardo de ancho de banda, pero aumenta la memoria potencial. Las puertas de enlace deben limitar las transmisiones, los frames, los campos y el para evitar que unos pocos clientes monopolicen los recursos.

El /2 original tenía un mecanismo de dependencia y ponderación de prioridades que resultó difícil de implementar de manera interoperable. La especificación actual elimina el antiguo modelo central y permite un esquema extensible. Los operadores no deben asumir que la prioridad del cliente se respetará de extremo a extremo, especialmente cuando hay servidores que reordenan o convierten protocolos.

Multiplexación HTTP/2 y bloqueo residual causado por la pérdida de TCP
Figura 10: /2 y bloqueo residual causado por .

Síntoma clásico

Una conexión en buen estado, un ping /2 que responde y algunas transmisiones detenidas pueden indicar una ventana de flujo agotada o una aplicación que ha dejado de consumir .

: compresión de campos con estado por conexión

Las repiten campos como método, esquema, host, tipo de y autenticación. Enviarlos completos con cada solicitud aumenta los gastos generales. comprime bloques de campos utilizando una tabla estática de entradas comunes, una tabla dinámica construida durante la conexión, representaciones literales y codificación Huffman. Se puede hacer referencia a una entrada repetida mediante el índice en lugar de transmitir el nombre y el valor.

La tabla dinámica es direccional y está sincronizada por el orden de los bloques en la conexión. El codificador decide qué valores ingresar; el decodificador mantiene la misma secuencia. Cambiar el tamaño de la tabla o recibir un índice no válido puede generar un error de compresión y finalizar la conexión. Los intermediarios finalizan : la puerta de enlace decodifica los campos del cliente y crea su propia codificación cuando se conecta al .

Los campos sensibles como Autorización o no deben indexarse cuando hacerlo aumenta el riesgo o la retención. incluye "nunca indexada". La compresión también interactúa con ataques de canal lateral cuando los secretos y los datos controlados comparten contexto. Los límites de tamaño de la lista de campos siguen siendo necesarios, porque una compacta puede expandirse a una gran cantidad de metadatos.

Bloques de campo, tablas estáticas y dinámicas y representación HPACK compacta
Figura 11 - Componentes conceptuales de .

Negociación: , , h2 y h2c

En la web segura, /2 normalmente se negocia a través de a través de . El cliente anuncia protocolos, por ejemplo `h2` y ` /1.1`; el servidor selecciona uno y lo informa en el protocolo de enlace. Esto evita enviar una solicitud en el formato incorrecto. El certificado y el nombre aún deben ser válidos para el . Una vez que se selecciona h2, el cliente envía el prefacio y los frames /2.

/2 también puede funcionar sin usando el identificador h2c, con conocimiento previo o Actualización desde /1.1, pero este modo es menos común en el tráfico público. En las redes internas, algunos componentes usan h2c para , mientras que termina en o puerta de enlace. Esta decisión reduce el cifrado en un paso y debe evaluarse según la confianza, el cumplimiento y la observabilidad.

La fusión de conexiones permite reutilizar una conexión /2 para múltiples fuentes cuando se cumplen los requisitos de resolución, certificado y . Esto mejora la eficiencia, pero puede sorprender al equilibrio basado en conexiones. Las puertas de enlace y las deben evitar que se proporcione no autorizada en la conexión. El lógico sigue estando determinado por la semántica, no solo por la dirección conectada.

Negociación HTTP/2 o HTTP/1.1 sobre ALPN durante el protocolo de enlace TLS
Figura 12 - Negociación del protocolo de solicitud con .

: semántica sobre

asigna la semántica a . es un transporte orientado a conexión encapsulado en , con flujos, , detección de pérdidas, control de congestión, seguridad y migración de rutas. 1.3 está integrado en el protocolo de enlace; No existe ningún modo sin protección criptográfica según la especificación. La aplicación ve flujos confiables y ordenados individualmente, no datagramas sin procesar.

Al igual que /2, usa ENCABEZADOS y frames de DATOS, pero los frames viajan en flujos . Cada solicitud utiliza un flujo bidireccional iniciado por el cliente. Los flujos unidireccionales transportan control y . Las funciones que ya ofrece, como la identificación de flujo y el , no están duplicadas por la capa . Por lo tanto, algunos frames y mecanismos /2 desaparecen o cambian.

Usar no significa que no sea confiable. implementa confirmación, retransmisión y ordenación de transmisiones. La diferencia es que estas funciones están en el espacio del usuario, integradas con criptografía y capaces de evolucionar sin depender de la implementación del sistema operativo. Los firewalls y middleboxes que bloquean pueden impedir , lo que requiere un respaldo a /2 o /1.1.

Comparación de pilas HTTP/1.1, HTTP/2 y HTTP/3
Figura 13: Pilas simplificadas de /1.1, /2 y .

modelo mental

no es " /2 sobre ". Reutiliza ideas de flujos y frames, pero delega en propiedades que en /2 dependen de y separados.

, 1.3 y 0-

El protocolo de enlace negocia los parámetros de transporte y ejecuta 1.3. En una nueva conexión, el cliente puede enviar un paquete inicial que contiene datos ClientHello; el servidor responde y las claves evolucionan a través de niveles de cifrado. En condiciones normales, los datos de la aplicación se pueden enviar con un número reducido de viajes de ida y vuelta. protege casi todo el de control, reduciendo la visibilidad pasiva disponible para los middleboxes.

En las conexiones reanudadas, 0- puede permitir que el cliente envíe datos de la aplicación antes de reconocer completamente el nuevo protocolo de enlace. Estos datos no tienen la misma protección de reproducción que los datos 1- . Los servidores deben aceptar 0- solo para operaciones seguras de reproducción o aplicar mecanismos anti-reproducción e . Un financiero no debe considerarse seguro sólo porque utiliza .

aplica protección de amplificación antes de validar la dirección del cliente: el servidor limita los bytes enviados en relación con los recibidos. Los de pueden ayudar a validar el y controlar el abuso, a costa de viajes de ida y vuelta adicionales. Las puertas de enlace en el borde deben escalar el estado de intercambio, los umbrales y la protección DoS sin tratar todo el como tráfico sin sesión.

Tabla 9 - Pasos relevantes del establecimiento de QUIC.
FaseProtección/propiedadRiesgo operacional
InicialClaves derivables para habilitar el enrutamiento y el inicio del protocolo de enlace.No confundir con falta de integridad; El contenido no es un secreto fuerte contra el observador.
apretón de manosTLS autentica y negocia claves finales.La pérdida o bloqueo de UDP aparece como un error antes que HTTP.
1-RTTDatos normales protegidos.Streams activas y control de flujo.
0-RTTPrimeros datos en reanudación.Posible repetición; restringir las operaciones.
ReintentarValidación de dirección adicional.Aumenta la latencia, reduce la amplificación y el estado abusivo.

y eliminación de cabecera de línea entre

Cada flujo ofrece una entrega confiable y ordenada dentro del flujo mismo. Los paquetes pueden transportar tramas de múltiples flujos. Si se pierde un paquete con datos del flujo B, el receptor puede continuar entregando datos completos de los flujos A y C. Sólo el punto faltante de B impide el avance ordenado de ese flujo. Esto elimina el bloqueo transversal causado por de flujo único sobre /2.

La mejora no elimina todos los bloqueos. Una permanece ordenada; La pérdida de los primeros bytes impide la entrega de bytes posteriores del mismo flujo. El control del flujo de conexión también puede bloquear todas las transmisiones si el receptor no concede crédito. Las dependencias de pueden suspender la decodificación de un bloque de campos. Por lo tanto, las métricas y los seguimientos deben distinguir la pérdida de paquetes, el flujo bloqueado por datos, el flujo bloqueado por campos y la ventana de conexión.

numera datos y reconoce paquetes, pero retransmite información en paquetes nuevos, no en "el mismo paquete". Los números de paquetes nunca se reutilizan en el mismo espacio. La detección de pérdidas y el control de la congestión se especificaron en documentos asociados. La implementación en el espacio del usuario permite la evolución, pero también requiere una observabilidad específica de la biblioteca o que finaliza .

Pérdida de aislamiento entre streams de una conexión QUIC
Figura 14: Aislamiento de pérdidas entre .

, reenlace y migración de ruta

identifica una conexión por su conjunto de direcciones y puertos. Si un dispositivo móvil cambia de Wi-Fi a celular, la tupla cambia y normalmente se pierde la conexión. utiliza elegidos por los puntos finales, lo que le permite asociar paquetes de una nueva ruta a la conexión existente. El nuevo camino se valida con desafíos antes de ser utilizado por completo.

Los también permiten a los equilibradores reenviar paquetes sin depender exclusivamente de la tupla. El diseño debe considerar la privacidad y evitar que un identificador estable permita el seguimiento entre redes; Los puntos finales pueden proporcionar múltiples ID y retirarlas. Las puertas de enlace y los balanceadores de carga compatibles con deben coordinar el enrutamiento, las claves de /restablecimiento y la afinidad.

La migración no es garantía de continuidad en ningún entorno. Las políticas pueden desactivarlo; los cortafuegos pueden bloquear el nuevo camino; el servidor puede requerir validación; Los cambios de y alteran el rendimiento. Los registros deben registrar la migración y la validación de rutas para diferenciar el intercambio de red legítimo de la inestabilidad o el ataque.

Migración de ruta QUIC con Connection IDs y validación de nueva dirección
Figura 15 - Validación de ruta y migración en .

Frames y de control en

Una conexión tiene un por punto final. Envía AJUSTES, y otros frames de control. Cerrar prematuramente el es un error de conexión. Las solicitudes utilizan flujos bidireccionales del cliente; cada uno lleva ENCABEZADOS, DATOS y avances según lo permitido. Los fotogramas de un mensaje no pueden aparecer en ningún orden arbitrario.

Como proporciona y restablecimiento de flujo, utiliza mecanismos de transporte durante parte del ciclo de vida. Los errores tienen códigos y . Una cancelación puede implicar restablecer el envío y solicitar detenerlo en la dirección opuesta. La observabilidad debe asociar el flujo , la solicitud y la correlación de la aplicación, ya que una única puede realizar muchas operaciones.

elimina características de /2 que dependían del flujo , pero conserva el concepto de drenaje. limita los nuevos flujos de solicitudes aceptadas. Durante la implementación, el borde debe anunciar el cierre, mantener la conexión mientras finalizan las operaciones permitidas y dirigir nuevas llamadas a otra conexión. El cierre abrupto del estado provoca la pérdida de todas las operaciones activas.

Tabla 10 - Estructura básica de una conexión HTTP/3.
elemento HTTP/3TransporteUso
Solicitar secuenciaQUIC bidireccional iniciado por el clienteUna petición y su respuesta.
Flujo de controlQUIC unidireccional por punto finalAJUSTES, GOAWAY y control HTTP.
Flujo del codificador QPACKQUIC unidireccionalActualizaciones de la tabla dinámica.
Decodificador de flujo QPACKQUIC unidireccionalConfirmaciones y cancelaciones.
ENCABEZADOSMarco HTTP/3Parcelas de salida o remolques.
FECHAMarco HTTP/3Contenido del mensaje.

: compresión de campo adecuada para

depende del orden único de conexión para sincronizar la tabla dinámica. En , las transmisiones se pueden entregar de forma independiente; una actualización de tabla perdida no debería bloquear innecesariamente todas las transmisiones. utiliza flujos de codificador y decodificador unidireccionales para transmitir instrucciones y reconocimientos, lo que permite que bloques de campos en flujos de solicitud hagan referencias controladas.

Un bloque puede depender de entradas que aún no se han recibido y bloquearse hasta que lleguen las instrucciones. El decodificador anuncia límites para la cantidad de transmisiones bloqueadas y el codificador elige entre una mejor compresión y el riesgo de bloqueo. Las representaciones literales y las tablas estáticas le permiten evitar dependencias. Al igual que con , los valores confidenciales se pueden marcar para no indexarlos.

Las puertas de enlace finalizan y crean un nuevo contexto en la siguiente conexión. Una falla de es un error de conexión y puede afectar muchas solicitudes. La supervisión únicamente del estado no revela esta clase de error, porque es posible que el mensaje no se reconstruya. Los registros del terminador deben exponer códigos de error de descompresión y transmisiones bloqueadas.

Codificador, decodificador, solicitudes y flujos de tablas dinámicas en QPACK
Figura 16 - Flujos conceptuales de .

Descubrimiento y fallback de , Alt-Svc, /SVCB

Un cliente necesita saber qué ofrece y en qué punto final. 9114 define la publicidad mediante servicios alternativos: una respuesta /1.1 o /2 puede incluir `Alt-Svc: h3=":443"`. El cliente almacena la alternativa por un tiempo limitado y prueba . también puede proporcionar registros /SVCB con parámetros de protocolo y punto final. El soporte varía entre los clientes y la infraestructura.

La fuente lógica sigue siendo la misma, incluso si el está en un host o puerto diferente. El cliente necesita validar la y el certificado según las reglas. Alt-Svc no es una redirección de aplicaciones y no cambia el mostrado. Si el intento de falla, los clientes normalmente continúan o recurren a /2/1.1, pero los detalles de la caché de fallas y el tiempo dependen de la implementación.

Al solucionar problemas, confirme que el cliente recibió un anuncio, que se intentó , que se negoció h3 y que se produjo el fallback. Una captura solo del tráfico puede mostrar que la llamada funciona y ocultar los intentos fallidos. El bloqueo de /443 puede aumentar la latencia inicial incluso cuando el fallback mantiene la disponibilidad. Los registros /SVCB incorrectos pueden dirigir a los clientes modernos a un punto final diferente al utilizado por los clientes heredados.

Descubrimiento, intento QUIC y respaldo a HTTP/2 o HTTP/1.1
Figura 17: Descubrimiento, intento y respaldo de .
HTTP/1.1 200 OK
Alt-Svc: h3=":443"; ma=86400
# El cliente puede intentar una conexión QUIC al mismo origen en el puerto 443.

Comparación arquitectónica entre /1.1, /2 y

Elegir una versión no es sólo buscar “la más nueva”. /1.1 tiene una amplia compatibilidad y una observabilidad sencilla, pero requiere más conexiones para la concurrencia y sufre de bloqueo secuencial. /2 reduce la sobrecarga y permite muchos flujos en una conexión, siendo esencial para , pero concentra las operaciones en un y requiere métricas de flujo y flujo. mejora el comportamiento ante pérdidas y movilidad, pero depende de , finaliza el cifrado en el componente que necesita interpretar y cambia las prácticas de red.

Las ganancias dependen del perfil. En una red estable y con baja latencia, una pequeña puede mostrar una diferencia modesta. En conexiones móviles con pérdida, puede reducir el impacto entre transmisiones y preservar la conexión durante el cambio de ruta. En una arquitectura empresarial con muchos intermediarios, el beneficio de extremo a extremo puede reducirse si el borde recibe H3 pero el resto usa H1.1 con grupos saturados.

Los protocolos también afectan la capacidad. Diez mil solicitudes pueden utilizar miles de conexiones H1, cientos de conexiones H2 o H3, según la simultaneidad y los límites. El equilibrio por conexiones es menos representativo en la . Un solo cliente puede concentrar transmisiones en una instancia. Los algoritmos, los límites y la observabilidad deben evolucionar con el protocolo.

Tabla 11 - Comparación resumida de versiones.
AparienciaHTTP/1.1HTTP/2HTTP/3
TransporteTCP; Separar TLS sobre HTTPSTCP; normalmente TLS + ALPNQUIC sobre UDP; TLS 1.3 integrado
FormatoLíneas y campos textualesFrames binariosFrames sobre transmisiones QUIC
CompetenciaSecuencial/canalización; múltiples conexionesFlujos multiplexadosFlujos multiplexados con pérdida aislada
Compresión de campoNo estandarizado en el protocolo.HPACKpaquete q
HOLAEn HTTP y TCPElimina HOL HTTP; mantiene TCP HOLLos bloques de pérdida solo afectaron la transmisión
Migración de redLa conexión a menudo se rompeLa conexión a menudo se rompeConnection IDs y validación de ruta
Observabilidad pasivaMás sencillo después de la terminación de TLSFrames después de la terminación TLSMás control cifrado; requiere terminador QUIC
CompatibilidadMáximoAmplio en navegadores/proxies modernosDepende de UDP y soporte perimetral

y traducción de protocolos por salto

En una cadena empresarial, cada componente puede negociar su propia versión. Un cliente utiliza con una ; utiliza /2 con ; la puerta de enlace utiliza /1.1 con el . Es necesario preservar la semántica, pero se reconstruyen el , la compresión, la y la conexión. No hay ningún flujo H3 que "atraviese" una puerta de enlace que finalice .

La traducción cambia el comportamiento. Muchas solicitudes multiplexadas desde una conexión H2 pueden requerir múltiples conexiones H1 al o serializarse según la . Los remolques pueden perderse si el siguiente protocolo o producto no los conserva. Un reinicio de transmisión puede convertirse en una cancelación de , mientras que el ya ha procesado la operación. por un lado no tiene correspondencia directa en una conexión independiente por el otro lado.

Las políticas deben ser semánticas. La limitación de velocidad por conexión no es apropiada cuando una conexión contiene cientos de transmisiones. Los límites de carga útil deben considerar el tamaño sin comprimir. La caché debe utilizar la correcta y Vary. La observabilidad debe registrar la versión entrante, la versión saliente, la reutilización, el ID de transmisión cuando esté disponible, el y el estado creado por la puerta de enlace.

Versiones HTTP negociadas de forma independiente en cada salto de arquitectura
Figura 18: Versiones independientes en cada salto de la arquitectura.

pregunta de arquitectura

¿Cuál es la versión negociada en cada conexión real: client-edge, edge- , -mesh y mesh- ? La respuesta "la usa /2" suele estar incompleta.

Aplicación en Axway

Axway utiliza servicios para recibir tráfico y configuraciones de hosts remotos para conexiones salientes. En un diseño real, las configuraciones de escucha, interfaz, , política, enrutamiento y destino participan en diferentes saltos. La investigación debe separar la versión y los campos recibidos por el oyente de lo que se produce al conectarse al host remoto. Es necesario consultar la documentación y la versión instalada, ya que las capacidades y los estándares pueden según la versión.

Al reenviar a un , la conexión persistente y la influyen en la latencia, la distribución y el consumo de . Las configuraciones heredadas pueden utilizar comportamientos conservadores y los equipos deben validar explícitamente la versión saliente deseada. Las transformaciones y los filtros pueden cambiar el , los campos y la transmisión. Los registros de acceso a transacciones y el seguimiento de políticas deben registrar el estado final, el tiempo de conexión, el tiempo de respuesta y el error de enrutamiento.

Un escenario común es que el cliente observa /2 en el borde, pero el registra /1.0 o /1.1. Esto no es necesariamente un error; podría ser una decisión o un incumplimiento del salto de salida. El riesgo surge cuando la aplicación depende de , o competencia que no sobrevive a la traducción. Las pruebas deben cubrir el protocolo real, no sólo el punto final público.

Tabla 12: Evidencia para investigar HTTP en Axway API Gateway.
Punto de controlevidenciaPregunta
Servicio/escucha HTTPConfiguración de puerto, TLS y protocolo¿Qué negocia el cliente con la puerta de enlace?
Flujo de políticasFiltros de seguimiento y transformaciones.¿Qué campos y contenidos han cambiado?
Enrutamiento/host remotoDestino, versión, grupo y timeout¿Cómo crea la puerta de enlace la conexión ascendente?
Registro de accesoestado, bytes, tiempos, correlación¿Quién produjo la respuesta y cuánto tiempo tomó?
Registro de backendProtocolo y autoridad observados.¿Qué entró realmente en el servicio?

Aplicación en Azure Management

En Azure Management, la puerta de enlace recibe llamadas, aplica políticas y las enruta a los . La compatibilidad con /2 entrante, saliente y depende del tipo y generación de puerta de enlace, nivel y configuración. La política "forward- " tiene un atributo de versión para los escenarios admitidos. A medida que la plataforma evoluciona, la documentación oficial debe tratarse como la fuente de verdad para la instancia utilizada.

La versión entrante no implica una versión saliente. La documentación actual describe comportamientos en los que ciertas generaciones admiten /2 y pueden degradar el reenvío, mientras que otras le permiten configurar /2 para el . Esto afecta a , avances y . Las pruebas deben registrar "contexto"/rastros, diagnósticos de y métricas de instancia para confirmar la ruta efectiva.

Políticas como rewrite- , set- , set- , , y rate-limit operan en el mensaje lógico y pueden cambiar las características observadas. El debe considerar la . Set- generalmente implica acceso al y puede requerir almacenamiento en búfer. La caché debe respetar la identidad y Vary. Al combinar Application , Front Door, y , cada servicio finaliza su propia conexión y puede tener un diferente.

Tabla 13 - Puntos de atención en Azure API Management.
Elemento APIMImpacto HTTPValidación
Protocolos de puerta de enlaceCapacidades entrantes y TLSVerifique la configuración y el nivel.
solicitud de reenvíoVersión y timeout desde el salto al backendConfirme el soporte de la puerta de enlace utilizada.
Política de retryPuede repetir la llamada después del fracasoClasificar método e idempotencia.
establecer-encabezado/reescribir-uriCambiar mensaje reenviadoCompare el seguimiento con el registro de backend.
Políticas de cachéPuede responder sin aguas arribaValidar clave, TTL y privacidad.
Diagnóstico y telemetría.Distinguir política, puerta de enlace y backendPropagar contexto de correlación/rastreo.

Observabilidad: qué medir en cada versión

Las métricas comunes incluyen tasa de solicitudes, estado, latencia, bytes y errores. Para /1.1, agregue conexiones abiertas, nuevas conexiones por segundo, reutilización, espera de grupo y restablecimientos. Para /2, mida las transmisiones activas por conexión, el umbral de simultaneidad, RST_STREAM, , la ventana de transmisión y los errores de compresión. Para , incluya , éxito/retroceso, protocolo de enlace, pérdida, , migración, transmisiones bloqueadas y errores .

La latencia debe descomponerse. , conexión, / , tiempo de política, espera del grupo, tiempo hasta el primer byte ascendente y transferencia de responden a diferentes preguntas. Una métrica "total" alta no identifica la causa. El seguimiento distribuido comienza cuando hay un mensaje ; Las fallas anteriores pueden requerir terminadores y registros de red. La puerta de enlace debe crear o propagar de manera confiable identificadores de correlación.

Las capturas de tráfico siguen siendo útiles, pero el cifrado limita el . En sobre , el terminador puede proporcionar un registro de claves en un laboratorio controlado. cifra más elementos de control, por lo que las métricas de qlog y biblioteca son valiosas. En la producción bancaria, la recaudación debe respetar los datos sensibles: no registrar , , PAN, cargas útiles o encabezados completos sin enmascaramiento y base legal.

Tabla 14 - Observabilidad específica por versión.
MétricaHTTP/1.1HTTP/2HTTP/3
Unidad de CompetenciaConexión/solicitudcorrienteTransmitir QUIC
Cierre coordinadoConexión: cerrar / FINGOAWAY + transmisionesGOAWAY + cierre QUIC
CancelaciónCerrar la conexión puede afectar otras llamadasPRIMERA CORRIENTERestablecer/detener envío por transmisión
Compresión de campoN/A en el núcleoErrores de HPACKErrores y bloqueos de QPACK
señal de respaldoNueva conexión en otra versión.ALPN http/1.1Fallo QUIC seguido de H2/H1
Pérdida relevanteretransmisión TCPLa retransmisión TCP afecta las transmisionesPérdida de ruta/corriente y recuperación QUIC

Método de de un extremo a otro

El primer paso es determinar si hubo una respuesta válida. Pueden ocurrir errores de , , , o antes de cualquier estado. Las herramientas a veces convierten los fallos en mensajes genéricos, pero la puerta de enlace no puede haber producido 504 si la llamada ni siquiera llegó a ella. Identifique el último componente que tiene evidencia del intento y el primero que no.

Cuando exista estatus, determine la autoría. Compare el estado público, el estado ascendente, el error interno y la política ejecutada. Se puede conservar un 503 del ; La puerta de enlace podría crear otros 503 porque no había puntos finales en buen estado disponibles. Los encabezados como Server no son prueba suficiente, ya que pueden eliminarse o falsificarse. Utilice correlación y marcas de tiempo entre registros controlados.

Luego registre la versión y la conexión en cada salto. Confirme , protocolo de salida, reutilización, reinicio de transmisión, , y . Compare el método, la , la ruta, los campos relevantes y la longitud antes y después de la puerta de enlace. Para fallas intermitentes, busque patrones por conexión, instancia, transmisión, tamaño de carga útil, versión, red y tiempo de implementación.

Árbol inicial para clasificar fallas antes y después de una respuesta HTTP
Figura 19 - Árbol inicial para clasificar fallas .
Tabla 15 - Matriz de síntomas y evidencias.
SíntomaHipótesis prioritariasevidencia
Sin respuesta/error de conexiónDNS, cortafuegos, TCP/UDP, TLS/QUIC, puertodig/nslookup, rastreo de conexión, protocolo de enlace, registros de borde.
400 solo a través de puerta de enlaceAnálisis, normalización, umbral, transformación.Solicitud sin procesar en laboratorio, seguimiento de políticas, registro de backend.
413/431Limitar contenido o campos en algún saltoConfiguración y tamaño real sin comprimir.
502Fallo/invalidez ascendente, reinicio, protocoloError de puerta de enlace interna, captura y registro de backend.
503 intermitenteGrupo, estado, límite de transmisión/conexión, implementaciónMétricas por instancia y conexión.
504Tiempo de espera o cadena de salto de backend de puerta de enlaceDesglose de latencia y presupuesto de timeout.
H2 funciona, H1 fallaFraming, trailers, competencia o presentadorComparación del mensaje después de la traducción.
H3 lento antes de trabajarEl intento QUIC falla y retrocedeRegistros UDP/443, Alt-Svc/HTTPS RR y QUIC.
RST en reutilizaciónTiempo de inactividad desalineadoAntigüedad de la conexión y cierre en el otro salto.
Duplicidad después del timeoutReintento de operación no idempotenteRegistros de intentos y clave de idempotencia.

Estudio de caso 1: duplicado después de 504

Un cliente envía para crear una transferencia. La puerta de enlace lo reenvía al , que confirma la transacción en el banco, pero tarda un poco en generar la respuesta. El de la puerta de enlace expira y devuelve 504. El cliente lo interpreta como un error y repite la llamada. Dado que no es idempotente por definición y no existe una clave de deduplicación, el crea una segunda transferencia.

El problema no se resuelve simplemente aumentando el . La arquitectura debe definir la semántica de : el cliente envía una clave única; conservas de entrada; El registra la clave y el resultado de forma atómica. Al repetir, devuelve el resultado anterior. La puerta de enlace puede utilizar el solo para fallas claramente anteriores al envío o en operaciones clasificadas. Los registros deben mostrar el ID de la solicitud, la clave de , el intento y el resultado del .

Aprendizaje

Tiempo de espera significa que no hay confirmación para el observador, ni prueba de que no haya efecto en el sistema remoto.

Estudio de caso 2: Saturación del público /2 y /1.1

Un borde recibe miles de flujos /2 en unas pocas conexiones y los reenvía a la puerta de enlace. La puerta de enlace llama a un /1.1 con un grupo de 100 conexiones. Durante el pico, las transmisiones ingresan rápidamente pero esperan la conexión ascendente. Las métricas entrantes parecen estables porque hay pocas conexiones H2; la cola y la latencia crecen en el grupo saliente.

La solución requiere medir la competencia por flujo y grupo de espera, aplicar límites de admisión, ajustar la capacidad de y considerar /2 saliente cuando sea compatible. Aumentar el grupo sin evaluar los recursos puede sobrecargar el servicio. La limitación de la velocidad por conexión sería ineficaz, ya que una conexión H2 concentra muchos flujos. El objetivo es alinear la competencia lógica con la capacidad real de producción.

Aprendizaje

En protocolos multiplexados, la conexión ya no es una buena aproximación para el número de operaciones simultáneas.

Estudio de caso 3: anunciado pero bloqueado

Una comienza a anunciar "Alt-Svc: h3". Los clientes modernos prueban en /443, pero una red corporativa bloquea . Después de un retraso, el cliente vuelve a /2 y la funciona. Los usuarios reportan lentitud sólo en el primer acceso; las pruebas que fuerzan /2 no se reproducen. Los registros de muestran solicitudes normales, porque el intento falla antes de que llegue el mensaje .

La investigación debe analizar los paquetes , Alt-Svc, y el tiempo de reserva. La solución puede implicar habilitar , eliminar publicidad de redes específicas cuando sea posible o aceptar respaldo con monitoreo. No se debe concluir que provocó un error de aplicación. El problema radica en el descubrimiento y establecimiento del transporte, antes de la transacción observada por la puerta de enlace.

Aprendizaje

La disponibilidad alternativa puede ocultar una falla en la ruta y agregar latencia invisible en los registros de la aplicación.

Estudio de caso 4: La traducción de H2 a H1 crea un inseguro

Un acepta /2 y convierte pseudocampos y DATOS a /1.1. Una combinación con formato incorrecto pasa la validación H2, pero genera dos señales de longitud incompatibles en H1. El interpreta el mensaje de manera diferente y los bytes controlados constituyen la siguiente solicitud en la conexión persistente. La vulnerabilidad sólo aparece cuando la ruta incluye la traducción específica.

La mitigación requiere validar el mensaje lógico antes de serializar H1, emitir exactamente un mecanismo de , rechazar campos prohibidos, actualizar intermediarios y probar variaciones de contrabando. Deshabilitar la reutilización puede reducir el impacto, pero no reemplaza la corrección. Es posible que basado únicamente en texto de entrada H2 no vea el mensaje generado en el .

Aprendizaje

El punto de mayor riesgo suele ser el límite entre dos analizadores o versiones, no un analizador aislado.

Laboratorios de lectura práctica y diagnóstico.

Laboratorio 1: Comparar /1.1 y /2 con cURL

Utilice un punto final de laboratorio que admita ambas versiones. Ejecute llamadas forzando /1.1 y /2 y habilite la salida detallada. Tenga en cuenta la resolución, conexión, , , línea de solicitud mostrada, reutilización y sincronización. Repita varias llamadas en el mismo proceso para comprobar la reutilización. No utilice puntos finales productivos ni reales.

curl -v --http1.1 https://SEU-ENDPOINT-DE-LAB/status
curl -v --http2   https://SEU-ENDPOINT-DE-LAB/status
# También tiempos récord:
curl -sS -o /dev/null -w "connect=%{time_connect} tls=%{time_appconnect} ttfb=%
{time_starttransfer} total=%{time_total}\n" https://SEU-ENDPOINT-DE-LAB/status

Laboratorio 2: Inspeccionar con OpenSSL

Conéctese a un servidor de laboratorio y anuncie h2 y /1.1. Confirme el protocolo seleccionado. Luego fuerce solo /1.1 y compare. El objetivo es darse cuenta de que ocurre en el protocolo de enlace antes de los mensajes . En entornos , ejecute desde diferentes puntos de red para identificar diferentes puntos finales.

openssl s_client -connect SEU-ENDPOINT-DE-LAB:443 -servername SEU-ENDPOINT-DE-LAB -alpn
"h2,http/1.1"
# Buscar: Protocolo ALPN: h2

Laboratorio 3: caché y revalidación

Cree un servicio de laboratorio que devuelva y -Control. Haga un , almacene el y envíe If-None-Match. Confirma 304 sin . Modifique el recurso y repita. Agregue un de caché controlado y observe Age and Vary. Documente cómo la autenticación cambia la posibilidad de caché compartida.

curl -i https://SEU-ENDPOINT-DE-LAB/resource
curl -i -H "If-None-Match: \"ETAG-RECEBIDA\"" https://SEU-ENDPOINT-DE-LAB/resource

Laboratorio 4: /1.1 en un entorno aislado

En un servidor local creado para estudio, envíe mensajes con la Content-Length correcta y fragmentos válidos. Observe cómo el servidor lee el cuerpo. Luego pruebe las entradas no válidas sólo en un laboratorio autorizado y confirme que sean rechazadas, sin intentar explotar sistemas de terceros. El objetivo es comprender el análisis y la validación, no ejecutar ataques.

printf "POST /echo HTTP/1.1\r\nHost: localhost\r\nContent-Length: 5\r\n\r\nhello" | nc
127.0.0.1 8080

Laboratorio 5: Observar y respaldo

Utilice una herramienta de laboratorio y un punto final con soporte conocido. Registre el intento de , el protocolo final y el fallback cuando esté bloqueado en un entorno de prueba. Compare el tiempo con el primer byte. No cambie los firewalls corporativos sin autorización. En clientes que admiten qlog, genere un seguimiento local y vea el protocolo de enlace y las transmisiones.

curl -v --http3 https://SEU-ENDPOINT-DE-LAB/status
curl -v --http3-only https://SEU-ENDPOINT-DE-LAB/status
# La disponibilidad de opciones depende de la compilación de cURL y la biblioteca QUIC.

Laboratorio 6: Mapeo de versiones por salto en la puerta de enlace

Publique una de laboratorio que devuelva encabezados de protocolo, host y correlación observados por el . Llame al punto final público en diferentes versiones y compare registros de escucha, seguimientos de políticas y resultados de . Dibuje cada conexión independiente y anote , , versión, grupo, y transformación. Este mapa es más útil que declarar una única "versión ".

  1. Registre el protocolo de borde de cliente.
  2. Registre el protocolo de puerta de enlace de borde.
  3. Registre el protocolo de puerta de enlace- .
  4. Compare los campos Host/: y Reenviado.
  5. Ejecute llamadas con grande y observe el almacenamiento en búfer.
  6. Ejecute un despliegue controlado y observe el drenaje/ o los reinicios.

Checklist de arquitectura para empresariales

Tabla 16 - Checklist de diseño y revisión.
TemaPreguntas de revisión
Semántica¿Los métodos y estados siguen sus propiedades? ¿Los retries respetan la idempotencia?
URI/autoridad¿Se validan y conservan la autoridad original y de acogida cuando es necesario?
Campos¿Cuáles se eliminan, se crean, se firman o se confían en cada salto?
Contenido¿Existe un límite de transformación, compresión, almacenamiento en búfer, transmisión o sin comprimir?
caché¿Qué respuestas se pueden almacenar? ¿La clave considera identidad y Vary?
HTTP/1.1¿El framing es estricto? ¿Están coordinados los pools y los tiempos de inactividad?
HTTP/2¿Qué límites de flujo, campo y ventana están configurados? ¿Se trata GOAWAY?
HTTP/3¿Se permite UDP? ¿Hay respaldo? ¿Cómo se recopilan las métricas qlog y QUIC?
Puerta de enlace¿Las versiones entrantes/salientes han sido confirmadas por evidencia?
Observabilidad¿Están separados el estado público, el estado ascendente y el error interno?
Seguridad¿Se han probado las traducciones de protocolos contra ambigüedades y contrabando?
Capacidad¿La competencia se mide por solicitudes/flujos, no solo por conexiones?

Resumen del capítulo

proporciona una semántica estable para la interacción entre clientes, servidores e intermediarios. Los métodos expresan intención; los estados comunican resultados; los campos describen el control y la ; La caché y las condiciones permiten la reutilización y la simultaneidad. Estos conceptos son independientes de , o la versión de transporte.

/1.1 codifica mensajes de texto en una secuencia y requiere reglas de estrictas. Las conexiones persistentes ahorran apretones de manos, pero la , los tiempos de espera y el análisis divergente crean riesgos. /2 introduce tramas, flujos, , y , lo que reduce la sobrecarga y el encabezado de línea a nivel , aunque la pérdida de todavía afecta a todos los flujos.

usa sobre , integra 1.3, aísla la pérdida por transmisión, admite y usa . El descubrimiento puede realizarse a través de registros Alt-Svc y /SVCB, con respaldo a versiones anteriores. En las puertas de enlace, cada salto negocia su propia versión; el profesional necesita observar el mensaje lógico y la conexión de cada segmento.

La confiable comienza clasificando si la falla ocurrió antes o después de que hubo una respuesta , identificando quién creó el estado y asignando versiones, tiempos de espera, grupos, transmisiones y transformaciones. La arquitectura debe proteger la semántica, la y la seguridad durante las traducciones entre protocolos.

Ejercicios de repaso

  1. Explique la diferencia entre la semántica y el mapeo de versiones específicas.
  2. ¿Por qué apátrida no significa que una aplicación no puede mantener una sesión?
  3. Diferenciar recurso, , y .
  1. ¿Qué componentes de una participan en una solicitud y cuáles no se envían?
  2. Diferenciar el del método idempotente y dar ejemplos.
  3. ¿Por qué repetir después del puede producir duplicidad incluso cuando el cliente recibió 504?
  4. ¿Quién puede crear un 502 en una cadena con múltiples ?
  5. ¿Por qué no debería utilizarse la frase de motivo en la lógica del cliente?
  6. Diferenciar tipo de , codificación de y codificación de transferencia.
  7. Explique por qué Vary es necesario en la negociación de en caché.
  8. ¿Qué significa "Control de caché: sin caché"?
  9. ¿Cómo ayudan e If-Match a evitar la pérdida de actualizaciones?
  10. ¿Por qué no conserva los límites de los mensajes ?
  11. ¿Qué riesgos existen cuando la Content-Length y la codificación de transferencia se interpretan de manera diferente?
  12. ¿Por qué una conexión persistente sólo se puede reutilizar después de consumir por completo el mensaje anterior?
  13. Describir el encabezado de línea en la canalización /1.
  14. ¿Cómo asigna /2 una solicitud a frames y transmisiones?
  15. Diferenciar entre /2 y control de congestión .
  16. ¿Cuál es la función de SETTINGS_MAX_CONCURRENT_STREAMS?
  17. ¿Cómo ayuda con las implementaciones y el drenaje?
  18. ¿Cómo reduce los gastos generales y por qué crea un estado por conexión?
  19. ¿Cuál es el papel de en la negociación /2?
  20. ¿Por qué /2 sigue sujeto al encabezado de línea de ?
  21. ¿Por qué es incorrecto afirmar que es “ no confiable”?
  22. ¿Cómo permite la migración de rutas?
  23. ¿Cuál es el riesgo de 0- para operaciones con efectos?
  24. ¿En qué se diferencia conceptualmente de ?
  25. ¿Cómo puede Alt-Svc anunciar sin cambiar el lógico?
  26. ¿Por qué una puede usar públicamente y /1.1 en el ?
  27. ¿Qué métricas adicionales se necesitan en /2 y ?
  28. Proponer un presupuesto de para el cliente, el borde, la puerta de enlace y el .
  29. Diseñe una estrategia de segura para pagos y .
  30. Explique cómo una traducción de H2 a H1 puede crear un riesgo de smuggling.
  31. Describe la evidencia necesaria para demostrar qué versión se utilizó en cada salto.

Preguntas de discusión arquitectónica

  • En una organización con miles de , ¿qué criterios justifican habilitar /2 o en el borde y el ?
  • ¿Cómo deberían los equilibradores distribuir la carga cuando pocas conexiones transportan muchos flujos?
  • ¿Qué campos deberían eliminarse o reconstruirse en una cadena con , , puerta de enlace y malla de servicios?
  • ¿Cómo garantizar la de las operaciones financieras cuando pueden ocurrir tiempos de espera y en varios componentes?
  • ¿Qué nivel de observabilidad de es aceptable en un entorno regulado sin exponer datos confidenciales?
  • ¿Cuándo es necesario el almacenamiento en búfer en la puerta de enlace y cuándo destruye los beneficios del ?
  • ¿Cómo probar la seguridad del análisis y la traducción de protocolos en una cinta transportadora automatizada?

Glosario

Tabla 17 - Glosario de capítulos.
TérminoDefinición
ALPNExtensión TLS utilizada para negociar el protocolo de la aplicación, como h2 o http/1.1.
Servicio alternativoMecanismo para anunciar un servicio HTTP alternativo, incluido el punto final HTTP/3.
autoridadComponente que identifica el host y el puerto lógico del origen.
Caché compartidoCaché que puede reutilizar respuestas para más de un usuario o cliente.
Conexión coalescenteReutilización controlada de una conexión HTTP/2 a más de un origen.
Connection IDsIdentificador QUIC que permite asociar paquetes con la conexión más allá de la tupla IP/puerto.
ContenidoSecuencia de datos del mensaje después de la decodificación de tramas adecuada.
Negociación de contenidosSelección de representación según preferencias y capacidades.
Flujo de controlFlujo HTTP/3 unidireccional que lleva el control de la conexión.
Campo de extremo a extremoCampo cuyo significado se aplica a puntos finales, incluso a través de intermediarios.
etiqueta ETValidador opaco asociado a una representación.
control de flujoMecanismo que impide que el emisor supere los buffers anunciados por el receptor.
framingReglas para determinar los límites y el contenido de los mensajes en transporte.
GOAWAYSeñale que una conexión no aceptará nuevas transmisiones/solicitudes más allá de un cierto límite.
frame de ENCABEZADOSMarco que transporta bloque comprimido de campos en HTTP/2 o HTTP/3.
Bloqueo de cabecera de líneaRetraso en operaciones independientes causado por un elemento anterior faltante o lento.
HPACKCompresión de campos utilizada por HTTP/2.
HTTP/3Mapeo de la semántica HTTP a QUIC.
IdempotenciaPropiedad por la cual la repetición de la misma intención produce el mismo efecto pretendido.
IntermedioParticipante HTTP que recibe y reenvía mensajes, como un proxy o puerta de enlace.
MultiplexaciónCompartir una conexión a través de múltiples intercambios independientes.
OrigenFuente lógica responsable del recurso identificado por el URI.
PseudoencabezadoCampo especial HTTP/2/3 que comienza con dos puntos, como por ejemplo: método.
paquete qCompresión de campos utilizada por HTTP/3.
RÁPIDOTransporte seguro y multiplexado a través de UDP utilizado por HTTP/3.
RepresentaciónDatos y metadatos que representan el estado de un recurso.
Solicitar contrabandoAtaque basado en divergencia en los límites de solicitudes entre intermediarios.
Método seguroMétodo cuya intención es esencialmente la lectura.
corrienteCanal lógico y ordenado dentro de una conexión multiplexada.
TráilerCampo enviado después del contenido del mensaje.
ValidadorMetadatos utilizados para probar si la representación almacenada sigue siendo válida.
variarCampo que informa dimensiones de la solicitud utilizada para seleccionar una respuesta.

Referencias oficiales y lecturas recomendadas.

Las referencias a continuación priorizan las especificaciones y la documentación oficial. Se deben consultar los con sus erratas y cualquier documento que las actualice. La documentación del producto debe validarse para la versión, el nivel y la puerta de enlace utilizados en el entorno.

  1. 9110 - Semántica - ://www. -editor.org/ /rfc9110.
  2. 9111 - Almacenamiento en caché - ://www. -editor.org/ /rfc9111.
  3. 9112 - /1.1 - ://www. -editor.org/ /rfc9112.
  4. 9113- /2- ://www. -editor.org/ /rfc9113.
  5. 9114- - ://www. -editor.org/ /rfc9114.
  6. 7541 - : Compresión de encabezado para /2 - ://www. -editor.org/ /rfc7541.
  7. 9204 - : Compresión de campos para - ://www. -editor.org/ /rfc9204.
  8. 9000 - : un transporte seguro y multiplexado basado en - ://www. -editor.org/ /rfc9000.
  9. 9001: uso de para proteger : ://www. -editor.org/ /rfc9001.
  10. 9002 - Control de congestión y detección de pérdidas - ://www. -editor.org/ /rfc9002.
  11. 7838 - Servicios alternativos - ://www. -editor.org/ /rfc7838.
  12. 9460 - Enlace de servicios y registros de recursos - ://www. -editor.org/ /rfc9460.
  13. 9651 - Valores de campos estructurados para - ://www. -editor.org/ /rfc9651.
  14. 7301: Negociación del protocolo de capa de aplicación : ://www. -editor.org/ /rfc7301.
  15. 9308 - Aplicabilidad del protocolo de transporte - ://www. -editor.org/ /rfc9308.
  16. 9312 - Manejabilidad del protocolo de transporte - ://www. -editor.org/ /rfc9312.
  17. Registro de nombres de campos de : ://www. .org/assignments/ -fields/ -fields.xhtml
  18. Registro de códigos de estado de : ://www. .org/assignments/ -status-codes/ -status-codes.xhtml
  19. Axway: configurar servicios : ://docs.axway.com/bundle/axway-open-docs/page/docs/apim_policydev/apigw_gw_instances/general_services/index.
  20. Axway: configurar los ajustes del host remoto: ://docs.axway.com/bundle/axway-open-docs/page/docs/apim_policydev/apigw_gw_instances/general_remote_hosts/index.
  21. Microsoft: puerta de enlace en Azure Management: ://learn.microsoft.com/en-us/azure/ -management/ -management- -overview
  22. Microsoft: política de solicitud de reenvío: ://learn.microsoft.com/en-us/azure/ -management/forward- -policy
  23. Microsoft: administrar protocolos y cifrados en Management: ://learn.microsoft.com/en-us/azure/ -management/ -management-howto-manage-protocols-ciphers

Orden de lectura sugerido

  1. Lea las secciones introductorias y la terminología de 9110 antes de estudiar versiones específicas.
  2. Estudie 9112 centrándose en el de mensajes, la conexión y la seguridad del análisis.
  3. Lea la descripción general, frames, flujos, y errores de 9113; consultar en paralelo.
  4. Estudie en las secciones de conexión, flujos, y migración de 9000, seguido de la integración de en 9001.
  5. Lea 9114 y , que enumeran lo que se delega a .
  6. Consulte Alt-Svc y /SVCB para comprender el descubrimiento y el fallback.
  7. Finalmente, mapear las capacidades y limitaciones de la versión de Axway y Azure utilizada en el trabajo.

Cierre

Dominar significa dominar el límite entre la intención comercial y el transporte. El próximo capítulo profundizará en y , explicando cómo la identidad, la confidencialidad y la integridad protegen cada una de estas conexiones.