Wireshark - что случилось?

351
Shanee Vanstone

Эта проблема с Wireshark сводила меня с ума в течение нескольких часов. Что тут происходит?

192.168.2.100 - сервер Apache, который обслуживает статический файл.

192.168.2.196 - встроенный клиент, загружающий файл.

Похоже, что 192.168.2.196 успешно загружает файл, а затем он просто начинает игнорировать 192.168.2.100, и, следовательно, соединение останавливается и в конце концов заканчивается?

Это правильно и почему клиент может делать это?

Wireshark image - click here

-1
Существует ли антивирус / брандмауэр, который может заблокировать соединение? Allen Howard 6 лет назад 0
Я так не думаю. Кроме того, он иногда завершает всю загрузку. Shanee Vanstone 6 лет назад 0
Это похоже на проблему клиента: существует ряд причин, по которым клиент перестает запрашивать загрузку, из-за чего не хватает дискового пространства; другие включают нехватку ОЗУ для буферизации (особенно если не настроен своп) и другие программы, не позволяющие клиенту иметь достаточное время ЦП. AFH 6 лет назад 1
AFH, это, вероятно, на стороне клиента! Есть идеи, что это может быть? Клиент останавливается при вызове lwip_read () (ожидание данных), поэтому буфер не должен быть заполнен. Shanee Vanstone 6 лет назад 0

1 ответ на вопрос

0
KPiette

Симптомы ясно указывают на то, что существует узкое место обработки приема на стороне клиента.

Трассировка показывает, что приемный буфер в клиентском сетевом стеке (очевидно, LwIP) заполняется. В частности, размер окна в подтверждениях от клиента уменьшается по мере того, как серия пакетов принимается от сервера, пока приемный буфер не заполнится полностью и не будет "" ZeroWindow "отправляется от клиента к серверу, чтобы запросить прекращение отправки данных.

Обычно это указывает на то, что приложение, считывающее данные из сокета, недостаточно быстро истощает приемный буфер, чтобы позволить сетевому стеку идти в ногу с поступающими пакетами.

Частые повторные передачи с сервера в сочетании с задержанными ACK от клиента позволяют предположить, что условия на клиенте также негативно влияют на обработку низкоуровневых принимаемых пакетов в сетевом стеке.

Вы упомянули, что клиентский хост был встроенным устройством, а также прокомментировали, что ваше приложение заблокировано с помощью lwip_read (). Ожидание предполагает, что другой ресурс ввода-вывода или ЦП или узкое место планирования может препятствовать тому, чтобы ваш поток чтения получил достаточно времени ЦП, чтобы не отставать от передачи файла. Однако задержанные ACK предполагают, что может быть более широкая проблема. Не зная больше о встроенном устройстве, трудно продолжить поиск неисправностей.

LwIP также имеет особые ограничения, связанные с обслуживанием сетевых вызовов, которые могут применяться к вашей реализации - см. Эту страницу ловушек LwIP .

Я надеюсь, что эта информация полезна для решения вашей проблемы.