Me doy cuenta de que esta podría ser una pregunta imposible de responder, pero aquí va:
Tengo una placa integrada para la que escribí una gran cantidad de software; A esta placa se le puede enviar una nueva imagen de firmware (la imagen aquí no es una imagen, sino una actualización del software que se ejecutará en la placa) a través de un navegador web. El navegador web se ejecuta en una computadora normal y lo gestiona la placa integrada. Entonces, abre un navegador en una computadora, escribe la dirección IP de la placa integrada y la placa integrada muestra una página que le permite elegir una nueva imagen de firmware para esta placa integrada.
Ahora, he estado desarrollando esto en Linux; Me refiero al software para la placa integrada y, por lo tanto, el navegador que he utilizado estaba en mis máquinas Linux. Cuando intento repetir esto en Windows, ¡va muy lento!
Mirándolo con Wireshark, la máquina con Windows envía un paquete que contiene nuevos datos de firmware, la placa integrada envía un ACK 400 μs (cuatrocientos microsegundos) después. La máquina Windows envía inmediatamente el siguiente paquete y el ACK, nuevamente, se devuelve después de unos cientos de microsegundos.
Sin embargo, el siguiente paquete después de esta ráfaga de cuatro paquetes se envía cinco segundos después y se repite la secuencia rápida de cuatro paquetes.
Esto continúa, con ráfagas de cuatro paquetes y luego intervalos de cinco segundos. Cuando tienes un archivo de 586K, esto lo hace tremendamente lento.
Si envía el archivo utilizando una máquina Linux, tardará unos segundos en enviar la imagen completa.
Probé el suyo en dos máquinas con Windows y dos máquinas con Linux con resultados idénticos. No he usado Windows "correctamente" en años y no sé cómo solucionarlo en absoluto. Me pregunto si podría ser un problema de firewall (pero entonces, ¿por qué dejaría pasar cosas, aunque sea lentamente?).
¿Alguien puede arrojar alguna luz sobre esto o hacer alguna sugerencia sobre por qué sería así, por favor? Me encantaría poder decirle a mi cliente que simplemente use Linux, ¡pero no creo que eso le iría bien! ;~)
Editar:
Agregué archivos pcap en caso de que ayuden. Tenga en cuenta que detuve Windows a mitad de camino porque es muy lento. El de Linux completa la transferencia del archivo. Windows carga lenta pcap
Respuesta1
Está bien, lo sospeché. Tenía el tamaño TCP Win en mi software. Lo aumenté y ahora funciona bien en ambas plataformas. Por si a alguien más le pasa algo así...