%20%D0%BF%D1%80%D0%B8%20%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B8%20%D0%B1%D0%BE%D0%BB%D0%B5%D0%B5%20%D0%BE%D0%B4%D0%BD%D0%BE%D0%B3%D0%BE%20%D1%81%D0%B5%D1%82%D0%B5%D0%B2%D0%BE%D0%B3%D0%BE%20%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%B0.png)
У меня возникла проблема с FTP-сервером (ftp.cluster003.ovh.net), в частности, когда я подключаюсь к нему из дома (независимо от клиента, компьютера или ОС).
Проблема не проявляется при подключении к другому FTP-серверу (ftp.phpnet.org) или при подключении к ftp.cluster003.ovh.net из моего офиса.
Дома я подключен через DSL-модем-маршрутизатор Netgear D6000.
Симптомы следующие: всякий раз, когда я пытаюсь получить какие-то данные с сервера, когда объем данных для получения не помещается в один сетевой пакет, транзакция никогда не заканчивается. Это происходит, конечно, при получении файла, но также просто при перечислении содержимого каталога, когда в каталоге находится более примерно 20 файлов (ответ от сервера содержит разрешения и владельцев файлов, поэтому каждый перечисленный файл соответствует примерно 70 байтам данных).
Пример сеанса (под Linux):
% for i in `seq 1 385`;do printf "$i-";done > file1
% for i in `seq 1 395`;do printf "$i-";done > file2
% ftp ftp.cluster003.ovh.net
Connected to ftp.cluster003.ovh.net.
220- ~~~ Welcome to OVH ~~~
220 This is a private system - No anonymous login
Name (ftp.cluster003.ovh.net:XXXXXXXX): XXXXXXXX
331 User XXXXXXXX OK. Password required
Password:
230-OK. Current restricted directory is /
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put file1
local: file1 remote: file1
200 PORT command successful
150 Connecting to port 56721
226-File successfully transferred
226 0.087 seconds (measured here), 16.14 Kbytes per second
1432 bytes sent in 0.00 secs (24.3868 MB/s)
ftp> put file2
local: file2 remote: file2
200 PORT command successful
150 Connecting to port 39725
226-File successfully transferred
226 0.111 seconds (measured here), 12.93 Kbytes per second
1472 bytes sent in 0.00 secs (17.9975 MB/s)
ftp> ls
200 PORT command successful
150 Connecting to port 46431
drwx---r-x 2 644709 users 4 Jan 2 13:02 .
drwx---r-x 4 644709 users 8 Dec 31 12:58 ..
-rw----r-- 1 644709 users 1432 Jan 2 13:02 file1
-rw----r-- 1 644709 users 1472 Jan 2 13:02 file2
226-Options: -a -l
226 4 matches total
ftp> get file1
local: file1 remote: file1
200 PORT command successful
150 Connecting to port 35507
226-File successfully transferred
226 0.001 seconds (measured here), 2.71 Mbytes per second
1432 bytes received in 0.00 secs (529.3102 kB/s)
ftp> get file2
local: file2 remote: file2
200 PORT command successful
150 Connecting to port 56107
^C
receive aborted
waiting for remote to finish abort
226-File successfully transferred
226 0.000 seconds (measured here), 2.91 Mbytes per second
500 ?
Если я не прерываю с помощью Ctrl+ C, ничего не происходит, и сервер в конечном итоге отключается. Наблюдая за тем, что происходит с Wireshark, можно увидеть, что file1 помещается в один пакет, тогда как file2 — нет.
Последний пакет file2 получен, но не предыдущие. Это полностью детерминировано. Есть идеи, что вызывает эту проблему и как ее решить?