Nombre de dominio de voladura udp
En primer lugar, tcp y udp funcionan en la capa de transporte y se utilizan para transmitir datos entre programas. Los datos generalmente incluyen: tipo de archivo, tipo de video, imágenes jpg, etc.
TCP se basa en conexión, mientras que UDP no tiene conexión.
Los datos de transmisión TCP son estables y confiables, y son adecuados para escenarios que requieren una alta calidad de comunicación de red y deben transmitirse con precisión a la otra parte, como transferir archivos, enviar correos electrónicos, navegar por la web, etc. .
La ventaja de udp es que es rápido, pero puede causar pérdida de paquetes, por lo que es adecuado para escenarios con altos requisitos de tiempo real pero sin demasiada pérdida de paquetes. Por ejemplo: consulta de nombre de dominio, llamada de voz, transmisión de video en vivo, etc. Otro escenario de aplicación muy importante de udp es la red de túneles, como VXLAN.
Tomemos como ejemplo la comunicación entre personas: el protocolo UDP equivale a escribir una carta a la otra parte. Una vez enviada la carta, no tiene forma de saber si la otra parte ha recibido la carta, si el contenido de la carta está completo y no puede obtener comentarios oportunos. El protocolo TCP es como la comunicación telefónica. Puede obtener comentarios oportunos en esta serie de procesos para garantizar que la otra parte los reciba a tiempo. Como se muestra en la siguiente figura:
¿Cómo garantiza TCP el proceso anterior?
Se divide en tres pasos: protocolo de enlace de tres vías, confirmación de transmisión y cuatro ondas. El apretón de manos de tres vías es el proceso de establecer una conexión.
Cuando el cliente inicia una conexión con el servidor, primero enviará un paquete de solicitud de conexión. Pregunta si es posible conectarnos contigo. Este tipo de paquete de datos se llama paquete SYN. Si el par acepta la conexión, responderá con un paquete SYN+ACK. Una vez que el cliente lo recibe, enviará un paquete ACK y se establecerá la conexión. Debido a que durante este proceso se envían tres paquetes de datos entre sí, se denomina protocolo de enlace de tres vías.
Esto es para evitar errores causados por mensajes de solicitud no válidos que se transmiten repentinamente al servidor. ¿Qué quiere decir esto?
Suponiendo que la conexión se establece mediante dos apretones de manos, el cliente envía un paquete de sincronización al servidor para solicitar una conexión. Por razones desconocidas, no se pudo acceder al servidor y un nodo de red quedó atascado en el medio. Para establecer la conexión, el cliente reenviará el paquete de sincronización. Esta vez, el paquete de datos se envía normalmente y la conexión se establece después de que el servidor envía syn + ack.
Sin embargo, la red bloqueada por el primer paquete se recuperó repentinamente y el primer paquete de sincronización se envió al servidor. En este momento, el servidor pensará que el cliente ha iniciado una nueva conexión y entrará en un estado de espera de datos después de dos apretones de manos. El servidor cree que hay dos conexiones, pero el cliente cree que es una conexión, lo que genera un estado inconsistente. Si el servidor no recibe el último paquete de confirmación en el protocolo de enlace de tres vías, naturalmente no considerará que la conexión se haya establecido correctamente.
Por lo tanto, el protocolo de enlace de tres vías esencialmente resuelve el problema de los canales de red poco confiables. Para establecer una conexión confiable en un canal no confiable, después de tres apretones de manos, tanto el cliente como el servidor ingresan al estado de transmisión de datos.
Un paquete de datos se puede dividir en varios paquetes y enviar. ¿Cómo afrontar el problema de la pérdida de paquetes? Estos paquetes llegan en un orden diferente. ¿Cómo afrontar los problemas de desorden?
Para solucionar estos problemas, el protocolo TCP establece un buffer de envío para cada conexión. Una vez establecido el enlace, el número de secuencia del primer byte es 0 y el número de secuencia de cada byte aumentará en 1. Al enviar datos, una parte de los datos se toma del búfer de datos para formar un mensaje de envío, y el número de secuencia y la longitud se incluirán en el encabezado del protocolo TCP. Después de recibir los datos, el extremo receptor debe responder con un mensaje de confirmación. El reconocimiento en el mensaje de confirmación es igual al número de secuencia recibido más la longitud. Es decir, el número de secuencia inicial de la siguiente transmisión de datos en paquete. En este modo de transmisión de preguntas y respuestas, el remitente puede confirmar que los datos transmitidos han sido recibidos por la otra parte. El remitente también puede enviar varios paquetes de datos de forma continua a la vez y el receptor solo necesita responder con un acuse de recibo. una vez. Como se muestra en la figura:
Seis o cuatro ondas:
Tanto el cliente como el servidor en el estado conectado pueden iniciar una solicitud para cerrar la conexión. Cerrar la conexión requiere 4 ondas. . Supongamos que el cliente inicia una solicitud para cerrar la conexión. Envía un paquete FIN al servidor para indicar que desea cerrar la conexión. Ingresa la terminación y espera a que se complete 1. El servidor recibe el paquete FIN y envía un paquete ACK para indicar que ha entrado en el estado de espera de apagado y el cliente entra en el estado de espera de terminación. Esta es la segunda ola, cuando el servidor también puede enviar datos no enviados y el cliente también puede aceptar datos.
Después de que el servidor envía los datos, envía un paquete FIN y finalmente ingresa al estado de confirmación. Esta es la tercera ola. Después de recibir el paquete ACK, el cliente vuelve al estado de espera de tiempo de espera y cierra la conexión después del tiempo de espera. Después de que el servidor recibe el paquete ACK, cierra inmediatamente la conexión. Esta es la cuarta ola.
¿Por qué el cliente espera el tiempo de espera? Esto es para garantizar que la otra parte haya recibido el paquete de confirmación, porque se supone que el cliente libera la conexión después de enviar el último paquete de confirmación. Una vez que el paquete ACK se pierde en la red, el servidor permanecerá en el estado de reconocimiento final. Si espera un período de tiempo, el servidor reenviará el paquete FIN porque no recibe el paquete ACK, y el cliente responderá al paquete FIN reenviando el paquete ACK y actualizando el tiempo de espera. Este mecanismo es el mismo que el apretón de manos de tres vías. Y garantice una confirmación de desconexión confiable en enlaces de red no confiables.
Udp: En primer lugar, el protocolo udp no tiene conexión. El envío de datos simplemente encapsula un paquete de datos simple y luego lo envía desde la tarjeta de red. No existe una conexión con estado entre paquetes. Debido a este método de procesamiento simple, la pérdida de rendimiento de UDP es muy pequeña y los recursos de CPU y memoria son muy inferiores a los de TCP. Sin embargo, UDP no puede garantizar la pérdida de paquetes durante la transmisión de la red, por lo que UDP es más débil que TCP en términos de estabilidad de transmisión.
Entonces, la principal diferencia entre tcp y udp es que los datos transmitidos por tcp son estables y confiables, y son adecuados para escenarios que requieren una alta calidad de comunicación de red y deben transmitirse con precisión a la otra parte. Por ejemplo, transferir archivos, enviar correos electrónicos, navegar por la web, etc. , la ventaja de UDP es que es rápido, pero puede causar pérdida de paquetes, por lo que es adecuado para escenarios con altos requisitos en tiempo real pero sin demasiada pérdida de paquetes. Por ejemplo: consulta de nombre de dominio, llamada de voz, transmisión de video en vivo, etc.
Otro escenario de aplicación muy importante de udp es la red de túneles, como VXLAN.