У меня есть HTTP-сервер, который обслуживает множество краткосрочных подключений от многих клиентов, сервер зарегистрировал некоторые недопустимые HTTP-запросы, поэтому я решаю захватить сетевой трафик. Вот что у меня получилось:
! [изображение] [1]
Из-за HTTP keep-alive поток выглядит так, как будто имеет 3 запроса, первый (заканчивающийся на APN: m-wap.0001
) нормально, но второй и третий - нет. Я не думаю, что пользователь отправляет такой запрос, я думаю, что это проблема сети (все недопустимые запросы исходят от пользователя сети 3G, за сетью NAT). Мы используем tcp_tw_reuse
и tcp_tw_recycle
раньше, но я отключил их сейчас, чтобы избежать проблем, связанных с сетью NAT. Но есть еще несколько недействительных запросов. У вас есть предложение?
Обновить: Наконец, я нашел ответ, сетевой провайдер изменил запрос, добавив 4 последних заголовка, и им нужно обновить номер SEQ / ACK, но похоже, что они не сделали это правильно в случае повторной передачи.
Я дал ответ в обновлении вопроса.
Вам не хватает части этого TCP-диалога при захвате пакетов?
Клиент отправляет Подтверждения и ACK
значение увеличивается, это означает, что данные были получены с другого конца, но в вашем захвате таких данных нет.
Если удаленный конец отправил FIN
но все еще были некоторые данные в его буфере отправки или данные, которые были отправлены, затем задержаны и прибыли не по порядку, это может объяснить, почему клиент выполняет сброс в последнем кадре.