Передача файлов по FTP, может ли клиент закрыть соединение для передачи данных?если так как? - PullRequest
2 голосов
/ 31 июля 2010
  1. После создания управляющего соединения с портом 21 FTP сервер отправляет 220 (сервис готов) ответ на контрольном соединении.

  2. Клиент отправляет команду USER.

  3. Сервер отвечает 331 (имя пользователя в порядке, пароль требуется).

  4. Клиент отправляет команду PASS.

  5. Сервер отвечает 230 (логин пользователя в порядке).

  6. Клиент выдает пассивное открытие на временном порту для соединение для передачи данных и отправляет команду PORT (более управляющее соединение), чтобы присвоить серверу этот номер порта.

  7. В данный момент сервер не открывает соединение, но готовит себя к выдаче активного открыть соединение для передачи данных между портом 20 (на стороне сервера) и эфемерный порт получил от клиента. Отправляет ответ 150 (передача данных скоро откроется).

  8. Клиент отправляет команду TYPE.

  9. Сервер отвечает ответом 200 (команда ОК).

  10. Клиент отправляет команду STRU.

  11. Сервер отвечает 200 (команда ОК).

  12. Клиент отправляет команду STOR.

  13. Сервер открывает соединение для передачи данных и отправляет ответ 250.

  14. Клиент отправляет файл на соединение для передачи данных. После Весь файл отправлен, соединение данных закрыто. Закрытие соединение данных означает конец файла.

  15. Сервер отправляет ответ 226 на элемент управления подключение.

  16. Клиент отправляет команду QUIT или использует другой команды для открытия другого подключения к данным для передачи другого файла. В нашем примере, выход команда отправлена.

  17. Сервер отвечает 221 (закрытие службы) и закрывается контрольное соединение.


в пункте 14.

  1. Клиент отправляет файл на соединение для передачи данных. После Весь файл отправлен, соединение данных закрыто. Закрытие соединение данных означает конец файла.

клиент закрывает соединение для передачи данных?

если так, то как он это делает? просто отключается! или отправляет команду отключения с помощью управляющего соединения?

1 Ответ

5 голосов
/ 31 июля 2010

Режим передачи по умолчанию - STREAM. При загрузке потокового файла подключение к данным просто закрыто. Команда не отправлена. Просто закройте соединение.

Если вы отправите команду, все, что вы отправили, будет добавлено в файл.

Режим потока ненадежен, потому что нет маркера EOF. Кроме того, вы должны заново открыть соединение для каждого дополнительного файла. Лучше использовать BLOCKED или COMPRESSED для надежности и повысить производительность при отправке нескольких небольших файлов, хотя для протокола есть небольшие издержки.

Используйте команду MODE для установки режима передачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...