Я понимаю, что на этот вопрос, возможно, невозможно ответить, но вот что я скажу:
У меня есть встроенная плата, для которой я написал кучу программного обеспечения; на эту плату можно отправить новый образ прошивки (здесь изображение не является фотографией, а обновлением программного обеспечения, которое будет работать на плате) через веб-браузер. Веб-браузер работает на обычном компьютере и обслуживается встроенной платой. Итак, вы открываете браузер на компьютере, вводите IP-адрес встроенной платы, и встроенная плата выдает страницу, позволяющую вам выбрать новый образ прошивки для этой встроенной платы.
Теперь, я разрабатывал это на Linux; я имею в виду программное обеспечение для встроенной платы и, следовательно, браузер, который я использовал, был на моих машинах Linux. Когда я пытаюсь повторить это на Windows, это происходит чертовски медленно!
Если посмотреть на это с помощью Wireshark, то машина Windows отправляет пакет, содержащий новые данные прошивки, встроенная плата отправляет ACK через 400 мкс (четыреста микросекунд) позже. Машина Windows немедленно отправляет следующий пакет, и ACK, опять же, возвращается через несколько сотен микросекунд.
Однако следующий пакет после этого четырехпакетного пакета отправляется через пять секунд, и быстрая последовательность из четырех пакетов повторяется.
Это продолжается, с четырьмя пакетами всплесков, а затем пятисекундными промежутками. Когда у вас есть файл 586K, это делает его мучительно медленным.
Если вы отправляете файл с помощью машины Linux, отправка всего изображения займет несколько секунд.
Я пробовал его на двух машинах с Windows и двух машинах с Linux с идентичными результатами. Я не использовал Windows "правильно" годами и вообще не знаю, как с этим справиться. Интересно, может ли это быть проблема с брандмауэром (но тогда почему он пропускает что-то, пусть и медленно?).
Может ли кто-нибудь пролить свет на это или дать какие-либо предположения, почему это так? Я бы с удовольствием сказал своему клиенту просто использовать Linux, но не думаю, что это будет хорошо воспринято! ;~)
Редактировать:
Я добавил файлы pcap на случай, если они помогут. Обратите внимание, я остановил Windows-файл на полпути, потому что он очень медленный. Linux-файл завершает передачу файлов. Windows Медленная загрузка pcap
решение1
Ладно, догадался. У меня был размер TCP Win в моем программном обеспечении. Я увеличил его, и теперь он отлично работает на обеих платформах. На всякий случай, если кто-то еще столкнется с подобным...