Interpretación de la diferencia entre el protocolo TCP y el protocolo UDP

Esta sección explicará la diferencia entre el protocolo TCP y el protocolo UDP en detalle, como una sección en mi columna "Tutorial de inicio rápido del protocolo de red de computadoras".

escrito en frente

Cuando se formuló el protocolo en la etapa inicial, sin importar el modelo que fuera, el posicionamiento de la capa de transporte se utilizó para controlar la transmisión de datos. Por lo tanto, para un modelo jerárquico con una división clara, la comparación entre TCP y UDP suele ser una comparación de las capacidades de la capa de transporte, como la confiabilidad, si hay una conexión, si hay una secuencia, etc. Sin embargo, con la evolución de la tecnología, el control de la transmisión de datos no se limita necesariamente a la capa de transporte, Google también implementa el protocolo quic basado en UDP, que garantiza la confiabilidad de la transmisión de datos. De esta manera, incluso si UDP en sí mismo no es confiable, aún se puede garantizar la confiabilidad por encima de la capa de transporte. Muchas personas se preguntarán si TCP es más confiable que UDP, pero QUIC basado en UDP sigue siendo confiable, ¿qué está pasando? Esto se debe a que la comparación entre TCP y UDP es la capa de transporte en sí misma en el sentido habitual, y el alcance debe limitarse a la capa de transporte. Al mismo tiempo, se puede ver que la evolución de la tecnología está constantemente rompiendo algunos de los conceptos originales, si no es porque TCP/UDP se usa demasiado, no es tan fácil reemplazarlo por completo, tal vez la evolución ya ha sido más violento y minucioso. Al mismo tiempo, los primeros protocolos públicos eran limitados y algunas aplicaciones no personalizaban el protocolo de la capa de aplicación y se implementaban directamente en función de TCP o UDP, por lo que todos están obsesionados con la comparación de la capa de transporte. Este artículo aún discutirá la diferencia entre TCP y UDP dentro del alcance de la capa de transporte.

Durante el proceso de la entrevista, la entrevista más común sobre redes informáticas es describir brevemente la diferencia entre TCP y UDP. Por lo general, algunas respuestas son las siguientes:

  • TCP está conectado, UDP no tiene conexión
  • TCP es confiable, UDP no es confiable
  • TCP se basa en la transmisión de flujo, UDP se basa en la transmisión de paquetes
  • TCP tiene estado, UDP no tiene estado
  • TCP está ordenado, UDP no está ordenado

Este artículo comenzará con cada campo de TCP y UDP y profundizará en estas diferencias.

Conexión VS Sin conexión

TCP está conectado. El rendimiento específico es que antes de cada intercambio de datos formal, se requieren tres protocolos de enlace para determinar si las dos partes están listas para la comunicación, como se muestra en la Figura 1: Figura
inserte la descripción de la imagen aquí
1

Como se puede ver en la Figura 1, las partes de la comunicación completan el intercambio del estado de las partes de la comunicación a través de la bandera SYN y la confirmación ACK del paquete SYN Solo después de que pasa el protocolo de enlace de tres vías, el intercambio de datos posterior puede continuar normalmente .

Además, durante el proceso de reconocimiento de tres vías de la Figura 1, también se intercambia información como el tamaño de la ventana y el tamaño del MSS. El tamaño de la ventana de la ventana se utiliza para notificar a la parte de la comunicación el tamaño de datos actual que se puede aceptar, y el tamaño de MSS indica el tamaño de datos máximo permitido por la capa superior para cada transmisión TCP. A través del intercambio de esta información, las partes de la comunicación pueden comprender rápidamente el estado de cada uno, a fin de proporcionar una base para saber si se pueden enviar datos, cuántos datos se pueden enviar y si se pueden comunicar. Por ejemplo, cuando la ventana es 0, no es adecuada para la transmisión de datos, pero debe esperar a que se actualice el estado de la ventana antes de comunicarse.

Ya que hay una conexión establecida, debe haber una desconexión de la conexión.La Figura 2 muestra el proceso de desconexión de TCP:
inserte la descripción de la imagen aquí
Figura 2

Se puede ver que en una transmisión, cuando no se requiere la transmisión de datos, la parte conectada puede iniciar una desconexión.Después de que las dos partes lleguen a un consenso, ambas partes publicarán la información de comunicación en la transmisión.

