Pregunta

Estoy leyendo acerca de las implementaciones UDP fiable (es decir. El envío de paquetes ACK y volver a enviar paquetes no ACK de nuevo).

De los dos patrones principales que parecen encontrar cerca de la red:

  1. cliente envía un ACK para cada paquete recibido con la secuencia de ese paquete. Server supone paquete es no entregados a menos que reciba un ACK.

  2. El cliente envía un paquete ACK con las secuencias de los paquetes que piensa están desaparecidos. Server supone paquete se entregó a menos que reciba un ACK desde el cliente diciendo que le falta una secuencia, a continuación, vuelve a enviar los paquetes (que faltan) solicitados de nuevo.

En resumen, en los clientes 1. envía la secuencia de los paquetes recibidos, mientras que en 2. El cliente envía la secuencia de los paquetes que faltan.

Sólo me preguntaba ¿cuáles son las ventajas / desventajas de cada método, y cuál es el más convencional (supongo 1, pero 2 parece un método muy inteligente ya assumably la mayoría de los paquetes no llegan y sólo unos pocos son por lo general pierden).

EDIT: Un ejemplo corto en ambos métodos:

Method 1: Server sends: 1,2,3,4,5 
Client received: 1,3,5,4 
Client sends back: ACK 1, ACK 3, ACK 5, ACK 4  
Server resends: 2.. maybe more if ACK packets were lost


Method 2:
Server sends 1,2,3,4,5,6,7,8
Client receives: 1,3,2,5,7
Client Sends :ACK (lowest continuous 3,highest received 7,  seem to be missing 4,6)
Server resends: 4,6,8
¿Fue útil?

Solución

# 2 también es conocido como ACK negativo, también conocido como NAK, es un punto de vista optimista de un transporte. Eso significa que es mejor escalas cuando el transporte está funcionando correctamente.

# 1 es un punto de vista pesimista y asume un transporte con frecuencia se producirá un error.

TCP ACK utiliza porque no hay dependencia fundamental en el control de la congestión para descartar paquetes para llevar a cabo la conformación del tráfico para crear una red justo. UDP canales fiables suelen utilizar NAK porque está utilizando un medio fiable de alta velocidad o flujo continuo de velocidad baja con el requisito de baja latencia durante el paso de bloqueo típica de una aplicación básica ACK.

Nota si usted se levanta un paso superior y vistazo a la administración de suscripciones por ejemplo por encima de un canal fiable UDP no hay un claro ganador para ACK o NAK uso. El mundo de los datos de mercado ha demostrado el uso de ambas tecnologías a alta velocidad en redes de alta capacidad. ACK tienen la ventaja, con las suscripciones, que no es necesario un complicado resincronización después de un fallo de la red, sin embargo, verá un pico consistente de la red y el uso de la CPU cuando cada huésped cuestiones una re-suscripción.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top