По какой-то причине, независимо от того, сколько раз я пытаюсь, после того, как клиент отправит команду PASV (которая правильно получена сервером), ответ сервера (227 Вход в пассивный режим) не возвращается клиенту. Я дошел до анализа трафика клиентов и серверов с помощью Wireshark, чтобы понять это. Что особенно странно, это то, что последний пакет, отправленный сервером, имеет те же настройки TCP, что и все остальные пакеты, которые он успешно отправил до сих пор. Все идет к одному и тому же клиенту, к одному и тому же порту, и все же по какой-то причине этот ответ 227 никогда не проходит. Я полностью поражен тем, почему.
Вот скриншоты взаимодействия клиента и сервера:
Захват клиента
Как вы можете видеть, он никогда не получает ACK для своей команды PASV. Он пытается еще раз, а затем сдается.
Захват сервера
Как вы можете видеть, он получает команду PASV и отправляет ответ, но никогда не достигает клиента. Позже он получает повторную передачу и отправляет ответ еще 3 раза, но опять-таки не проходит. Затем он отключается.
Я не могу представить, как возможно, что все другие TCP-пакеты без проблем попадают с сервера на клиент, но этот конкретный TCP-пакет не делает. Заголовки TCP одинаковы для всех пакетов, поступающих на сервер и с сервера, соответственно, поэтому, насколько я понимаю, все маршрутизаторы, брандмауэры, интернет-провайдеры и т.д. Должны относиться к ним одинаково, если только они не перехватывают пакеты.