La conexión de TCP se refleja en la necesidad de establecer la conexión y la necesidad de liberar la conexión. No hay un campo correspondiente en el protocolo UDP para garantizar el establecimiento de la conexión, por lo que la comunicación de UDP es sin conexión. Se puede ver que el establecimiento y liberación de la conexión es una negociación entre las dos partes sobre los parámetros de comunicación, y la conexión también puede reflejar que TCP es confiable hasta cierto punto.

Confiable VS No confiable

La transmisión TCP es confiable, pero la transmisión UDP no lo es, lo que se puede entender a partir de los siguientes aspectos:

  • La pérdida de paquetes ocurre en la transmisión de la red
  • La retransmisión se produce en la transmisión de red.
  • Transmisión de red fuera de servicio
  • La otra parte se desconecta repentinamente

1. TCP indica el contenido del paquete de datos recibido por el receptor a través del número de secuencia de confirmación, por lo que cuando se produce una pérdida de paquete, el receptor no confirmará el paquete de datos y activará el mecanismo de retransmisión de tiempo de espera de TCP para garantizar que los datos el paquete no se tirará. UDP no tiene un mecanismo correspondiente para garantizar que los paquetes de datos lleguen al receptor de manera confiable, por lo que UDP no es confiable

2. Después de que varios paquetes de datos lleguen al receptor, el receptor puede asegurarse de que los datos se vuelvan a ensamblar correctamente de acuerdo con el número de secuencia TCP, y no habrá desorden. UDP solo puede volver a ensamblar los datos de la capa de aplicación en el orden en que se reciben. El orden en que se reciben los datos no siempre es coherente con el orden en que se envían los datos. Por lo tanto, el orden y el desorden de TCP y UDP también pueden clasificarse como confiables. UDP no tiene esa función, por lo que UDP no es confiable.

3. Cuando el receptor recibe dos paquetes de datos idénticos, TCP descartará los paquetes de datos retransmitidos según el número de secuencia. UDP no tiene este mecanismo, por lo que UDP no es confiable.

4. La capacidad de procesamiento del receptor es limitada.TCP notifica al remitente la capacidad de recepción del receptor actual a través de los campos de ventana y escala de ventana, y el remitente determina el tamaño del contenido que se enviará de acuerdo con el tamaño. UDP no tiene un mecanismo correspondiente para garantizar que los datos enviados no excedan la capacidad de aceptación, por lo que UDP no es confiable

5. Cuando el receptor se desconecta repentinamente, el mecanismo es el mismo que la pérdida de paquetes. Si no se recibe confirmación del receptor, se activa una retransmisión y, una vez alcanzado el número de retransmisiones, la conexión se restablece y se desconecta directamente. UDP no puede percibir el estado de la otra parte y el remitente siempre transmitirá datos, por lo que UDP no es confiable.

Cabe señalar que la confiabilidad de TCP y UDP se refiere a si la capa de transporte es confiable y si esta capa puede proporcionar servicios confiables a la capa superior. Como se mencionó al principio del artículo, aunque UDP en sí mismo no es confiable, los servicios basados ​​en la transmisión UDP pueden generar una transmisión confiable en la capa superior de UDP. Por ejemplo, el protocolo quic se basa en UDP y la confiabilidad de su transmisión se realiza por el protocolo quic.

Basado en flujo vs basado en paquetes

Generalmente se dice que UDP se basa en la transmisión de paquetes, mientras que TCP se basa en la transmisión de flujo. Dado que UDP tiene un campo que indica claramente el tamaño de los datos de esta transmisión, como se muestra en la Figura 3:
inserte la descripción de la imagen aquí
La Figura 3
implica que después de recibir el paquete de datos, el receptor lo entregará directamente a la capa de aplicación para que lo procese según la longitud. De manera similar, para el remitente, la cantidad de datos que la capa de aplicación entrega a la capa de transporte, UDP formará estos datos en un paquete y lo enviará, y si excede el límite de la capa física, se fragmentará y transmitirá en IP. Por lo tanto, cuando se utiliza con frecuencia el protocolo UDP, la capa de aplicación suele limitar el tamaño de cada transmisión de datos, como 512 bytes, y realiza múltiples llamadas UDP.

