es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Números de secuencia y de reconocimiento en TCP | ¿son importantes estos números durante el handshake de TCP? Los números de secuencia y de reconocimiento en TCP son de vital importancia durante el handshake de TCP. Durante este proceso, ambos números son utilizados para establecer una comunicación confiable y ordenada entre los dispositivos de origen y destino. El número de secuencia en TCP indica el orden de las diferentes unidades de datos transmitidas (paquetes) por el dispositivo de origen. Cada paquete enviado tiene un número de secuencia que corresponde a la posición que ocupa en la secuencia completa de paquetes. Por otro lado, el número de reconocimiento en TCP indica el número de secuencia del último paquete correctamente recibido por el dispositivo de destino. Este número es utilizado para informar al dispositivo de origen cuál es el próximo paquete esperado y así mantener la sincronización adecuada en la transmisión. De esta manera, los números de secuencia y de reconocimiento en TCP son fundamentales para la correcta sincronización y confiabilidad de la comunicación durante el handshake y a lo largo de toda la transmisión de datos.

He creado un programa sencillo en C.

Actualmente estoy tratando de establecer un saludo TCP entre el servidor y el cliente.

1) Así que cuando recibo la señal [SYN], respondo con las señales [SYN+ACK] (junto con cualquier número de secuencia, así que lo elijo como cero) y cualquier número ACK.

2) Y en el código, cuando recibo en el servidor la señal ACK del cliente en el último paquete del saludo TCP, envío la señal ACK junto con mi propio número de secuencia elegido (cualquier número) y el número ACK = uno incrementado del número de secuencia del paquete SYC recibido, ya que no se ha transmitido ningún dato desde el servidor.

Pero no estoy recibiendo ningún paquete ACK. Mi cliente sigue enviando paquetes SYN y mi servidor sigue respondiendo con paquetes Syn + ACK.

Me gustaría saber si los números de secuencia y los números de reconocimiento durante el proceso de saludo TCP son irrelevantes para que me pueda centrar en otros campos que podrían ser la razón por la cual mi cliente está ignorando mi paquete SYN respondido SYC+ACK, como la IP y el checksum de TCP. O si hay algo mal en el manejo de los números de secuencia y reconocimiento en primer lugar.

Además, estoy utilizando el dispositivo TUN en Linux que creé desde el programa del servidor.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Es importante asegurarse de que los números de secuencia y los números de acuse de recibo utilizados durante el saludo TCP sean correctos para que el saludo sea exitoso.

    Según la información proporcionada, parece que el servidor envía un paquete SYN+ACK en respuesta al paquete SYN del cliente, pero no recibe un paquete ACK del cliente. Esto podría deberse a diversas razones, como números de secuencia incorrectos, números de acuse de recibo incorrectos o problemas con otros campos como la comprobación de IP y TCP.

    Se recomienda revisar el manejo de los números de secuencia y acuse de recibo en el código para asegurarse de que se estén incrementando correctamente y que los valores se estén estableciendo adecuadamente. Además, podría ser útil verificar si hay errores en el código relacionados con cálculos de comprobación o con otros campos que puedan estar causando problemas.

    El uso de un dispositivo TUN en Linux también puede requerir configuraciones o comprobaciones adicionales para asegurarse de que esté configurado adecuadamente para la comunicación TCP.

    En general, es importante depurar y solucionar cualquier problema que impida que el saludo TCP sea exitoso.

Comments are closed.