4.5.4 Протокол пересылки файлов FTP
Семенов Ю.А. (ГНЦ ИТЭФ)
Для реализации обмена между двумя персональными ЭВМ в пределах сети (программные пакеты PCTCP, и т.д.) можно резидентно загрузить FTPSRV или другую эквивалентную программу. Также как и в случае TELNET необходима идентификация, но многие депозитарии допускают анонимный вход (имя пользователя ANONYMOUS, RFC-1635), который не требует слова пропуска (пароля) или допускает ввод вашего почтового адреса вместо него.
Работа FTP на пользовательском уровне содержит несколько этапов:
1. | Идентификация (ввод имени-идентификатора и пароля). | ||
2. |
| Выбор каталога. | |
3. | Определение режима обмена (поблочный, поточный, ascii или двоичный). | ||
4. | Выполнение команд обмена (get, mget, dir, mdel, mput или put). | ||
5. | Завершение процедуры (quit или close). |
FTP довольно необычная процедура, так как поддерживает две логические связи между ЭВМ (Рис 4.5.4.1). Одна связь служит для удаленного доступа и использует протокол Telnet. Другая связь предназначена для обмена данными. Сервер производит операцию passive open для порта 21 и ждет соединения с клиентом. Клиент осуществляет операцию active open для порта 21. Канал остается активным до завершения процедуры FTP. TOS (тип IP-сервиса) соответствует минимуму задержки, так как этот канал используется для ручного ввода команд. Канал для передачи данных (TCP) формируется каждый раз для пересылки файлов. Канал открывается перед началом пересылки и закрывается по коду end_of_file (конец файла). IP-тип сервиса (TOS) в этом случае ориентирован на максимальную пропускную способность.
FTP -d ns.itep.ru | (флаг -d означает установку отладочного режима, при котором выдаются все сообщения и внутренние команды на экран терминала). |
PASS XXXXXXXX | (ввод пароля не отображается на экране) |
ftp:ns.itep.ru> hel | (просьба выдать список доступных на данном сервере FTP-команд) |
! | ? | acct | append | ascii | binary | bye | cd | debug |
delete | dir | drive | exit | fcd | fdir | fpwd | get | help |
iget | image | iput | lcd | ldir | lmkdir | local | login | lpwd |
ls | mdelete | mget | mkdir | mput | option | parent | passive | put |
pwd | quit | quote | rename | retrieve | rmdir | send | server | show |
stat | store | take | tenex | tget | tput | type | user | verbose |
Название ресурса | Имя сервера | Имя каталога в сервере. |
Internet-cmc | ftp.rpi.edu | /pub/communications/internet-cmc.txt |
Субкоманды FTP |
Описание |
ABOR | Прерывание исполнения предыдущей FTP-команды и связанного с ней обмена |
ACCT<SP> <account-information> | Ввод идентификатора пользователя (ID); |
ALLO <SP> <десятичное целое> [<SP> R <SP> <десятичное целое>] | Зарезервировать достаточно места ( в байтах) для пересылки файла. Для файлов с постраничной структурой после символа R указывается число записей |
APPE <SP> <проход> | Присовокупить передаваемые данные к файлу, указанному в параметре проход |
CDUP | Переход в каталог прародитель |
CWD <SP> <проход> | Изменить рабочий каталог (CD); |
DELE <SP> <проход> | Стереть файл (del); |
HELP | Выдать справочную информацию о выполнимых командах |
HELP [<SP> <строка>] | Выдать описание работы данной команды |
LIST [<SP> <проход>] | Вывод списка файлов или каталогов (dir); |
MKD <SP> <проход> | Создать каталог |
MODE <SP> <код режима> | Режим обмена = поток, блоки или со сжатием |
NLST [<SP> <проход>] | Переслать оглавление каталога от сервера к клиенту |
NOOP | Пустая команда |
PASS <SP> <пароль> | Слово-пропуск (пароль) пользователя, заполняется пользователем |
PASV | Перевести сервер в режим прослушивания информационного порта на предмет установления соединения |
PORT <SP> <порт ЭВМ> | IP-адрес и номер порта клиента |
PWD | Выдать имя текущего каталога |
QUIT | Уход из FTP |
REIN | Завершение сессии и открытие новой |
REST <SP> <маркер> | Возобновление обмена, начиная с места, указанного маркером |
RETR <SP> <проход> | Переслать копию файла (get) другому адресату |
RMD <SP> <проход> | Удалить каталог |
RNFR <SP> <проход> | Начало процедуры переименования файла (Rename From) |
RNTO <SP> <проход> | Указание нового имени файла при переименовании (Rename To)_ |
SITE <SP> <строка> | Используется сервером для реализации локально специфических команд |
SMNT <SP> <проход> | Позволяет пользователю смонтировать нужную файловую систему |
STAT | Выдать текущие значения параметров (STATUS) |
STOR <SP> <проход> | Сервер должен запомнить полученные данные в виде файла |
STOU | Аналог команды STOR но записывает файл в текущий каталог и присваивает файлу уникальное имя |
STRU <SP> <код структуры> | Структура файла = файл, запись или страница |
SYST | Сервер сообщает тип системы |
TYPE <SP> <код типа> | Специфицирует тип информации, часто для этой цели используются команды binary и ASCII |
USER <SP> < [имя [пропуск]] > | Идентифицирует пользователя, запрашивается сервером |
? | тоже что и HELP; |
lcd | Изменить локальный каталог (на вашей ЭВМ); |
! | Выйти временно из FTP и уйти в Shell (UNIX) |
! команда | Исполнить команду Shell (UNIX) |
close | Прервать связь с удаленным сервером, оставаясь в FTP |
open [имя_ЭВМ] | Установить связь с указанным удаленным сервером |
dir | Выдать содержимое удаленного каталога |
-d |
включение отладочного режима. |
-g |
блокировка группового исполнения команд. |
-i |
Выключение интерактивного приглашения при множественной пересылке файлов. |
-v |
Отображает все отклики удаленного сервера и статистику обмена; этот режим работает обычно по умолчанию. |
! [ команда ] | Исполняется команда интерпретатора shell вашей ЭВМ (UNIX). Если имя команды явно не введено, система переходит в интерактивный режим shell. |
$ имя-макро [ аргументы ] |
Выполняется макро, имя которого введено, аргументы используются этим макро. |
account [ пароль ] |
Позволяет ввести пароль, необходимый для доступа в удаленный сервер. |
append имя_местного_файла [ имя_удаленного_файла ] |
Добавить местный файл к файлу на удаленном сервере. |
Bye |
Завершает FTP-сессию. |
case |
Переключает регистр символов, которыми записаны имена файлов на удаленной ЭВМ, в процессе выполнения команды MGET. Если case включен (по умолчанию выключен), все прописные буквы в именах файлов на удаленной ЭВМ, меняются при переносе в вашу ЭВМ на строчные. |
close |
Завершает FTP-сессию и возвращает систему в интерактивный командный режим. Все описанные ранее макро стираются. |
debug [ debug-value ] |
Включает/выключает режим отладки. Значение debug-value определяет отладочный уровень. Если отладка включена, FTP отображает на экране каждую команду, посылаемую удаленной ЭВМ. Эта информация помечается символом '-->'. |
dir [ удаленный каталог ] [ местный файл ] |
Выдает на экран содержимое удаленного каталога. Если в качестве параметра указано имя местного файла, результат заносится в него. Если имя удаленного каталога не указано, команда выполняется для текущего каталога. |
disconnect |
синоним close. |
hash |
включает/выключает знак (#). Во включенном состоянии отмечается пересылка каждого блока, что позволяет визуально контролировать процесс обмена. |
macdef macro-name |
Определяет макро. Последующие строки запоминаются в качестве текста макро с именем macro-name. Нулевая строка (двойное нажатие клавиши RETURN) завершает ввод текста макро. Можно ввести до 16 макро с суммарным объемом до 4096 символов. |
mdelete [ имена_файлов_на удаленной_ЭВМ ] |
удаляет файлы на удаленной ЭВМ. |
open имя-ЭВМ [ port ] |
устанавливает связь с указанным FTP-сервером (ЭВМ) через специфицированный порт. |
prompt |
включает/выключает нтерактивные запросы со стороны ЭВМ. Это бывает полезным при выполнении групповых команд MPUT, MGET или MDELETE и позволяет проводить соответствующие операции над файлами выборочно. |
proxy |
ftp-команда выполняет FTP-команду на вторичной удаленной ЭВМ. Эта команда позволяет связать два удаленных FTP-сервера и осуществить пересылку файлов между ними. Первой proxy-командой должна быть команда open, необходимая для связи со вторичным сервером. Введите команду proxy ?, чтобы проверить выполнимость этих команд на данном сервере. |
quit |
синоним bye. |
recv |
удаленный_файл [ местный_файл ] синоним команды get. |
remotehelp [ имя_команды ] |
Запрашивает справочную информацию у удаленного FTP-сервера. Если имя_команды задано, запрашивается информация о конкретной команде. |
runique | Включает режим записи файлов в вашу ЭВМ только с уникальными именами. Если файл с таким именем уже существует, то новому файлу будет присвоено имя с расширением .1, если и такое имя уже есть, то с расширением .2. Это может продолжаться вплоть до расширения .99, после чего будет выдано сообщение об ошибке. Впрочем, такую ситуацию вообразить крайне трудно, если вы сами не наплодили файлов с цифровыми расширениями. Для команды mget это крайне полезная функция, которая застрахует вас от стирания ваших файлов из текущего каталога, имеющих имена, совпадающие с именами на удаленном сервере. По умолчанию runique не включено. |
send local-file [ remote-file ] |
Синоним команды put. |
status |
Отображает текущее состояние ftp. |
Тип файла | Пример записи имени файла | Программа обработки файла |
Архивированный файл | файл.Z | compress, uncompress |
tar-файл | файл.tar | tar |
Архивированный tar-файл | файл.tar.Z | tar, compress, uncompress |
файл.tar.gz | Применен архиватор GZIP | |
uuencode-файл | файл.uue | uuencode, uudecode |
Архивированный uuencode-файл | файл.uue.Z | uuencode, uudecode, compress, uncompress |
zip-файл | файл.zip | pkzip, pkunzip |
shar-файл | файл.shar | shar, sh, unshar |
сжатый shar-файл | файл.shar.Z | shar, sh, unshar, compress, uncompress |
Значение кода-отклика | Описание |
1yz | Позитивный предварительный отклик, который означает, что операция начата. До завершения процедуры следует ожидать как минимум еще один отклик |
2yz | Сигнал успешного завершения процедуры, говорящий о том, что можно ввести новую команду |
3yz | Положительный промежуточный отклик, указывающий на то, что команда воспринята, но для продолжения требуется дополнительная информация |
4yz | Негативный отклик, свидетельствующий о том, что команда не воспринята, но можно попробовать ее исполнить еще раз |
5yz | Отклик, говорящий о том, что команда не выполнена и не может быть выполнена вообще |
Значение кода-отклика | Описание |
x0z | Указывает на синтаксическую ошибку; синтаксис верен но команда не имеет смысла |
x1z | Указание на необходимость ввода дополнительной информации |
x2z | Отклик, связанный с управлением каналом связи |
x3z | Отклик для команд идентификации пользователя и проверки пароля |
x4z | Функция не определена |
x5z | Отклик, характеризующий состояние файловой системы |
ftp> cd <имя_каталога > | (смена каталога) |
ftp> binary | (если текст, например, архивирован, в противном случае команду выдавать не нужно) |
ftp> get <имя_файла> | (копирование файла) |
ftp> quit | (уход из процедуры) |
Код-отклик | Описание |
110 | Комментарий |
120 | Функция будет реализована через nnn минут |
125 | Канал открыт, обмен данными начат |
150 | Статус файла правилен, подготавливается открытие канала |
200 | Команда корректна |
211 | Системный статус или отклик на справочный запрос |
212 | Состояние каталога |
213 | Состояние файла |
214 | Справочное поясняющее сообщение |
220 | Слишком много подключений к FTP-серверу (можете попробовать позднее). В некоторых версиях указывает на успешное завершение промежуточной процедуры |
221 | Благополучное завершение по команде quit |
225 | Канал сформирован, но информационный обмен отсутствует |
226 | Закрытие канала, обмен завершен успешно |
230 | Пользователь идентифицирован, продолжайте |
250 | Запрос прошел успешно |
331 | Имя пользователя корректно, нужен пароль |
332 | Для входа в систему необходима аутентификация |
421 | Процедура не возможна, канал закрывается |
425 | Открытие информационного канала не возможно |
426 | Канал закрыт, обмен прерван |
450 | Запрошенная функция не реализована, файл не доступен, например, занят |
451 | Локальная ошибка, операция прервана |
452 | Ошибка при записи файла (не достаточно места) |
500 | Синтаксическая ошибка, команда не может быть интерпретирована (возможно она слишком длинна) |
501 | Синтаксическая ошибка (неверный параметр или аргумент) |
502 | Команда не используется (нелегальный тип MODE) |
503 | Неудачная последовательность команд |
504 | Команда не применима для такого параметра |
530 | Система не загружена (not logged in) |
532 | Необходима аутентификация для запоминания файла |
550 | Запрошенная функция не реализована, файл не доступен, например, не найден |
552 | Запрошенная операция прервана, недостаточно выделено памяти |