Может кто-нибудь подсказать мне следующую ситуацию (Linux 2.6.18-348.4.1.el5):
Каковы возможные причины, по которым tcpdump может показать пакет, который отсутствует в strace? Это больше похоже на проблему с сервером, проблему с настройками TCP или проблему с брандмауэром?
касперд был прав насчет strace не показывает все потоки процесса (я почему-то был уверен, что присоединение к процессу будет отслеживать все потоки). Итак, auditd подтвердил, что это мое приложение закрывает сокет (потому что происходит какой-то таинственный "сигнал 33" и recv () не обрабатывает EINTR должным образом. Я задам другой вопрос по этому поводу).
Что-то вызывает закрытие соединения на стороне сервера. Скорее всего, это приложение на удаленном сервере отключает соединение. Возможные причины - простаивающая функция отключения на сервере, программные ошибки и т. Д.
Если удаленный сервер находится за NAT, это также может быть вызвано истечением срока действия записи NAT в устройстве, выполняющем NAT.
Ты должен бежать tcpdump
на сервере и посмотрите, FIN
пакет исходит от этого сервера. Если да, то вероятным виновником является приложение. Если нет, то это от брандмауэра.