Что обрывает мое соединение и почему?
Загрузка файла по FTPeS между сервером и клиентом останавливается каждый раз на одном и том же количестве файлов, без каких-либо указаний на то, почему соединение разрывается. Неважно, насколько велики файлы или сколько времени требуется для их загрузки. Неважно, какое серверное программное обеспечение используется на стороне сервера, то же самое касается клиентского программного обеспечения. Я пробовал это с Microsoft IIS FTP и FileZilla Server на стороне сервера и с FileZilla Client, WinSCP и самописным клиентом (Delphi) на стороне клиента.
В моем примере это ровно 296 файлов txt между сервером A и клиентским компьютером B. Между сервером A и клиентским компьютером C это другое количество, но постоянное / стабильное / неизменное.
сеть на стороне сервера
WAN-соединение - это немецкий интернет-провайдер Deutsche Telekom AG, VDSL2 с псевдостатическим общедоступным IP-адресом (длится примерно месяц, после чего его меняют). Маршрутизатор и аппаратный межсетевой экран - это обычный (в Германии) FRITZ! Box 7590 с FRITZ! OS: 07.01.
Я настроил переадресацию портов для канала управления FTP и для каналов данных в пассивном режиме.
Серверная машина
Серверный компьютер представляет собой Microsoft Windows 10 Pro 1903 (10.0.18362 N / A Build 18362.239), подключенный к маршрутизатору через FTP-кабель Cat5e 1 Гбит / с.
Брандмауэр Защитника Windows
Я открыл необходимые порты в брандмауэре Защитника Windows.
Конфигурация Microsoft IIS FTP
IIS прослушивает канал управления на TCP-порту 21. Каналы данных установлены на TCP 50000-50010 в соответствии с переадресацией порта. SSL-соединение требуется для обоих каналов, управления и данных.
Сервер FileZila
Те же конфигурации требовали конфигурации. TCP-порт 21 (управление), 50000-50010 (данные).
клиенты
Это журнал клиента FileZilla при загрузке через IIS.
2019-08-04 02:21:44 8736 3 Response: 226 Transfer complete.
2019-08-04 02:21:44 8736 3 Status: File transfer successful, transferred 4.096 bytes in 1 second
2019-08-04 02:21:44 8736 2 Response: 227 Entering Passive Mode (84,145,49,252,195,87).
2019-08-04 02:21:44 8736 2 Command: RETR random_file_433.txt
2019-08-04 02:21:44 8736 3 Status: Starting download of /Files/random_file_432.txt
2019-08-04 02:21:44 8736 3 Command: PASV
2019-08-04 02:21:44 8736 2 Response: 150 Opening BINARY mode data connection.
2019-08-04 02:21:44 8736 3 Response: 227 Entering Passive Mode (84,145,49,252,195,88).
2019-08-04 02:21:44 8736 3 Command: RETR random_file_432.txt
2019-08-04 02:21:44 8736 3 Error: Disconnected from server: ECONNABORTED - Connection aborted
2019-08-04 02:21:44 8736 3 Error: File transfer failed
2019-08-04 02:21:44 8736 3 Status: Disconnected from server
2019-08-04 02:21:44 8736 2 Response: 226 Transfer complete.
2019-08-04 02:21:44 8736 2 Status: File transfer successful, transferred 6.103 bytes in 1 second
2019-08-04 02:21:44 8736 3 Status: Resolving address of home.zaffran.de
2019-08-04 02:21:44 8736 2 Status: Starting download of /Files/random_file_431.txt
2019-08-04 02:21:44 8736 2 Command: PASV
2019-08-04 02:21:44 8736 2 Response: 227 Entering Passive Mode (84,145,49,252,195,89).
2019-08-04 02:21:44 8736 2 Command: RETR random_file_431.txt
2019-08-04 02:21:44 8736 3 Status: Connecting to 84.145.49.252:21...
2019-08-04 02:21:44 8736 2 Error: Disconnected from server: ECONNABORTED - Connection aborted
2019-08-04 02:21:44 8736 2 Error: File transfer failed
2019-08-04 02:21:44 8736 3 Status: Connection established, waiting for welcome message...
2019-08-04 02:21:44 8736 2 Status: Disconnected from server
2019-08-04 02:21:44 8736 2 Status: Resolving address of home.zaffran.de
2019-08-04 02:21:44 8736 2 Status: Connecting to 84.145.49.252:21...
2019-08-04 02:21:44 8736 3 Response: 220 Microsoft FTP Service
2019-08-04 02:21:44 8736 3 Command: AUTH TLS
2019-08-04 02:21:44 8736 2 Status: Connection established, waiting for welcome message...
2019-08-04 02:21:44 8736 3 Response: 234 AUTH command ok. Expecting TLS Negotiation.
2019-08-04 02:21:44 8736 3 Status: Initializing TLS...
2019-08-04 02:21:44 8736 2 Response: 220 Microsoft FTP Service
2019-08-04 02:21:44 8736 2 Command: AUTH TLS
2019-08-04 02:21:44 8736 2 Response: 234 AUTH command ok. Expecting TLS Negotiation.
Это журнал клиента FileZilla при загрузке через сервер FileZilla.
2019-08-04 10:57:35 3724 2 Response: 226 Successfully transferred "/Files/random_file_596.txt"
2019-08-04 10:57:35 3724 2 Status: File transfer successful, transferred 1.024 bytes in 1 second
2019-08-04 10:57:35 3724 2 Status: Starting download of /Files/random_file_594.txt
2019-08-04 10:57:35 3724 2 Command: PASV
2019-08-04 10:57:35 3724 3 Response: 150 Opening data channel for file download from server of "/Files/random_file_595.txt"
2019-08-04 10:57:35 3724 2 Response: 227 Entering Passive Mode (84,145,49,252,195,80)
2019-08-04 10:57:35 3724 2 Command: RETR random_file_594.txt
2019-08-04 10:57:35 3724 3 Response: 226 Successfully transferred "/Files/random_file_595.txt"
2019-08-04 10:57:35 3724 3 Status: File transfer successful, transferred 2.048 bytes in 1 second
2019-08-04 10:57:35 3724 3 Status: Starting download of /Files/random_file_593.txt
2019-08-04 10:57:35 3724 3 Command: PASV
2019-08-04 10:57:35 3724 3 Response: 227 Entering Passive Mode (84,145,49,252,195,90)
2019-08-04 10:57:35 3724 3 Command: RETR random_file_593.txt
2019-08-04 10:57:35 3724 2 Error: Disconnected from server: ECONNABORTED - Connection aborted
2019-08-04 10:57:35 3724 2 Error: File transfer failed
2019-08-04 10:57:35 3724 3 Error: Disconnected from server: ECONNABORTED - Connection aborted
2019-08-04 10:57:35 3724 3 Error: File transfer failed
2019-08-04 10:57:35 3724 2 Status: Disconnected from server
2019-08-04 10:57:35 3724 2 Status: Resolving address of home.zaffran.de
2019-08-04 10:57:35 3724 2 Status: Connecting to 84.145.49.252:21...
2019-08-04 10:57:35 3724 2 Status: Connection established, waiting for welcome message...
2019-08-04 10:57:35 3724 3 Status: Disconnected from server
2019-08-04 10:57:35 3724 3 Status: Resolving address of home.zaffran.de
2019-08-04 10:57:35 3724 3 Status: Connecting to 84.145.49.252:21...
2019-08-04 10:57:35 3724 2 Response: 220 Muhahahaaa
2019-08-04 10:57:35 3724 2 Command: AUTH TLS
2019-08-04 10:57:35 3724 3 Status: Connection established, waiting for welcome message...
2019-08-04 10:57:35 3724 2 Response: 234 Using authentication type TLS
2019-08-04 10:57:35 3724 2 Status: Initializing TLS...
2019-08-04 10:57:35 3724 3 Response: 220 Muhahahaaa
2019-08-04 10:57:35 3724 3 Command: AUTH TLS
2019-08-04 10:57:35 3724 3 Response: 234 Using authentication type TLS
2019-08-04 10:57:35 3724 3 Status: Initializing TLS...
2019-08-04 10:57:35 3724 2 Status: Verifying certificate...
2019-08-04 10:57:35 3724 2 Status: TLS connection established.
2019-08-04 10:57:35 3724 2 Command: USER test
2019-08-04 10:57:35 3724 2 Response: 331 Password required for test
2019-08-04 10:57:35 3724 2 Command: PASS *******
2019-08-04 10:57:35 3724 3 Status: Verifying certificate...
2019-08-04 10:57:35 3724 3 Status: TLS connection established.
2019-08-04 10:57:35 3724 3 Command: USER test
2019-08-04 10:57:35 3724 2 Response: 230 Logged on
2019-08-04 10:57:35 3724 2 Command: PBSZ 0
2019-08-04 10:57:35 3724 3 Response: 331 Password required for test
2019-08-04 10:57:35 3724 3 Command: PASS *******
2019-08-04 10:57:35 3724 2 Response: 200 PBSZ=0
2019-08-04 10:57:35 3724 2 Command: PROT P
2019-08-04 10:57:35 3724 3 Response: 230 Logged on
2019-08-04 10:57:35 3724 3 Command: PBSZ 0
2019-08-04 10:57:35 3724 2 Response: 200 Protection level set to P
2019-08-04 10:57:35 3724 2 Status: Logged in
2019-08-04 10:57:35 3724 3 Response: 200 PBSZ=0
2019-08-04 10:57:35 3724 3 Command: PROT P
2019-08-04 10:57:35 3724 2 Status: Starting download of /Files/random_file_592.txt
2019-08-04 10:57:35 3724 2 Command: CWD /Files
2019-08-04 10:57:35 3724 3 Response: 200 Protection level set to P
2019-08-04 10:57:35 3724 3 Status: Logged in
2019-08-04 10:57:35 3724 2 Response: 250 CWD successful. "/Files" is current directory.
2019-08-04 10:57:35 3724 2 Command: TYPE I
2019-08-04 10:57:35 3724 3 Status: Starting download of /Files/random_file_591.txt
2019-08-04 10:57:35 3724 3 Command: CWD /Files
2019-08-04 10:57:35 3724 2 Response: 200 Type set to I
2019-08-04 10:57:35 3724 2 Command: PASV
2019-08-04 10:57:35 3724 3 Response: 250 CWD successful. "/Files" is current directory.
2019-08-04 10:57:35 3724 3 Command: TYPE I
2019-08-04 10:57:35 3724 2 Response: 227 Entering Passive Mode (84,145,49,252,195,81)
Вот как это выглядит с WinSCP при загрузке через сервер FileZilla
Это журнал моего собственного FTP-клиента Delphi при загрузке через сервер FileZilla.
Sent 04.08.2019 11:06:52: RETR random_file_297.txt<EOL>
Recv 04.08.2019 11:06:52: 150 Opening data channel for file download from server of "/Files/random_file_297.txt"<EOL>
Recv 04.08.2019 11:06:52: 226 Successfully transferred "/Files/random_file_297.txt"<EOL>
Sent 04.08.2019 11:06:53: PASV<EOL>
Recv 04.08.2019 11:06:53: 227 Entering Passive Mode (84,145,49,252,195,84)<EOL>
Sent 04.08.2019 11:06:53: RETR random_file_298.txt<EOL>
Recv 04.08.2019 11:06:53: 150 Opening data channel for file download from server of "/Files/random_file_298.txt"<EOL>
Recv 04.08.2019 11:06:53: 226 Successfully transferred "/Files/random_file_298.txt"<EOL>
Sent 04.08.2019 11:06:53: PASV<EOL>
Recv 04.08.2019 11:06:53: 227 Entering Passive Mode (84,145,49,252,195,85)<EOL>
Sent 04.08.2019 11:06:53: RETR random_file_299.txt<EOL>
Recv 04.08.2019 11:06:53: 150 Opening data channel for file download from server of "/Files/random_file_299.txt"<EOL>
Stat Disconnected.
Stat Disconnected.