¿Qué significa "restablecimiento de conexión por igual"?

649

¿Cuál es el significado del error "restablecimiento de conexión por igual" en una conexión TCP? ¿Es un error fatal o solo una notificación o está relacionado con la falla de la red?

Franck Freiburger
fuente

Respuestas:

772

Es fatal. El servidor remoto le ha enviado un paquete RST, que indica una interrupción inmediata de la conexión, en lugar del apretón de manos habitual. Esto evita la transición normal de estado medio cerrado. Me gusta esta descripción :

"Restablecer conexión por igual" es el equivalente de TCP / IP de volver a colgar el teléfono. Es más cortés que simplemente no responder, dejando a uno colgando. Pero no es el FIN-ACK esperado del converso TCP / IP verdaderamente cortés.

ire_and_curses
fuente
49
¿Por qué está etiquetado como "restablecimiento de la conexión por parte de un compañero "? Parece que debería ser "restablecimiento de la conexión por parte del host" o "restablecimiento de la conexión por parte del servidor"
Robert
27
@Robert Porque de ahí vino el reinicio. El par envió un paquete RST.
Marqués de Lorne
106
... Robert, tu preocupación no tiene sentido para mí. Peer es estrictamente más general que eso. En un modelo típico de cliente-servidor, el servidor puede recibir fácilmente esta notificación del "cliente". La máquina que inicialmente solicita la conexión tiene la misma potencia para enviar esta notificación. En un nivel TCP, se ve idéntico una vez que la conexión está en curso. Las dos máquinas, cuando se comunican, son solo pares.
codetaku
99
¿Este paquete podría haber sido enviado por otro dispositivo en el medio como un enrutador?
Arnold Roa
3
No puede llamarse 'restablecimiento de conexión por servidor' porque puede ser enviado por el cliente o el servidor. No puede ser 'anulado'. Si un cliente recibe este error, esto significa que la conexión TCP ya no está abierta en el servidor, por ejemplo, ya que el servidor se bloqueó y se reinició.
Johannes Overmann
193

Esto significa que se recibió un TCP RST y la conexión ahora está cerrada. Esto ocurre cuando se envía un paquete desde su extremo de la conexión pero el otro extremo no reconoce la conexión; enviará de vuelta un paquete con el bit RST establecido para cerrar la conexión por la fuerza.

Esto puede suceder si el otro lado se bloquea y luego vuelve a subir o si llama close()al zócalo mientras hay datos suyos en tránsito, y es una indicación de que algunos de los datos que envió anteriormente pueden no haber sido recibidos.

Depende de usted si eso es un error; Si la información que estaba enviando era solo para beneficio del cliente remoto, entonces no importa que se hayan perdido los datos finales. Sin embargo, debe cerrar el socket y liberar cualquier otro recurso asociado con la conexión.

mark4o
fuente
11
Si establece la opción de socket SO_LINGER en cero al abrir un nuevo socket, luego ciérrela normalmente, se establecerá el bit RST. Entonces TODA la conexión terminará con un reinicio. No lo intentes en casa, es molesto. stackoverflow.com/questions/3757289
Chris Huang-Leaver
1
¿Cómo solucionar este problema, entonces, necesitamos reiniciar tanto el remoto como nuestro host?
user2225190
3
@ user2225190 Debe volver a conectar el cliente, pero primero debe examinar su software para asegurarse de que no se deba a un error en el protocolo de la aplicación, es decir, cerrar una conexión en la que el otro extremo todavía está escribiendo.
Marqués de Lorne
1
Gracias por tu comentario. Solía ​​funcionar durante dos meses. También lo intento desde una línea de comandos, pero sigo recibiendo este error. Intento con "sftp user @ machine". El error es inconsistente.
user2225190