Семёнов Ю.А. (ГНЦ ИТЭФ), book.itep.ru
FTP довольно необычная процедура, так как поддерживает две логические связи между ЭВМ (Рис 4.5.4.1). Одна связь служит для удаленного доступа и использует протокол Telnet. Другая связь предназначена для обмена данными. Сервер производит операцию passive open для порта 21 и ждет соединения с клиентом. Клиент осуществляет операцию active open для порта 21. Канал остается активным до завершения процедуры FTP. TOS (тип IP-сервиса) соответствует минимуму задержки, так как этот канал используется для ручного ввода команд. Канал для передачи данных (TCP) формируется каждый раз для пересылки файлов. Канал открывается перед началом пересылки и закрывается по коду end_of_file (конец файла). IP-тип сервиса (TOS) в этом случае ориентирован на максимальную пропускную способность.
Конечный пользователь взаимодействует с протокольным интерпретатором, в задачи которого входит управление обменом информацией между пользователем и файловой системой, как местной, так и удаленной. Схема взаимодействия различных частей Internet при работе FTP изображена на рис. 4.5.4.1.
Сначала по запросу клиента формируется канал управления, который в дальнейшем используется для передачи команд от клиента и откликов от сервера. Информационный канал формируется сервером по команде клиента, он не должен существовать постоянно на протяжении всей FTP-сессии и может формироваться и ликвидироваться по мере необходимости. Канал управления может быть закрыт только после завершения информационного обмена. Для канала управления используется протокол Telnet. После того как управляющий канал сформирован, клиент может посылать по нему команды. Сервер воспринимает, интерпретирует эти команды и передает отклики.
Рис. 4.5.4.1 Схема работы протокола ftp.
Возможна и другая схема взаимодействия, когда по инициативе клиента осуществляется файловый обмен между двумя ЭВМ, ни одна из которых не является машиной клиента (см. рис. 4.5.4.2).
Рис. 4.5.4.2. Организация информационного обмена между двумя удаленными машинами
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 | /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 | Запрошенная операция прервана, недостаточно выделено памяти |