Cómo garantizar la transmisión confiable de TCP

Cómo garantizar la transmisión confiable de TCP

El sistema resume cómo garantiza la transmisión de datos en una conexión TCP

Inserte la descripción de la imagen aquí

01 Prefacio


Anteriormente, hemos introducido que las conexiones TCP son más complejas y seguras que las conexiones UDP, pero queremos saber cómo garantiza la seguridad de estos datos. ¿Cuáles son los secretos para enviar datos? A continuación, resumiré estas preguntas detalladas una por una.

Inserte la descripción de la imagen aquí

02 formas de garantizar la seguridad de los datos


TCP proporciona principalmente métodos como suma de verificación, número de secuencia / respuesta de reconocimiento, retransmisión de tiempo de espera, longitud máxima del mensaje y control de ventana deslizante para lograr una transmisión confiable.

Suma de comprobación

Mediante el método de suma de verificación, el extremo receptor puede detectar si los datos son erróneos o anormales; si hay un error, descartará directamente el segmento TCP y lo reenviará. Al calcular la suma de verificación, TCP agrega un pseudo encabezado de 12 bytes al encabezado TCP. La suma de comprobación calcula un total de 3 partes: encabezado TCP, datos TCP, pseudo encabezado TCP
Inserte la descripción de la imagen aquí

Número de serie / respuesta de confirmación

Este mecanismo es similar a la forma de pregunta y respuesta. Por ejemplo, en el aula, el maestro le preguntará "¿Entiende?" Si no responde después de un período de tiempo o si no comprende, entonces el maestro lo dirá nuevamente. De hecho, el mecanismo de respuesta de confirmación de la computadora también es el mismo: el extremo emisor envía información al extremo receptor y el extremo receptor responderá con un paquete. Este paquete es el paquete de respuesta.

Inserte la descripción de la imagen aquí

En el proceso anterior, mientras el extremo emisor tenga una transmisión de paquetes, el extremo receptor no responde al paquete de confirmación (paquete ACK), se retransmitirá. O el paquete de respuesta del extremo receptor, y el extremo emisor retransmitirá los datos sin recibirlos. Esto puede garantizar la integridad de los datos.

Retransmisión de tiempo de espera

La retransmisión de horas extras se refiere al tiempo entre el paquete de datos enviado y la recepción del paquete de acuse de recibo. Si se excede este tiempo, se considerará como una pérdida de paquete y debe retransmitirse. Entonces, ¿cómo confirmamos este valor de tiempo?

Sabemos que el tiempo de una ronda es siempre el mismo, y habrá un concepto similar al promedio. Por ejemplo, se tarda un total de 0.5s para enviar un paquete al extremo receptor, y luego se requieren 0.5s para enviar un paquete de confirmación de regreso al extremo emisor. Las dos veces son RTT (tiempo de ida y vuelta). Entonces puede haber un problema debido a razones de red, el tiempo tendrá una desviación, llamada jitter (varianza).

De la introducción anterior, el tiempo para la retransmisión de horas extras es probablemente un poco más largo que el tiempo de ida y vuelta + valor de fluctuación.

Inserte la descripción de la imagen aquí

Sin embargo, en el proceso de retransmisión, si el paquete no ha recibido un par después de múltiples retransmisiones, se considerará anormal en el extremo receptor y la conexión se cerrará por la fuerza. Y notifique a la aplicación que la comunicación se termina de manera anormal por la fuerza.

Longitud máxima del mensaje

Al establecer una conexión TCP, las dos partes acuerdan una longitud máxima (MSS) como la unidad de envío, y la retransmisión también se realiza en esta unidad cuando se retransmite. Idealmente, los datos de esta longitud simplemente no se dividen por la capa de red.
Inserte la descripción de la imagen aquí

Control de ventana deslizante

El mecanismo de retransmisión de horas extras que mencionamos anteriormente tiene el problema de la ineficiencia. Lleva un período de tiempo enviar un paquete al siguiente. ¿Entonces nos preguntamos si podríamos enviar el siguiente paquete sin esperar el paquete de confirmación? Esto trae a colación el concepto de una ventana deslizante.

Inserte la descripción de la imagen aquí

El tamaño de la ventana es la cantidad máxima de datos que el remitente puede enviar sin esperar el paquete de confirmación. La realización de este mecanismo es utilizar una gran cantidad de memorias intermedias, confirmando la función de múltiples segmentos. El siguiente paquete de confirmación puede determinar si el extremo receptor ha recibido los datos y, si se ha recibido, eliminar los datos del búfer.

Los datos fuera de la ventana son los datos que no se han enviado y que el igual ha recibido. Entonces, ¿cómo juzga el remitente si el receptor ha recibido los datos? ¿O cómo sabes qué datos deben reenviarse? Conózcalo en la siguiente imagen.

Inserte la descripción de la imagen aquí

Como se muestra en la figura anterior, antes de recibir los datos del número de serie que espera, el extremo receptor confirmará repetidamente los datos anteriores. Después de que el remitente recibe el mismo paquete de respuesta tres veces seguidas, los datos se han perdido y deben reenviarse.

Control de la congestión

El control de ventana resuelve el problema de la pérdida de paquetes entre los dos hosts debido a la velocidad de transmisión y, por un lado, garantiza la fiabilidad de la transmisión de datos TCP. Sin embargo, si la red está muy congestionada, enviar datos en este momento aumentará la carga en la red, entonces el segmento de datos transmitidos puede exceder el tiempo máximo de supervivencia y no alcanzar el receptor, lo que causará la pérdida de paquetes. Con este fin, TCP introduce un mecanismo de inicio lento, que envía primero una pequeña cantidad de datos, al igual que la búsqueda de rutas, primero descubre el estado actual de congestión de la red y luego decide qué tan rápido transmitir los datos.

Aquí se presenta una ventana de congestión:

Defina el tamaño de la ventana de congestión al comienzo de la transmisión como 1; cada vez que se recibe una respuesta ACK, la ventana de congestión aumenta en 1; y cada vez que se envían datos, la ventana de envío toma la menor ventana de congestión y la ventana de recepción del segmento de recogida.

Inicio lento: aumente exponencialmente al comienzo del inicio; establezca un umbral de inicio lento, detenga el crecimiento exponencial cuando el crecimiento exponencial alcance el umbral y aumente a la ventana de congestión de acuerdo con el método de crecimiento lineal; aumente inmediatamente la ventana de congestión cuando el crecimiento lineal alcance la congestión de la red Ajústelo de nuevo a 1 para comenzar una nueva ronda de "inicio lento" y, al mismo tiempo, el umbral de la nueva ronda se convierte en la mitad del original.

Inserte la descripción de la imagen aquí

03 Resumen


De hecho, el conocimiento mencionado anteriormente también se ha aprendido en la escuela, pero el conocimiento aparentemente inútil no se tomará en serio en el futuro. Para la parte de optimización de la red, puede consultar los métodos anteriores para la optimización.Puede utilizar estos métodos para proporcionar servicios de comunicación confiables y de alta velocidad.

Artículo de referencia

  • TCP / IP gráfico
  • ¿Cómo garantiza TCP la transmisión de datos?

Inserte la descripción de la imagen aquí

Publicado 57 artículos originales · ganado elogios 6 · vistas 6419

Supongo que te gusta

Origin blog.csdn.net/weixin_42724176/article/details/104811078
Recomendado
Clasificación