- •Введение
- •Тема 1. Двухпросмотровый ассемблер
- •Тема 2. Com-сервер для обработки и хранения результатов тестирования.
- •Тема 3. Дисковая утилита для просмотра fat.
- •Тема 4. Сервер автоматизации ole.
- •Тема 5. Дефрагментатор файловой системы.
- •Элемент каталога для короткого имени
- •Тема 6. Монитор системных ресурсов для Windows 98/2000.
- •Тема 7. Менеджер процессов и потоков для Windows 98/2000.
- •Тема 8. Файловый менеджер для Windows 98/2000/nt.
- •Тема 9. Формат исполняемого pe-файле в Windows 98/nt.
- •Тема 10. Запуск в определенное время различных программ.
- •Тема 11. Утилита, сохраняющая в файле информацию из системного реестра о программах, установленных на компьтере.
- •Тема 12. Утилита для очистки системного реестра Windows.
- •Тема 13. Утилита, отслеживающая изменения в файловой системе Windows в заданных каталогах.
- •Тема 14. Просмотрщик таблицы разделов и fat.
- •Тема 15. Утилита MaxSplitter
- •Тема 16. Утилита удаленного администрирования.
- •Тема 17. Простая почтовая программа на основе протокола smtp.
- •Тема 18. Ftp - клиент.
- •Тема 19. Ftp - сервер.
- •Тема 20. Системные сервисы Windows nt/2000.
- •Литература
- •Приложение 1. Tcp/ip Программирование с использованием WinSock
- •Создание и использование сокетов
- •Закрытие сокета
- •Функция shutdown()
- •Методы прекращения работы гнезда
- •Функция bind()
- •Приложение может послать запрос на соединение с помощью функции
- •Отправка и прием данных через сокеты потоков
- •Ожидание и обработка событий
- •Использование функции wsaAsyncSelect()
- •Приложение 2. Команды ftp
- •Приложение 3. Команды smtp
- •Приложение 4. Заголовки почты smtp
Ожидание и обработка событий
По умолчанию сокет, созданный функцией socket() , является блокирующим, т.е. вызов функции recvfrom() приостанавливает выполнение потока до тех пор, пока не придет дейтаграмма. Во многих случаях бывает необходимо, чтобы приложение параллельно с ожиданием дейтаграммы продолжало выполнять другие операции. Для этого в WinSock имеются два метода асинхронного приема данных: BSD-совместимая функция select() и специфическая для WinSock функция WSAAsyncSelect().
Использование функции wsaAsyncSelect()
Рассмотренное выше применение функции select() является простейшим методом обмена данными с системой UNIX. Для приложений Windows WinSock предлагает функцию WSAAsyncSelect(), которая определяет сообщение, посылаемое в приложение при определенных событиях.
int WSAAsyncSelect(SOCKET s, HWND hWnd, u_int wMsg, long lEvent);
Параметр hWnd указывает на окно, в которое посылается сообщение, указанное в параметре wMsg. Обычно это сообщение, определенное пользователем (WM_USER+n). Последний параметр lEvent, указывает события, о которых интерфейс должен посылать сообщения. Это значение образуется путем сложения следующих логических констант:
FD_READ |
Данные ожидают во входной очереди |
FD_WRITE |
Сокет готов к записи |
FD_OOB |
Готовность к считыванию привилегированных данных |
FD_ACCEPT |
Ожидание ответа на запрос о соединении |
FD_CONNECT |
Соединение с сокетом успешно открыто |
FD_CLOSE |
Соединение закрыто |
Функция WSAAsyncSelect() автоматически активизирует сокет в не блокирующем режиме.
Приложение 2. Команды ftp
Команды FTP основаны на тексте, и пользователь, сидя у терминала, может внести их с помощью командной строки клиента FTP. Аналогично ответы, которые сервер возвращает, основаны на тексте и пригодны для чтения.
Все команды FTP завершаются стандартным сочетанием символов возврата каретки и новой строки (#13#10), Ответ каждой из этих команд содержит число из трех цифр в качестве первого фрагмента информации в ответе. Три цифры закодированы так, чтобы указывать на успешное выполнение команды или сбой и дать представление о характере команды.
Первая цифра кода ответа определяет характер ответа. В табл. А1 перечислены значения для первой цифры.
Таблица А1 . Значения первой цифры кодов ответа FTP
Значение |
Что означает |
1 |
Положительный начальный ответ. Запрашиваемая команда инициализируется, и по завершении ее должен быть получен другой код ответа, указывающий о выполнении команды |
2 |
Ответ о положительном завершении. Запрашиваемая команда успешно завершена |
3 |
Положительный временный ответ. Запрашиваемая команда исправна, однако от клиента требуется дополнительная информация или действие |
4 |
Ответ об отрицательном завершении. Выполнение запрашиваемой команды не завершено. Клиенту предлагается повторить команду снова |
5 |
Ответ о постоянном отрицательном завершении команды. Запрашиваемая команда не выполнялась и не может быть выполнена. Клиенту не предлагается повторять команду снова. |
Вторая цифра в кодах ответа показывает функциональную область, в которой выполняется команда. В табл. А2 перечислены эти значения
Таблица А2. Значения второй цифры кода ответов FTP
Значение |
Что означает |
0 |
Синтаксис. Эти ответы относятся к синтаксическим ошибкам или используются в качестве обобщенных ответов ОК |
1 |
Информация. Эти ответы являются ответами на запросы информации |
2 |
Соединения. Эти ответы относятся к соединениям управления и данных |
3 |
Аутентификация и учет. Эти ответы являются откликами для процедур регистрации обработки и учета |
4 |
Не указан |
5 |
Файловая система. Эти ответы указывают статус файловой системы сервера и передачи запрашиваемого файла или иное действие файловой системы |
Третья цифра в кодах ответа придает более высокую степень специфичности ответам.
Команды доступа
Первый набор команд состоит из тех команд, которые подсоединяют и регистрируют на сервере FTP.
Подсоединение к FTP. Первая команда фактически является не командой, а скорее, ответом, который сервер отправляет клиенту после подсоединения к порту 21 TCP. Если сервер занят и имеет много активных соединений, он может отбросить соединение (большинство серверов FTP ограничивают число одновременных соединений, которые они обслуживают). Если все в порядке и сервер работает с достаточным количеством соединений, следует получить код ответа 220, который сообщает, что вы подсоединены и должны перейти к процессу регистрации. Коды откликов: 120, 220, 421 (табл. АЗ).
Таблица А3. Коды откликов на команды FTP
Код |
Значение |
110 |
Этот код возвращается, когда осуществляется повторный запуск прерванной передачи файлов |
120 |
Служба будет готова через указанное число минут |
125 |
Соединение данных уже открыто и начинает передачу |
150 |
Файл готов, и вскоре откроется соединение данных |
200 |
ОК (обобщенный положительный ответ на команду) |
202 |
Этот узел не реализует команду |
211 |
Состояние системы или ответ подсказки |
212 |
Состояние каталога |
213 |
Состояние файла |
214 |
Сообщение подсказки |
215 |
Имя типа системы |
220 |
Служба готова для нового подключения пользователя |
221 |
Соединение закрывается |
225 |
Соединение данных открыто, однако передача не выполняется |
226 |
Соединение данных закрывается , потому что передача завершена или успешно выполнена |
227 |
Ввод пассивного режима (адрес и номер порта для соединения данных). Сервер ждет, пока клиент не инициализирует соединение данных |
230 |
Пользователь зарегистрирован |
250 |
Запрашиваемое действие завершено |
257 |
Имя каталога было создано или является текущим |
331 |
Имя пользователя найдено, однако нужен пароль |
332 |
Требуется учетная запись для регистрации |
421 |
Служба отсутствует, поэтому соединение управления закрывается |
425 |
Соединение данных не может быть открыто |
426 |
Соединение данных закрыто, поэтому передача прервана |
450 |
Файл не готов, поэтому запрашиваемое действие не выполнялось |
451 |
Ошибка локальной обработки. Запрашиваемое действие прервано |
452 |
Недостаточный объем памяти. Запрашиваемое действие не выполнялось |
500 |
Синтаксическая ошибка. Команда не была признана |
501 |
Синтаксическая ошибка в аргументах или параметрах команды |
502 |
Команда не реализована |
503 |
Ошибочная последовательность команд |
504 |
Команда отсутствует для запрашиваемого параметра |
530 |
Пользователь не зарегистрирован |
532 |
Требуется учетная запись для хранения файлов на сервере |
550 |
Запрашиваемое действие не было выполнено (файл не был обнаружен или в доступе было отказано) |
551 |
Запрашиваемое действие прервано, поскольку тип страницы неизвестен |
552 |
Действие прервано, поскольку оно превысило объем распределенной памяти |
553 |
Запрашиваемое действие не выполнено, поскольку имя файла недопустимо |
АССТ - Учетная запись. Указывает учетную запись, которая будет использоваться для сеанса FTP. Эта учетная запись отделена от имени пользователя, которое используется в процессе регистрации, однако она может управлять информацией об учете и доступе. Ниже приводится синтаксис команды АССТ:
АССТ учетная_запись #13#10
Коды откликов: 202, 230, 421, 500, 501, 503, 530 (табл. АЗ).
CDUP - Переход в родительский каталог. Эта команда является особым случаем команды CWD и используется для перехода вверх на один уровень в каталоге файловой системы на сервере FTP. Эта команда упрощает реализацию автоматизированных клиентских приложений FTP для работы с иными синтаксисами файловых систем. Синтаксис этой команды следующий:
CDUP#13#10
Коды откликов: 200, 421, 500, 501, 502, 530, 550 (табл. АЗ).
CWD - Изменить рабочий каталог. Изменяет текущий каталог на сервере FTP. Аргументом для этой команды является имя пути, указывающее каталог или другой системно-зависимый указатель файловой системы. Синтаксис команды изменений каталога следующий:
CWD путь #13#Ю
Коды откликов: 250, 421 500, 501, 502, 530, 550 (табл. АЗ).
PASS - Пароль. Передает соответствующий пароль серверу FTP для указанного имени пользователя. Если имя пользователя анонимно, паролем обычно является адрес электронной почты. Синтаксис команды следующий:
PASS пароль #13#10
Коды откликов: 202, 230, 332, 421, 500, 501, 503, 520 (табл. АЗ).
SMNT - Монтаж структуры. Монтирует другую структуру данных файловой системы на сервере. Аргументом является имя пути, указывающее каталог для монтажа. Синтаксис этой команды следующий:
SMNT путь #13#lO
Коды откликов: 202, 250,421, 500, 501, 502, 530, 550 (табл. АЗ).
USER - Имя пользователя. Инициализирует процесс регистрации сервера FTP. Вы отправляете эту команду с именем пользователя для регистрации. Если сервер допускает анонимные регистрации FTP, имя пользователя анонимно. Если анонимные регистрации не допускаются, необходимо использовать достоверное имя пользователя (регистрация учетной записи). Ниже приводится синтаксис команды:
USER имя_пользователя #13#10
Коды откликов: 230, 331,332, 421, 500, 501, 530 (табл. АЗ).
Команды выхода из системы
Следующие две команды завершают сеанс FTP. Каждая позволяет серверу продолжать любую передачу файлов, которая в данный момент осуществляется. Если соединение управления неожиданно закрывается, сервер прекращает выполняемую передачу файлов.
QUIT - Выход из системы. Прекращает регистрацию пользователя и приводит к тому, что сервер прекращает соединение команды. Выполняемая передача файлов продолжается до завершения. Синтаксис команды следующий:
QUIT #13#10
Коды откликов: 221, 500 (табл. АЗ).
REIN - Реинициализания. Завершает регистрацию пользователя, но сохраняет соединение команды открытым. Клиент может затем выдать другую команду USER для новой регистрации, используя другую учетную запись для выполнения дополнительных передач файлов. Любая передача файлов, которая осуществляется в тот момент, когда вводится эта команда, продолжается до завершения. Синтаксис команды имеет следующий вид:
REIN #13#10
Коды откликов: 120, 220, 421, 500, 502 (табл. АЗ).
Команды параметров передачи
Команды параметров передачи указывают параметры — типы данных, режимы передачи, порты соединений данных, адреса и т.д. Следует применять эти команды после того, как пользователь зарегистрируется на сервере и прежде, чем поступят запросы на передачу файлов. Можно повторно выдавать эти команды и изменять их для каждой передачи файла, которая должна осуществиться на протяжении сеанса.
MODE - Режим передачи. MODE является командой, которую вы будете применять очень редко (поскольку большинство реализаций FTP поддерживают только режим потока по умолчанию). MODE используется для переключения между режимами поток (S), блок (В) и уплотненной передачей. Синтаксис этой команды следующий:
MODE код_режима #13#10
Коды откликов: 200, 42!, 500, 501, 504, 530 (табл. АЗ).
PASV - Режим пассивного сервера. Предписывает серверу перейти в пассивный режим, в котором клиент может инициализировать соединение данных. Ответ (при условии, что он достоверен и что число 227 было возвращенным кодом ответа) содержит адрес Internet и порт TCP, который клиент будет использовать при выполнении этого соединения. Адрес сервера находится в том же формате, что и тот, который использует команда PORT. Синтаксис этой команды следующий:
PASV #13#10
Коды откликов: 227, 421, 500, 501, 502, 530 (табл. АЗ).
PORT - Адрес порта данных клиента. Сообщает серверу, какие адрес и порт TCP использовать для соединения данных. По умолчанию сервер подсоединяется к клиенту с помощью тех же адреса и порта, что и coeдинение команды клиента. Эта команда используется для сообщения серверу другого адреса или порта для передачи данных. Сервер пытается подсоединиться к указанным адресу и порту. Если клиент (а не сервер) должен инициализировать соединение данных, следует использовать команду PASV, а не команду PORT. Последняя осуществляет анализ 32-разрядного адреса Internet и 16-разрядного порта TCP с разбивкой на 8-разрядные значения и затем передает эти значения в виде чисел, разделенных запятыми. Синтаксис этой команды следующий:
PORT hl,h2,h3,h4,p1,p2 #13#10
Например, если клиент хочет, чтобы сервер подсоединился к порту 39 TCP и по адресу Internet 128.19.4.32, используется следующая команда:
PORT 128,19,4,32,0,39
где hl-h4 являются Internet-адресами клиента, а р1 и р2 — номерами порта для использования. Перед использованием этой команды гнездо клиента для соединения данных должно быть связано с этими адресом, и портом.
Коды откликов: 200, 421, 500, 501, 530 (табл. АЗ).
STRU - Структура файла. Маловероятно, что потребуется эта команда, указывающая структуру файла для использования при передаче (например, структура файла записи или страницы). Большинство передач файлов, которые необходимо выполнять, будут использовать структуру (файла) по умолчанию. Эта команда из тех времен, когда большинство систем обменивались файлами с самыми разными структурами. Такие структуры файлов уже не различаются столь существенно. Синтаксис этой команды следующий:
STRU код_структуры #13#10
Ниже приводятся коды используемых структур:
Код |
Значение |
F |
Файл {внутренняя структура отсутствует) |
R |
Структура записи |
Р |
Структура страницы |
Коды откликов: 200, 421, 500, 501, 504, 530 (табл. АЗ).
TYPE - Тип данных. Указывает тип данных для передачи файлов. Два типа данных, которые вы должны реализовать, — это A (ASCII) и I (Image). После А могут следовать спецификации форматирования, однако нет необходимости (и даже не рекомендуется), включать эти спецификации форматирования. Синтаксис этой команды следующий:
ТУРЕ тип кода #13#10
Коды откликов: 200, 421, 500, 501, 504, 530 (табл. АЗ).
Команды действия над файлами
Следующий набор команд FTP используется для выполнения различных операций с файлами (извлечения, отправления, перемещения (переименования) файлов), а также для того, чтобы дать возможность клиенту осуществлять некоторую организацию файловой системы на сервере. Большинство команд, которые связаны с передачей данных между системами клиента и сервера через соединение данных, возвращают два ответа. Первый ответ сообщает клиенту, что сервер собирается начинать передачу и открывать соединение данных (или что клиент должен сейчас открыть соединение данных), второй — что передача завершена или не получен результат и что соединение данных теперь должно быть закрыто.
ABOR - Прерывание передачи. Прерывает предыдущую команду и любую передачу файлов, которая, возможно, происходит в данный момент. Если предыдущая команда завершена, команда ABOR не дает эффекта. Если передача данных осуществляется, когда используется эта команда, она прерывает передачу и закрывает соединение данных. Соединение команды, однако, остается открытым.
Если передача файлов осуществляется при выдаче этой команды, она прекращает передачу данных и возвращает код отклика 426, указывая, что передача данных прекратилась аварийно. Затем сервер отправляет отклик 226 клиенту, указывая, что команда ABOR завершилась успешно. Синтаксис этой команды следующий:
ABOR #13#10
Коды откликов: 225, 226, 421, 500, 501, 502 (табл. АЗ).
ALLO - Распределить пространство памяти. Некоторые серверы FTP предписывают команде ALLO резервировать указанное пространство памяти для файла, который будет передаваться. Аргументом этой команды является целое число, обозначающее количество байтов для резервирования. Если сервер использует структуру записи или страницы, эта команда должна также передать количество записей или страниц для резервирования. Синтаксис этой команды следующий:
ALLO байты [ R число_эаписей ]#13#10
Коды откликов: 200, 202, 421, 500, 501, 504, 530 (табл. АЗ).
АРРЕ - Добавить к файлу (на сервере). Это третья форма команды STOR, она принимает имя файла с командой. Когда сервер получает файл через соединение данных, действие команды зависит от того, существует ли уже файл с этим именем. Если существует, команда добавляет к нему новый файл, а если нет, сервер создает новый файл. Синтаксис этой команды следующий:
АРРЕ имя_файла/путь #13#10
Коды откликов: 110, 125. 150, 226, 421,425, 426, 450, 451, 452, 500, 501, 502, 530, 532, 551, 552, 553 (табл. АЗ).
DELE - Удалить файл. Удаляет файл в файловой системе сервера FTP. Способность клиентов выполнять эту команду зависит от разрешений на доступ, имеющихся на сервере FTP, для учетной записи пользователя. Приложение клиента должно выполнить двойную проверку, прежде чем выдавать этот запрос команды серверу. Синтаксис этой команды следующий:
DELE имя_файла/путь #13#10
Коды откликов: 250, 421, 450, 500, 501, 502, 530, 550 (табл. А.З).
LIST - Список содержимого текущего каталога. Предписывает серверу отправить список содержимого текущего (или указанного) каталога клиенту через соединение данных. Эта передача данных должна использовать тип ASCII. Содержимое каталога форматируется в зависимости от системы сервера. Если сервером является система UNIX, список каталогов содержит флаги разрешения для каждого из файлов и каталогов, однако, если сервер является системой Windows NT, список выглядит, как список каталогов DOS. Синтаксис команды LIST:
LIST [путь] #13#10
Коды откликов: 125, 150, 226, 250, 421, 425, 426, 450, 451, 500, 501, 502, 530 (табл. АЗ).
MKD - Создать каталог. Создает каталог в файловой системе сервера. MKD может принимать абсолютное или относительное имя пути в качестве аргумента. Способность создавать каталог ограничена правами доступа, которые распределяются при регистрации пользователя и которые клиент использует при выдаче команды. Синтаксис команды MKD следующий:
MKD путь #13#10
Коды откликов: 257, 421, 500, 501, 502, 530, 550 (табл. АЗ).
NLST - Список содержимого текущего каталога (только имена). Эта команда работает почти так же, как команда LIST, за исключением того, что переданные данные содержат только имена файлов. NLST не возвращает какой-либо другой информации. Синтаксис команды следующий:
NLST [путь] #13#10
Коды откликов: 125, 150, 226, 250, 421, 425, 426, 450, 451, 500, 501, 502, 530 (табл. АЗ).
PWD - Рабочий (текущий) каталог. Извлекает имя текущего рабочего каталога на сервере FTP. Синтаксис команды следующий:
PWD#13#10
Некоторые клиенты FTP используют альтернативный синтаксис:
XPWD#13#10
Коды откликов: 257, 421, 500, 501, 502, 530 (табл. АЗ).
REST - Повторный запуск передачи файлов. Указывает маркер блока в файле, который должен использоваться в качестве отправной точки, когда будет инициализирована передача файла. REST не запускает передачу файлов, вам следует использовать команду RETR для запуска передачи. Команда REST приводит к тому, что сервер пропускает часть файла, предшествующую указанному маркеру блока после инициализации передачи. Можно использовать эту команду для повторного запуска передачи файлов, которая была прервана. Синтаксис команды REST следующий:
REST блок#13#10
Коды откликов: 350, 421, 500, 501, 502, 530 (табл. АЗ).
RETR - Извлечь файл. Предписывает серверу отправить конкретный файл клиенту. Синтаксис этой команды следующий:
RETR имя_файла/путь #13#10
Коды откликов: 110, 125, 150, 226, 250, 421, 425, 426, 450, 451, 500, 501, 530, 550 (табл. АЗ).
RMD - Удалить каталог. Удаляет каталог из файловой системы сервера. RMD может принимать либо абсолютное, либо относительное имя пути в качестве аргумента. Способность удалять каталог ограничена правами доступа, которые распределены при регистрации и используются клиентом. Синтаксис этой команды следующий:
RMD путь #13#10
Коды откликов: 250, 421, 500, 501, 502, 530, 550 (табл. АЗ).
RNFR - Переименовать файл. Команда RNFR является первой половиной из двух команд, которые перемещают или переименовывают файл в файловой системе сервера. Эта первая команда для выдачи, указывающая текущий путь и имя файла, подлежащего перемещению, сразу же после него следует команда RNTO для указания новых пути и имени файла. Синтаксис команды RNFR следующий:
RNFR имя_файла/путь #13#10
Коды откликов: 350, 421, 450, 500, 501, 502, 530, 550 (табл. АЗ).
RNTO - Переименовать файл. Команда RNTO является второй из двух команд, которые перемещают или переименовывают файл в файловой системе сервера FTP. Этой команде непосредственно предшествует команда RNFR. Команда RNTO указывает новые имя и/или путь для файла, указанного в команде RNFR. Синтаксис команды RNTO следующий:
RNTO имя_файла/путь #13#10
Коды откликов: 250, 421, 500, 501, 502, 503, 530, 550, 553 (табл. АЗ).
STOR - Сохранить файл. Сообщает серверу, что клиент намерен отправить ему файл. Имя файла, переданное с командой, является именем, которое будет присвоено файлу в файловой системе сервера. Если уже существует файл с этим именем и пользователь имеет право на доступ, новый файл, который передается от клиента, удаляет и замещает файл на сервере. Синтаксис этой команды следующий:
STOR имя_файла/путь #13#10
Коды откликов: 110, 125, 150, 226, 250, 421, 425, 426, 450, 451, 452, 500, 501, 530, 532, 551, 552, 553 (табл. АЗ).
STOU - Хранить с уникальным именем файла. Эта команда аналогична команде STOR, за исключением того, что сервер создает уникальное имя, которое присваивается файлу (этой командой имя файла не передается). Синтаксис этой команды следующий:
STOU #13#10
Коды откликов: 110, 125, !50, 226, 250, 421, 425, 426, 450, 451, 452, 500, 501, 530, 532, 551, 552, 553 (табл. АЗ).
Информационные и другие команды
Этот последний набор команд извлекает информацию о статусе сервера, операционной системе, опциях и командах, специфичных в плане реализации. Вам не часто придется использовать этот набор команд в приложении клиента FTP, он будет использоваться в интерактивном (приводимом в действие командной строкой) сеансе FTP.
HELP - Подсказка. Команда HELP возвращает информацию подсказки обо всех командах или о конкретной команде. Синтаксис команды HELP следующий:
HELP [ командная строка ]#13#10
Коды откликов: 211, 214, 421, 500, 501, 502 (табл. АЗ).
NOOP - Нет операции. Получает ответ ОК сервера. NOOP не влияет на какие-либо действия или команды, которые вводились ранее. Можно использовать NOOP как команду "поддерживать в активном состоянии", чтобы соединение команд оставалось активным. Синтаксис этой команды следующий:
NOOP#13#10
Коды откликов: 200, 421, 500 (табл. АЗ).
SITE - Параметры узла. Предоставляет службы для реализации сервера. Службы, которые используют эту команду, являются уникальными для каждой системы и необходимы для этой реализации, но не являются универсальными для всех систем. Для получения информации о том, какие службы подготовлены с помощью этой команды на конкретном сервере, используйте команду HELP в интерактивном сеансе FTP. Синтаксис команды SITE следующий:
SITE служба#13#10
Коды откликов: 200, 202, 500, 501, 530 (табл. АЗ).
STAT - Статус. Позволяет серверу отвечать состоянием передачи файла (если такая передача осуществляется в данный момент) или состоянием файла, указанного в качестве параметра команды. Синтаксис команды STAT следующий:
STAT [ имя_файла/путъ ]#13#10
Коды откликов: 211, 212, 213, 421, 450, 500, 501, 502, 530 (табл. АЗ).
SYST - Тип системы сервера. Устанавливает, какой тип операционной системы выполняет сервер. Ответ включает одно из имен систем, содержащееся в текущей версии документа RFC I700. Синтаксис команды SYST следующий:
SYST#13#10
Коды откликов: 215, 421, 500, 501, 502 (табл. АЗ).