¿Cómo es TCP más confiable que UDP?

No estoy seguro de por qué esto debe hacerse aquí y no entenderse al leer CUALQUIER material en TCP o UDP.

Pero en los términos más simples, dado que la pregunta ya está aquí, TCP rastrea qué paquetes son recibidos por el otro extremo (es decir, espera el reconocimiento del otro lado). Si no, retransmitiría los paquetes no reconocidos.

Tampoco entregará ningún paquete fuera de servicio en general, así que digamos que se envían p1, p2, p3. Faltaba P2 pero se recibió p3. Sin embargo, la máquina de estado TCP esperaría hasta que también tenga p2, reordenarlos en secuencia antes de entregarlos a la aplicación.

Tenga en cuenta que lo anterior no significa que el protocolo envíe un reconocimiento manual de cada paquete. Solo hay un esquema (no quiero usar la ventana deslizante u otros nombres de esquemas aquí). Pero simplemente si el otro lado envía el acuse de recibo de dicho paquete 18, significa que 18 es el siguiente paquete que espera y todos los paquetes hasta el 17 se reciben y se consideran reconocidos.

TCP utiliza el protocolo de enlace de 3 vías y está orientado a la conexión.

TCP también asegura que después de que se haya establecido la conexión, tanto el servidor como el cliente estén informados sobre la conexión establecida.

Además, TCP está orientado a la conexión y, en cualquier circunstancia, incluso si se pierde un paquete durante la transmisión, se retransmite

Otras respuestas son correctas, pero quiero poner eso muy simple.

TCP funciona de esta manera: aquí está su información: está bien, lo entiendo . En caso de que alguien no responda, lo intentará nuevamente. Al final, todo será recibido.

UDP solo envía . No le importa si lo recibió o no.

Para todo lo demás, puede consultar esta guía: TCP y UDP.

Los paquetes TCP son secuenciales y requieren un acuse de recibo para cada paquete. Se utiliza para todos los paquetes de datos donde la secuencia y la integridad de los datos es importante.

UDP se usa para transmitir datos (música, películas y similares). Si pierde un paquete, no es tan importante. Por lo tanto, no hay secuencia ni reconocimiento de los paquetes.

TCP es confiable

UDP no es

Es realmente así de simple.

Los datagramas se pierden en Internet todo el tiempo. Incluso en enlaces sin ningún error de bit. Las colas de transmisión se llenan y los paquetes se pierden. Normal. Los cambios de ruta pueden conducir a pérdidas transitorias de paquetes.

Cada aplicación UDP tiene algún tipo de sistema de retransmisión a nivel de aplicación. La mayoría de las aplicaciones UDP implican enviar un mensaje y esperar una respuesta.

La mayoría de las aplicaciones TCP implican enviar un flujo de datos.

No tendría sentido implementar HTTP sobre UDP, replicando todas las transferencias de datos de transmisión HTTP (exactamente lo que implementa TCP) en el nivel de la aplicación HTTP innecesariamente.

Por otro lado, la resolución de DNS generalmente implica enviar un mensaje de menos de 200 bytes y esperar una respuesta del mismo tamaño. Si la respuesta no llega en 2 o 3 segundos, envíe otra consulta, en el peor de los casos, podría obtener dos respuestas y deseche una de ellas. Eso es bueno para UDP.

Los grandes datagramas UDP están fragmentados. Eso podría estar bien para consultas pequeñas, situaciones de respuesta media (hasta 20 KB de datos). Eso sería un desastre para un escenario de varios MB o GB. Si se pierde un solo fragmento de 1,5 KB, se descarta todo el datagrama y se debe retransmitir todo el datagrama.

Si estoy hablando con mi amigo a través de un teléfono de tecnología antigua donde tengo que decir “Hola Alice”, dejaré de hablar hasta que Alice me diga cuál es la última palabra que recibió “2, Alice”, donde 2 es el no. en la oración, y cada vez seguiré aumentando el no. de palabras por mensaje “¿Cómo estás?” Alice: “3, ¿tú?”, yo: “vamos a correr juntos esta noche en el club”, Alice: “4, juntas”.

así que enviaré “esta noche en el club”

así que si le estoy enviando un mensaje “ABCDEFG”

y él responde con 4, D, luego le enviaré “EFG”

en este momento sabré que Alice solo puede manejar 4 palabras por mensaje. así que le seguiré enviando un mensaje de 4 palabras (buffer / cache), esperando su confirmación

También Alice tiene el número de cada palabra en los mensajes, por lo que si obtuvo (1, A 2, B y 4, D)

él sabrá esa palabra no. Falta 3, por lo que responderá con 2, B

básicamente TCP es el mismo que envía N mensajes, esperando que el receptor confirme con el último mensaje que recibe.

UDP es el diferente

Enviaré todas mis palabras, y no me importa si Alice las recibe todas o no.