Неверные подтверждения в TCP
Приложение Windows связывается со встроенным устройством через WiFi, но иногда оно внезапно отключается. Я перехватил связь с Wireshark и нашел последнюю связь между точкой отключения. Я вижу, что отправка подтверждения не является правильной. Я могу видеть TCP ложную повторную передачу и пропущенное подтверждение. Встроенное устройство имеет IP-адрес 192.168.1.1, а ПК с Windows - IP 192.168.1.2. Кто виноват в этих проблемах связи? Встроенное устройство (192.168.1.1) или приложение Windows (192.168.1.2). Скриншот пакетов прилагается.
1 ответ
"Ложные повторные передачи" от индикации встроенного устройства верны.
Индикация Wireshark неверна с указанием "TCP acked unseen сегмента". Похоже, что это ошибка Wireshark (которая может быть или не быть исправлена).
Смотрите: Ошибка Wireshark с "TCP Acked невидимый сегмент"?
Какую версию Wireshark вы используете?
В любом случае захваченные кадры показывают, что каждый конец в конечном итоге правильно подтверждает последние данные, отправленные другим концом, после чего ни один конец больше не отправляет данные. Так что, строго говоря, на уровне протокола нет ничего плохого.
Что должно было случиться после финальных кадров на соединении? Больше данных со встроенного устройства?
Как видно из захвата, встроенное устройство:
- отправляет ложные повторные передачи;
- странным образом отражает "размер окна приема" ("Win"), который, по-видимому, не имеет никакого отношения к фактическому количеству полученных данных. (Изменения размера кратны 1460, что предполагает связь с доступностью буфера).
Таким образом, учитывая выбор между проблемой Windows TCP (крайне маловероятной) и проблемой неизвестного мне встроенного устройства, я бы выбрал встроенное устройство (особенно учитывая некоторые странности в TCP с устройства).