Red de conocimiento informático - Problemas con los teléfonos móviles - La diferencia entre TCP y UDP (ilustración de todo el proceso de protocolo de enlace de tres vías y cuatro ondas)

La diferencia entre TCP y UDP (ilustración de todo el proceso de protocolo de enlace de tres vías y cuatro ondas)

En primer lugar, OSI tiene un modelo de siete capas, que es la capa de aplicación, la capa de presentación, la capa de sesión, la capa de transporte, la capa de red, la capa de enlace de datos y la capa física de arriba a abajo. /p>

TCP/UDP pertenece a la capa de transporte

1. La diferencia entre TCP y UDP

Generalmente, cuando nos comunicamos en la red, usaremos TCP/ UDP para comunicación, primero introduzcamos TCP ¿Cuál es la diferencia entre este y UDP y cuáles son las diferencias en los escenarios de aplicación?

TCP es un protocolo de transmisión estable, confiable y orientado a la conexión. Requiere tres apretones de manos para establecer una conexión. La comunicación solo puede ocurrir después de que el apretón de manos sea exitoso. relativamente bajo y es fácil ser atacado por DOS y DDOS.

UDP es un protocolo de transmisión sin conexión y poco confiable. Establece conexiones directamente y es rápido. No existe un mecanismo de protocolo de enlace de tres vías, por lo que es relativamente seguro. Sin embargo, UDP aún puede ser atacado por inundaciones. la red no es buena, es fácil que se pierdan paquetes.

2. Entonces, ¿cómo transmite TCP datos con precisión?

Cuando el cliente y el servidor establecen una conexión TCP a través de un protocolo de enlace de tres vías, cuando se completa la transmisión de datos, la conexión TCP debe desconectarse en consecuencia, por lo que hay cuatro pasos para romper.

Encabezado TCP:

ACK: El protocolo TCP estipula que solo es válido cuando ACK=1. También estipula que el ACK de todos los mensajes enviados después de que se establece la conexión debe ser. 1

SYN: Cuando SYN es 1, indica que este paquete de datos es un paquete de sincronización y se utiliza para indicar que se está solicitando una conexión.

Puede producirse un punto muerto. Supongamos que el cliente envía un mensaje de solicitud de conexión al servidor y que el servidor recibe y envía con éxito un mensaje de respuesta de confirmación al cliente. En este momento, el servidor no puede confirmar si el mensaje de respuesta ha llegado correctamente al cliente, pero debido a. Dos apretones de manos, por lo que en este momento el servidor está conectado correctamente y envía datos al cliente. Si el cliente no recibe un mensaje de respuesta del servidor, no sabe si el servidor ha confirmado que se ha establecido la conexión, o incluso si el mensaje que envió al servidor llegó correctamente. En este momento, el cliente lo hará. Piensa que la conexión no se ha establecido correctamente y la ignorará. Cualquier dato enviado desde el servidor. Cuando los datos enviados por el servidor no obtienen el tiempo de espera correspondiente, los mismos datos se enviarán repetidamente, formando así un punto muerto.

(1) Primera ola: el cliente envía un FIN para cerrar la transmisión de datos del cliente al servidor y el cliente ingresa al estado FIN_WAIT_1.

(2) La segunda ola: después de recibir el FIN, el servidor envía un ACK al Cliente y el número de secuencia de confirmación es el número de secuencia recibido + 1 (lo mismo que SYN, un FIN ocupa uno número de secuencia) y el servidor ingresa al estado CLOSE_WAIT.

(3) La tercera ola: el servidor envía un FIN para cerrar la transmisión de datos del servidor al cliente, y el servidor ingresa al estado LAST_ACK.

(4) La cuarta ola: después de que el Cliente recibe el FIN, el Cliente ingresa al estado TIME_WAIT y luego envía un ACK al Servidor. El número de secuencia de confirmación es el número de secuencia recibido + 1, y el servidor ingresa al estado CERRADO, completado cuatro veces Wave.

Esto se debe a que cuando el servidor está en estado LISTEN, después de recibir el mensaje SYN para establecer una solicitud de conexión, coloca ACK y SYN en un mensaje y lo envía al cliente.

Al cerrar la conexión, al recibir el mensaje FIN de la otra parte, solo significa que la otra parte ya no envía datos pero aún puede recibir datos. Es posible que no hayamos enviado todos los datos a la otra parte, por lo que no podemos cerrarla inmediatamente, o. podemos enviar Después de enviar algunos datos a la otra parte, luego enviar un mensaje FIN a la otra parte para expresar su acuerdo para cerrar la conexión ahora. Por lo tanto, nuestro ACK y FIN generalmente se envían por separado.