Resumen

  • STOP_SENDING expresa que el receptor ya no quiere un sentido entrante, pero no prueba que los bytes anteriores fueran ignorados.
  • RESET_STREAM termina solo el sentido emisor del par; final size registra crédito de control de flujo consumido, no trabajo realizado o deshecho.
  • Los hechos del transporte deben separarse de la admisión de la aplicación, la aceptación de la cancelación, los efectos duraderos, la compensación y el resultado final.

Un cliente puede agotar un plazo, dejar de querer una respuesta y enviar STOP_SENDING con un código de error de aplicación. Ese hecho pertenece al transporte. Solicita al par que deje de transmitir en una dirección de un flujo QUIC. No convierte el registro de operaciones en evidencia de que un pedido, trabajo o solicitud remota haya sido cancelado. Los bytes y la actividad empresarial avanzan por estados distintos.

RFC 9000 permite que una aplicación que ya no está interesada en los datos que recibe aborte la lectura. Si la parte receptora está en Recv o Size Known, el transporte debería enviar STOP_SENDING para impulsar el cierre de la dirección opuesta. La advertencia decisiva es explícita: no garantiza que los datos entrantes sean ignorados. Los STREAM anteriores pudieron llegar, ser entregados a la aplicación o ser procesados. Los bytes STREAM recibidos después de STOP_SENDING siguen contando para el control de flujo del flujo y de la conexión, aunque el transporte los descarte.

La respuesta del par es otra transición. Si su parte emisora está en Ready o Send, debe enviar RESET_STREAM. En Data Sent puede esperar hasta que los datos pendientes sean confirmados o declarados perdidos. Si se declaran perdidos, debería enviar RESET_STREAM en lugar de retransmitirlos. El par debería copiar el código de error de STOP_SENDING, pero puede elegir otro. Además, quien envió STOP_SENDING puede ignorar el código posterior de RESET_STREAM; ambos códigos deben registrarse por separado.

La dirección importa. RESET_STREAM termina abruptamente solo la parte emisora. En un flujo bidireccional, la dirección contraria sigue siendo independiente. Para detener ambas, un endpoint puede usar RESET_STREAM para su propia emisión y STOP_SENDING para fomentar el cierre del sentido opuesto. Ninguna señal cierra la conexión ni prueba que terminó el intercambio de solicitud y respuesta o el proceso de negocio.

final size es evidencia de control de flujo. Representa la cantidad de datos que consume crédito de control de flujo a nivel de conexión. Una vez conocido no cambia, tanto si el flujo termina normalmente como si se reinicia. No indica cuánto trabajo completó la aplicación, si la operación fue admitida ni si un efecto fue revertido. Tras RESET_STREAM, el endpoint deja de transmitir y retransmitir tramas STREAM en ese sentido. Es una regla del transporte, no una restauración del estado remoto.

La fiabilidad también tiene un límite. QUIC no retransmite un paquete perdido como unidad completa: vuelve a enviar la información pertinente en tramas nuevas cuando hace falta. RESET_STREAM se mantiene hasta ser confirmado o hasta que todas las tramas del flujo hayan sido confirmadas. STOP_SENDING se mantiene hasta que la parte receptora llegue a Data Recvd o Reset Recvd. La recepción o confirmación muestra avance en la máquina de estados QUIC, no que el par ignoró bytes previos, canceló trabajo, deshizo efectos o completó una compensación.

El registro debe separar identidad de conexión, stream ID, iniciador, tipo de flujo y dirección afectada. También debe guardar la decisión local de dejar de leer, cada envío y retransmisión de STOP_SENDING, sus códigos, RESET_STREAM y su código independiente, final size, el crédito consumido y los bytes STREAM posteriores. Solo evidencia adicional de aplicación puede establecer admisión o consumo remoto, aceptación o rechazo de la cancelación, efectos duraderos, reversión, compensación y resultado final.

La separación evita confundir este caso con otros. TR-045 trata de ACK y procesamiento de paquetes; TR-046, del permiso acumulado de control de flujo; TR-052, de DATAGRAM y sus garantías ausentes de entrega; TR-053, de CONNECTION_CLOSE y el final del estado de transporte. STOP_SENDING no es ninguno de ellos: solicita detener una dirección concreta mientras la conexión puede seguir activa.