Para TCP, cuando se procesan los datos de la capa de aplicación, el remitente no transmite directamente los datos de la capa de aplicación como un paquete cada vez, sino que divide una parte de los datos en varias partes para la transmisión de acuerdo con el MSS y el tamaño de la ventana de la otra parte. . Al igual que el flujo de agua, se transmite continuamente al receptor. Para el receptor, después de recibir los datos, se almacenarán en el búfer de recepción. La longitud de TCP indica el tamaño del encabezado y no indica el tamaño de los datos de la capa de aplicación, por lo que el receptor no sabe si los datos del remitente se han enviado o no. Por lo tanto, cuando se entrega a la capa de aplicación para su procesamiento, hay dos situaciones comunes: 1. El búfer está lleno y es necesario actualizar los datos 2. El remitente envía un campo push para solicitar a la capa de aplicación que procese el datos. Aunque no conocemos el tamaño total de los datos transmitidos, TCP primero garantiza la confiabilidad de la transmisión. El receptor solo necesita leer los datos del búfer regularmente de acuerdo con la política, para que el flujo de datos sea continuo. A menudo, cuando se utiliza el protocolo TCP, la capa de aplicación no limita el tamaño de los datos que se transmiten cada vez, sino que los maneja la capa de transporte y se realiza una llamada TCP.

Es precisamente debido a las características de transmisión de TCP que los paquetes pegajosos pueden ocurrir en algunos escenarios, como se muestra a continuación:

  • Para mejorar la eficiencia de transmisión de datos, tcp combina y envía varios paquetes pequeños entregados por la capa de aplicación, por lo que solo debe enviarse una vez y el receptor solo necesita confirmar una vez.
  • Incluso si varios paquetes más pequeños se envían por separado, pueden fusionarse en el búfer en el extremo receptor, y el extremo receptor solo necesita confirmar una vez.
    Esto hará que el destinatario no pueda desempaquetar estos paquetes combinados, por lo que se producirán paquetes fijos. Porque en algunos juegos, estos pequeños mensajes pueden representar diferentes comandos, por lo que deben distinguirse, de lo contrario, los comandos posteriores no tendrán efecto. La solución al problema de los paquetes adhesivos es agregar un campo de longitud de datos en la capa de aplicación para distinguirlos, como el campo de longitud de contenido de http, etc. Por lo tanto, se puede ver que este fenómeno debe depender de la función de la capa de aplicación, lo cual no es factible para la aplicación directamente basada en TCP, y el protocolo de la capa de aplicación debe personalizarse. Dado que Udp es una transmisión de paquetes, UDP no tiene el problema de los paquetes adhesivos.

eficiencia

  • El rango de longitud del encabezado TCP es de 20 a 60 bytes, y la longitud de UDP es de 8 bytes, por lo que la eficiencia de UDP es alta.
  • Para mantener la validez de la conexión, TCP necesita un protocolo de enlace de tres vías adicional y cuatro protocolos de enlace, lo que requiere una sobrecarga adicional.
  • TCP debe esperar la confirmación de la otra parte antes de transmitir los datos posteriores, por lo que la velocidad depende de la velocidad de confirmación de la otra parte. UDP no tiene este mecanismo y es altamente eficiente bajo ciertas circunstancias.
  • TCP necesita mantener los parámetros de estado de la transmisión, como el estado actual, la información de reensamblaje de TCP, el tamaño de la ventana, etc., por lo que el proceso de TCP consumirá más recursos.

Las anteriores son algunas de las principales diferencias entre TCP y UDP. Sigue siendo el punto de vista al principio del artículo. La evolución de la tecnología seguirá rompiendo algunos de los conceptos originales. Tal vez la diferencia entre TCP y UDP no sea tan importante en el futuro. Las funciones que le faltan a UDP pueden implementarse en una capa superior, y la integración de múltiples capas de protocolo también será desconocida.

Este artículo es un artículo original de los jóvenes del pueblo de CSDN, y no puede ser reproducido sin permiso. El blogger enlaza aquí .

Supongo que te gusta

Origin blog.csdn.net/javajiawei/article/details/125946316
Recomendado
Clasificación