Что такое FTP-сервер и для чего он нужен?
FTP-сервер — это сервер, работающий по протоколу File Transfer Protocol и предназначенный для обмена файлами через Интернет или локальную компьютерную сеть.
Что такое FTP-сервер простыми словами
Для чего нужен FTP-сервер
Как работает FTP-протокол
Как подключиться к FTP-серверу
Что такое FTP-сервер простыми словами
Выражаясь простыми словами, FTP-server — это компьютер, предназначенный для хранения файлов. Он входит в локальную или всемирную сеть, и к нему по определённым правилам организован удалённый доступ посетителей, которые могут скачивать и закачивать файлы.
FTP — старый протокол, который появился ещё в 1971 году. С тех пор, хоть суть его и осталась прежней, он существенно изменился — появилось отдельное соединение для передачи данных, были предусмотрены многочисленные управляющие команды, которых не было раньше.
Серверам FTP свойственны определённые особенности, отличающие их, к примеру, от web-серверов:
использование для каждого соединения отдельного канала;
поддержка бинарного (двоичного) и текстового режимов передачи информации;
необходимость аутентификации пользователя;
возможность определения типов файлов, подлежащих передаче.
У FTP-серверов есть недостаток — они слабо защищены от попыток взлома. Несмотря на это, к настоящему времени они являются, пожалуй, самым популярным решением для удалённой передачи файлов.
Для чего нужен FTP-сервер
Его основное назначение — удалённая передача файлов. Кроме этой главной операции, можно удалять файлы с сервера, переименовывать их, создавать папки.
Чаще всего FTP-сервер используется для:
передачи личных файлов между друзьями, родственниками, знакомыми. Для этой цели создают домашние серверы, на которых хранят фотографии, музыкальные треки, документы и многое другое;
обмена корпоративными данными — например, между филиалами одной компании;
передачи контента веб-сайта на сервер хостинговой компании.
Разумеется, это — не исчерпывающий перечень вариантов применения FTP-сервера. Это универсальный инструмент, поэтому его можно использовать и во многих других ситуациях.
Как работает FTP-протокол
Такое название имеет протокол, ориентированный на пересылку данных в виде файлов в Интернете и локальных компьютерных сетях. Его особенность — множественное соединение. Один канал играет роль управляющего, через него сервер принимает команды и возвращает ответы (как правило, через 21-й порт). Прочие каналы применяются собственно для передачи файлов (чаще всего через 20-й порт).
Перед началом работы с протоколом клиентское устройство открывает сессию. На протяжении всей дальнейшей работы она остаётся открытой — сервер «запоминает» состояние сессии.
Есть два режима, в которых может работать протокол:
- активный. Клиентское устройство инициирует управляющее соединение и по нему отправляет серверу собственный IP-адрес. Кроме того, клиент отправляет серверу номер порта, на который будет принимать данные. FTP-сервер, получив эти сведения, открывает соединение с указанными узлом-клиентом параметрами. Сессия открывается, и начинается передача файлов;
Обмен информацией между сервером и клиентом по протоколу, в свою очередь, также может проходить в одном из нескольких режимах:
поточном. Информация перемещается между клиентом и сервером сплошным потоком, протокол её никак не обрабатывает;
блочном. Протокол делит поток информации на блоки (заголовок, объём, собственно данные);
режиме сжатия. Информация перед передачей сжимается тем или иным алгоритмом.
Сервер FTP использует аутентификацию клиента по схеме «имя пользователя/пароль». Клиентское устройство отправляет эти данные, сервер проверяет их, и при обнаружении соответствия отправляет клиенту приглашение. Кроме того, можно организовать и анонимный доступ к серверу — без предоставления имени и пароля.
Установка FTP-сервера
Для того, чтобы самостоятельно создать FTP-сервер, понадобится специализированное программное обеспечение. В условиях дома или небольшого офиса вполне подойдут бесплатные приложения.
Обратите внимание: компания Microsoft в своей ОС Windows начиная с её 7-й версии реализовала инструмент IIS — Internet Information Services. Он предназначен для того, чтобы открыть к определённой папке общий доступ из сети. Наличие IIS позволяет создать на базе Windows простейший FTP-сервер, не используя для этого стороннее программное обеспечение.
Рассмотрим порядок действий, которые нужно выполнить, чтобы создать сервер FTP в Windows 10, не применяя стороннее ПО.
Откройте классическую панель управления, нажав сочетание клавиш Win-Q и начав печатать «панель управления».
Выберите раздел «Программы и компоненты». В открывшемся окне выберите слева пункт «Включение или отключение компонентов Windows».
В окне, которое появится перед вами, найдите папку «Службы IIS» и разверните её. Далее разверните папку «FTP-сервер». Поставьте галочки напротив пунктов «Расширяемость FTP» и «Служба FTP», активировав соответствующие компоненты.
Разверните расположенную ниже папку «Средства управления веб-сайтом». Поставьте галочки напротив пунктов «Консоль управления IIS» и «Служба управления FTP», активировав соответствующие компоненты.
Примените изменения, нажав кнопку «ОК» внизу диалогового окна. Скорее всего, после этого некоторое время придётся подождать, пока Windows найдёт и задействует требуемые файлы. Если процесс завершился успешно, вас можно поздравить — вы запустили FTP-сервер на своём компьютере.
Настройка FTP-сервера
Просто создать сервер FTP недостаточно — чтобы начать им полноценно пользоваться, его нужно настроить. Далее мы рассмотрим порядок действий, которые понадобятся для такой настройки в Windows 10.
Откройте классическую панель управления так, как было описано выше. Найдите в ней раздел «Администрирование», войдите в него и найдите в перечне пунктов «Диспетчер служб IIS». Двойным кликом откройте соответствующий раздел настроек.
Разверните список в левой части окна, а затем кликните по папке «Сайты» правой кнопкой мыши. В появившемся контекстном меню выберите пункт «Добавить FTP-сайт. ».
В диалоговом окне, которое появится перед вами, вам понадобится задать имя созданного вами сервера FTP, а также путь к папке с данными. Нажмите кнопку «Далее», чтобы перейти к следующему шагу настройки сервера.
Теперь вам необходимо задать параметры FTP-сервера. Обратите внимание на поле, предназначенное для ввода IP-адреса. Введите в него один из тех, что будут вам предложены в виде списка. У вас будет выбор из двух вариантов — сделать привязку к определённому адресу или дать клиентским устройствам расширенный доступ. В последнем случае нужно будет выбрать пункт «Все свободные». Проверьте, чтобы был установлен стандартный порт для управления сервером — 21. Поставьте галочку напротив пункта «Запускать FTP-сайт автоматически», если вы намерены использовать сервер FTP в постоянном режиме.
Перейдя в новое окно, вы сможете задать способ авторизации клиентских устройств. Обратите внимание на раздел с названием «Проверка подлинности». Здесь вы сможете выбрать один из двух вариантов — разрешить доступ для обычных клиентов (по имени и паролю) или дать возможность пользоваться сервером анонимным пользователям. Кроме того, в этом же разделе вы сможете установить те или иные права пользователей. Нажмите «Готово» после окончания настройки.
На следующем этапе нужно настроить брандмауэр операционной системы. Для этого в классической панели управления выберите раздел «Брандмауэр Защитника Windows», а в нём — раздел «Дополнительные параметры». Далее обратите внимание на пункт «Правила для входящих подключений». Используя правую клавишу мыши, включите правило «FTP-сервер (входящий трафик FTP)».
Пользователи должны получить возможность заходить на созданный вами сервер. Подключите их, открыв раздел «Администрирование» в классической панели управления. В нём откройте пункт «Управление компьютером», далее — «Локальные пользователи». Кликните правой клавишей мыши по папке «Группы», а затем левой — по пункту «Создать группу». Задайте имя и краткое описание, после чего нажмите на кнопку «Создать».
Добавьте в созданную группу конкретных пользователей. Кликните правой клавишей мыши по папке «Локальные пользователи», выберите из контекстного меню пункт «Новый пользователь». Укажите имя пользователя и его пароль.
Раскройте папку «Локальные пользователи» двойным кликом левой кнопкой мыши. Найдите созданного пользователя, кликните по нему правой кнопкой мыши, выберите пункт «Свойства». В появившемся окне откройте вкладку «Членство в группах». Нажмите кнопку «Добавить» и введите в поле в нижней части окна название созданной вами группы. Нажмите кнопку «ОК».
Как подключиться к FTP-серверу
Для этого удобнее всего использовать специализированные программы. В качестве примера можно рассмотреть широко известное приложение Total Commander, в котором есть функционал, необходимый для работы с FTP.
Откройте пункт меню «Сеть». Далее найдите пункт «Соединиться с FTP-сервером». Кстати, попасть к нему можно проще — нажав сочетание клавиш Ctrl-F.
Предположим, вам нужно добавить сервер, который вы посетите впервые. Нажмите для этого кнопку «Добавить». На следующем шаге вам нужно будет ввести данные, относящиеся к серверу и подключению:
имя пользователя и пароль;
тип соединения (здесь SSL — возможность анонимного подключения, TLS — безопасное подключение по защищённому протоколу FTPS).
Есть возможность при подключении к серверу сразу попасть в нужную вам папку, минуя вышестоящие в серверной файловой системе. Для этого предназначено специальное поле (впрочем, заполнять его не обязательно).
Обратите внимание: если вы оставите поле для ввода пароля пустым, Total Commander будет запрашивать пароль всякий раз, когда вы пытаетесь подключиться к серверу. Это не очень удобно, но гораздо лучше с точки зрения безопасности. Если вы зададите пароль при начальной настройке соединения, приложение сохранит его на локальном жёстком диске в незашифрованном виде, что создаст определённые риски.
Если вы правильно задали все настройки, вам удастся подключиться к серверу FTP. После того, как будет установлено стабильное соединение, приступайте к работе с файлами, расположенными на удалённом компьютере.
Интернет технологии (архив 2001-2010)
Служба FTP (от протокола — File Transfer Protocol) — предназначена для обмена файлами.
FTP служба построена по хорошо известной схеме «клиент-сервер».
Клиент (браузер,Windows Commander, NetVampir . ) посылает запросы серверу и принимает файлы.
Сервер FTP (vsftpd, IIS . ) обрабатывает запросы клиента на получение файла.
Взаимодействие клиент и сервера по протоколу FTP.
Служба FTP базируется на двух стандартах:
URL (Universal Resource Locator) — универсальный способ адресации ресурсов в сети ;
FTP (File Transfer Protocol) — протокол передачи файлов.
File Transfer Protocol — протокол передачи файлов, протокол высокого уровня (а именно, уровня приложений).
. Используется службой FTP для передачи файлов.
Первый стандарт — RFC114 (File Transfer Protocol A.K. Bhushan Apr-10-1971).
Последняя версия — RFC959 (File Transfer Protocol J. Postel, J.K. Reynolds Oct-01-1985).
FTP отличается от других приложений тем, что он использует два TCP соединения для передачи файла.
Управляющее соединение — соединение для посылки команд серверу и получение ответов от него. Для канала управления используется протокол Telnet.
Соединение данных — соединение для передачи файлов.
Схема двух каналов соединения по протоколу FTP
В старых версиях для передачи данных использовался только 20-й порт (активный режим), в современных версиях FTP-серверов порт для канала данных может назначаться сервером из нестандартных (N > 1024) портов (пассивный режим).
Протокол FTP определяет запрос-ответный способ взаимодействия между программой-клиентом и программой-сервером.
Работа FTP на пользовательском уровне содержит несколько этапов:
Идентификация (ввод имени и пароля).
Определение режима обмена (поблочный, поточный, ascii или двоичный).
Выполнение команд обмена (get, mget, dir, mdel, mput или put).
Завершение процедуры (quit или close).
5.2.1 Различие работы пассивного режима и активного.
5.2.1.1 Активный режим
Действия сервера и клиента:
Клиент устанавливает связь и посылает запрос на 21 порт сервера с порта N (N>1024)
Сервер посылает ответ на порт N (N>1024) клиента
Сервер устанавливает связь для передачи данных по порту 20 на порт клиента N+1
5.2.1.2 Пассивный режим:
Действия сервера и клиента:
Клиент устанавливает связь и посылает запрос (сообщает, что надо работать в пассивном режиме) на 21 порт сервера с порта N (N>1024)
Сервер посылает ответ и сообщает номер порта для канала данных P (P>1024) на порт N (N>1024) клиента
Клиент устанавливает связь для передачи данных по порту N+1 на порт сервера P (P>1024)
Активный FTP выгоден для FTP-сервера, но вреден для стороны клиента. FTP сервер пытается соединиться со случайными высокими (по номеру) портами на клиенте, такое соединение наверняка будет блокировано брандмауэром на стороне клиента.
Пассивный FTP выгоден для клиента, но вреден для FTP-сервера. Клиент будет делать оба соединения к серверу, но одино из них будет к случайному высокому порту, такое соединение наверняка будет блокировано брандмауэром на стороне сервера.
Ниже приведены примеры запроса клиента и ответа сервера:
5.2.1.3.1 Пример запроса на чтение каталога
Установка соединения
Connecting to ftp.ru .
Connected to ftp.ru [194.87.5.52]
сервер: 220 megillah.demos.su FTP server (Version wu-2.4) ready. — // код ошибки, имя хоста, протокол, версия сервера, только для чтения
клиент: USER anonymous — // имя пользователя
сервер: 331 Guest login ok, send your complete e-mail address as password.— //код ошибки, имя пользователя корректно, нужен пароль
клиент: PASS ****** — // пароль клиента
сервер: 230 Guest login ok, access restrictions apply. — //код ошибки, пользователь идентифицирован, продолжайте
клиент: CWD / — // переход к корневой директории
сервер: 250 CWD command successful. — // команда выполнена успешно
клиент: TYPE A — // передавать информацию в текстовом виде
сервер: 200 Type set to A. — // текстовый тип установлен
клиент: PASV — // сервер должен определить нестандартный порт данных, начать его слушать
сервер: 227 Entering Passive Mode (194,87,5,52,9,75) — // сервер возвращает ip-адрес (194.87.5.52) и номер порта (2383)
клиент: LIST — // передать по соединению данных список имен файлов в директории
сервер: Data connection established — // установлено соединение данных
клиент: 150 Opening ASCII mode data connection for /bin/ls. — // татус файла правилен, подготавливается открытие канала
Передача информации по каналу данных
сообщение: Data transfer started — // начало передачи информации
сообщение: DATA connection closed by remote server — // закрытие канала передачи данных
Информирование клиентом пользователя
сообщение: Received 1 428 bytes in 0:00:00 (35 700 bytes/s) — // сколько байт получено (1 428), за какое время (ч.мм.сс) и с какой средней скоростью (35 700 bytes/s)
сообщение: JOB COMPLETED SUCCESSFULLY — // работа завершена
5.2.1.3.2 Пример запроса файла
Установка соединения
Connecting to ftp.ru .
Connected to ftp.ru [194.87.5.52]
сервер: 220 megillah.demos.su FTP server (Version wu-2.4) ready. — // код ошибки, имя хоста, протокол, версия сервера, только для чтения
клиент: USER anonymous — // имя пользователя
сервер: 331 Guest login ok, send your complete e-mail address as password. — // имя пользователя корректно, нужен пароль
клиент: PASS ****** — // пароль клиента
сервер: 230 Guest login ok, access restrictions apply. — // пользователь идентифицирован, продолжайте
клиент: CWD /www.FAQ.win — // сменить каталог на /www.FAQ.win
сервер: 550 /www.FAQ.win: Not a directory. — // директория /www.FAQ.win не найдена
клиент: TYPE I — // передавать файл в бинарном виде
сервер: 200 Type set to I. — // бинарный тип установлен
клиент: STAT /www.FAQ.win — // запрос информации о файле /www.FAQ.win
сервер: 211-status of /www.FAQ.win: — // начало передачи информации
сервер: -rw-r—r— 1 root root 31368 Jan 18 1999 /www.FAQ.win — // продолжение передачи информации
сервер: 211 End of Status — // конец передачи информации
клиент: PASV — // сервер должен определить нестандартный порт данных, начать его слушать
сервер: 227 Entering Passive Mode (194,87,5,52,9,79) — // сервер возвращает ip-адрес (194.87.5.52) и номер порта (2383)
клиент: REST 64 — // начать докачку файла, пропустив первые 64 байта
сервер: Data connection established — // установлено соединение данных
сервер: 350 Restarting at 64. (null) — // команда принята
клиент: REST 0 — // начать докачку файла, пропустив первые 0 байтов
сервер: 350 Restarting at 0. (null) — // команда принята
клиент: RETR /www.FAQ.win — // выдать файл www.FAQ.win
сервер: 150 Opening BINARY mode data connection for /www.FAQ.win (31368 bytes). — // статус файла правилен, подготавливается открытие канала данных, размер файла 31 368 байт
Передача информации по каналу данных
сообщение: Data transfer started — // начало передачи файла
сообщение: DATA connection closed by remote server — // закрытие канала передачи данных
Информирование клиентом пользователя
сообщение: Received 31 368 bytes in 0:00:02 (10 477 bytes/s) — // сколько байт получено (31 368), за какое время (ч.мм.сс) и с какой средней скоростью (10 477 bytes/s)
сообщение: JOB COMPLETED SUCCESSFULLY — // работа завершена
5.2.1.4 Некоторые команды
управления доступом
USER — имя пользователя
PASS — пароль
CWD — имя новой рабочей директории
CDUP — перейти на один уровень директории вверх
QUIT — выход
установки параметров передачи
PORT ip1,ip2,ip3,ip4,p1,p2 — IP адрес клиента (ip1,ip2,ip3,ip4) и порт (p1,p2) (расчет порта p1*256+p2=номер порта)
Пример:
Entering Passive Mode (194,87,5,52,9,79)
194.87.5.52 — IP адрес
2383 — номер порт, расчет порта 9*256+79=2383
PASV — сервер должен определить нестандартный порт данных, начать его слушать и вернуть ip-адрес и номер порта в формате PORT
TYPE < < A | E >[ N | T | C ] > | I | L размер-байта (по умолчанию — A N) — специфицирует тип информации
действия
RETR — имя файла (взять файл)
STOR — имя файла (передать файл)
REST — маркер (для докачки уже частично скаченного файла — обычно указывается смещение в байтах)
DELE — имя удаляемого файла
RMD — имя удаляемой директории
MKD — имя создаваемой директории
PWD — в ответе указать имя текущей директории
LIST [имя директории или файла] — передать по соединению данных список имен файлов в директории или информацию о файле
SYST — ответ должен содержать тип ОС сервера и др. полезную информацию
STAT — ответ содержать информацию о текущем состоянии сервера; если команда выдана в процессе передачи файла и предварена посылкой сигналов telnet-а IP и Synch, то ответ д. содержать информацию о состоянии пересылки
STAT имя файла — ответ должен содержать информацию о файле
прочее
HELP [имя команды] — описание работы данной команды
NOOP — пустая команда
5.2.1.5 Некоторые типы данных:
ASCII (TYPE A ) — передача текстовой информации
IMAGE (TYPE I ) — передача бинарных файлов
5.2.1.6 Коды возврата
При выполнении FTP система возвращает трехразрядные десятичные коды-ошибки, которые позволяют судить о корректности обмена. Выдача кода сопровождается текстом-комментарием. Первая цифра может принимать значения от 1 до 5.
Первая цифра:
1yz — предварительный положительный ответ: команда принята, но не завершена
2yz — действие успешно завершено
3yz — команда принята, сервер ждет дополнительную информацию
4yz — временная неудача, повторить через некоторое время
5yz — фатальная ошибка
Вторая цифра:
x0z — синтаксис
x1z — ответ на запрос информации
x2z — ответ относится к состоянию управляющего соединения или соединения данных
x3z — аутентификация и учет
x4z — смысл не определен
x5z — состояние файловой системы сервера
5.2.1.6 Некоторые коды возврата
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 Запрошенная операция прервана, недостаточно выделено памяти
5.2.1.7 Соединение к FTP с помощью Telnet
Подсоединимся к командному порту FTP (21):
>telnet ipm.kstu.ru 21
TFTP — тоже протокол FTP, но поверх протокола UDP (т.е. протокол без гарантированной доставки). Может использоваться в локальной сети, где скорость передачи важнее. На практике используется редко.
5.4 Программы клиенты
FTP — программа запускается с командной строки.
Windows Comander — может работать как FTP-клиент. Позволяет работать с удаленными каталогами также как с локальными.
NetVampire — Специализированный FTP-клиент, который позволяет качать большие файлы и качать по плохим каналам.