Протокол FTP применяется давно и на первый взгляд предельно прост. Однако эта простота кажущаяся и многие начинают испытывать проблемы с установлением FTP-соединения, особенно когда сервер или клиент находятся за брандмауэром или NAT’ом. Поэтому сегодня мы поговорим об особенностях работы протокола FTP в различных режимах.
Протокол FTP является старейшим сетевым протоколом (создан в 1971 году), но, тем не менее, широко используется по сей день. Важной особенностью протокола является то, что он использует несколько соединений: одно для управляющих команд, остальные для данных. Причем соединений для передачи данных может открываться несколько, в каждом из которых файлы могут передаваться в обоих направлениях. Именно с этой особенностью и связан ряд проблем.
В зависимости от способа установления соединения для передачи данных различают активный и пассивный режимы работы FTP. В активном режиме сервер сам устанавливает соединение передачи данных к клиенту, в пассивном наоборот. Рассмотрим эти режимы более подробно.
- Активный режим
- Пассивный режим
- Проблема брандмауэра
- Проблема NAT
- Интернет: как это работает. File Transfer Protocol и FTP-клиенты
- FTP-клиенты
- Доступ с помощью ftp.exe
- Доступ с помощью FTP-клиента, встроенного в браузер
- Доступ с помощью FTP-клиента, встроенного в файловый менеджер
- Доступ с помощью FTP-клиента, встроенного в HTML-редакторы
- Доступ с помощью специальных FTP-клиентов
- Поиск файлов на FTP-серверах
- Заключение
- Записки программиста
- 1. Заходим
- 2. Осматриваемся
- 3. Действуем
- 4. Заключение
- Протокол FTP — что это такое, для чего используют
- В чем суть технологии ftp
- Какое предназначение протокола FTP
- Как работает FTP протокол
- Какие команды использует FTP протокол
- Какие есть аналоги у FTP
Активный режим
В активном режиме клиент устанавливает управляющее соединение на порт 21 сервера и передает специальную команду PORT, в которой указывает свой адрес и порт для передачи данных. Получив данную команду, сервер устанавливает соединение с 20 порта на указанный в команде порт клиента.
Внимательный читатель сразу заметит недостаток данного метода: для работы в активном режиме клиенту требуется выделенный IP-адрес. Также определенные сложности будут возникать при нахождении клиента за брандмауэром или NAT’ом.
Пассивный режим
Для установления соединения в пассивном режиме клиент передает серверу команду PASV. В ответ сервер передает адрес и порт, на который следует устанавливать соединение для передачи данных. Получив эту информацию, клиент устанавливает подключение к серверу и начинает передачу данных.
Как видим, в пассивном режиме все соединения инициирует клиент и поэтому к нему нет никаких требований, он может находиться за NAT и брандмауэром, а также не иметь выделенного IP-адреса. Поэтому на сегодняшний день основным режимом работы FTP является пассивный.
Проблема брандмауэра
В активном режиме основная проблема возникает у клиента. Если брандмауэр настроен отбрасывать не инициированные изнутри входящие соединения, то сервер не сможет установить соединение для передачи данных. А так как порт для данных является динамическим, то возникают определенные сложности с настройкой брандмауэра. Наиболее правильным будет указать в клиенте диапазон используемых портов и создать для них разрешающее правило брандмауэра.
В пассивном режиме с такой проблемой может столкнуться сервер. Решение аналогичное: указываем в настройках сервера используемый диапазон портов и создаем для него разрешающее правило.
Проблема NAT
На первый взгляд может показаться, что для нормальной работы FTP-сервера через NAT требуется только правильно настроить форвардинг портов. Однако это не так. Если вы внимательно читали про работу протокола в начале статьи, то должны были запомнить, что в зависимости от режима сервер или клиент передают адрес и порт для соединения. А теперь задумаемся, какой адрес передаст сервер, находящийся за NAT? Правильно, внутренний и, несмотря на правильный проброс портов, клиент не сможет подключиться к такому серверу.
К счастью, большинство современных реализаций NAT умеют отслеживать управляющий канал FTP-соединения и заменяют внутренний адрес сервера адресом внешнего интерфейса. Однако, несмотря на это большинство FTP-серверов имеют опцию, позволяющую указать адрес внешнего интерфейса, который следует указывать в командах управляющей сессии.
В большинстве случаев для нормальной работы FTP-сервера за NAT достаточно будет пробросить 21 порт для управляющей сессии, 20 — для активного режима (если используется), а также указать и пробросить диапазон динамических портов для передачи данных.
Еще один важный момент, если вы пробрасываете порты для нескольких FTP-северов, то на каждом из них следует указать свой диапазон динамических портов и пробросить на эти же номера портов внешнего интерфейса. Почему? Потому что номер порта передается сервером в управляющей команде и ничего не знает о форвардинге, если номер порта, переданный сервером, не совпадет с номером порта на внешнем интерфейсе, то клиент не сможет установить соединение. В то время как управляющий порт и порт активного режима можно форвардить на любые внешние порты.
Надеемся, что данная статья поможет вам лучше понять механизм работы протокола FTP и осознанно подойти к процессу настройки и диагностики.
Источник: https://interface31.ru/tech_it/2013/10/osobennosti-raboty-protokola-ftp.html
Интернет: как это работает. File Transfer Protocol и FTP-клиенты
Александр Прохоров
FTP-клиенты
Доступ с помощью ftp.exe
Доступ с помощью FTP-клиента, встроенного в браузер
Доступ с помощью FTP-клиента, встроенного в файловый менеджер
Доступ с помощью FTP-клиента, встроенного в HTML-редакторы
Доступ с помощью специальных FTP-клиентов
Поиск файлов на FTP-серверах
Заключение
FTP (File Transfer Protocol — протокол передачи файлов) появился в 1971 году и активно используется по сей день. Этот стандартный Интернет-протокол — простейший способ для обмена файлами между компьютерами в Интернете. FTP базируется на протоколах базового уровня TCP/IP.
сновное назначение FTP — пересылать (копировать, передавать) файлы в Интернете с удаленного компьютера на локальный (Download) и с локального компьютера на удаленный (Upload). C помощью FTP-протокола можно также работать со своими файлами прямо на удаленном компьютере. Нужно отметить, что в отличие от Web-серверов, которые предоставляют информацию только для чтения, FTP-серверы позволяют пользователям не только скачивать информацию, но и добавлять информацию на сервере. В частности, чтобы передать файлы, из которых конструируются Web-страницы, пользуются именно FTP-протоколом.
Естественно, что права изменять информацию на сервере должны предоставляться только владельцам данной информации. Права пользователя при обращении к FTP-серверу регламентируются логином и паролем, но это не означает, что в Сети нет серверов, доступных широкой аудитории. На многие серверы можно получить доступ под условным именем, и в этом случае вам будет доступен ограниченный набор файлов.
В общем случае формат адреса FTP-ресурса имеет вид:
ftp://:@:/, где:
- user — имя пользователя (логин);
- password — пароль;
- host — доменное имя или IP-адрес сервера;
- url-path — путь к файлу.
Порт обычно не указывается, а используется стандартный — 21.
Для обращения к серверам общего доступа в качестве имени пользователя достаточно указать anonymous, а в качестве пароля — свой почтовый адрес. Для анонимного FTP в url принят упрощенный синтаксис: ftp:///, то есть при отсутствии имени автоматически будет вставлено anonymous.
FTP-клиенты
лужба FTP основана на клиент-серверной архитектуре. На клиентском компьютере запускается программа-клиент, которая соединяется с сервером и передает или получает файлы. Доступ на FTP-сервер может осуществляться с помощью FTP-клиентов разных классов, а именно:
- консольный клиент — программа ftp.exe, поставляемая вместе с операционной системой Windows;
- FTP-клиент, встроенный в браузер (например, Internet Explorer или Netscape Navigator);
- FTP-клиент, встроенный в файловый менеджер (в частности, FAR или Windows Commander);
- FTP-клиент, встроенный в HTML-редактор (HomeSite, Dreamweaver или FrontPage);
- специальные программы (например, CuteFTP или WS FTP).
Доступ с помощью ftp.exe
Ftp.exe — это консольный клиент, который не имеет графического интерфейса и наименее удобен. Мы приводим его только потому, что он полезен для уяснения основного вопроса, вынесенного в заголовок: «как это работает».
Запустив программу ftp.exe, вы войдете в интерактивный сеанс: программа предоставит вам командную строку и будет ждать запросов. Для ведения диалога существуют несколько десятков команд, ряд которых приведен ниже:
- cd [удаленная_директория] — сменить директорию;
- mkdir [имя_директории] — создать директорию на удаленной машине;
- get [удаленный_файл] [локальный_файл] — передать копию удаленного файла на ваш компьютер. Если имя локального файла не было задано, то оно совпадает с именем удаленного файла;
- reget [удаленный_файл] [локальный_файл] — докачать удаленный файл в том случае, когда часть его уже есть на локальной машине. Команда особенно полезна для получения больших файлов при возможных резервах соединения;
- put [локальный_файл] [удаленный_файл] — переслать файл на удаленную систему. Если имя удаленного файла не указано, то оно совпадает с именем на локальной системе;
- delete [удаленный_файл] — стереть удаленный файл;
- close — оборвать FTP-сеанс с удаленным сервером и вернуть к командному интерпретатору;
- bye — закончить работу с FTP-сервером (приводит к выходу из интерпретатора).
Примечание. Полный список команд и дополнительные сведения можно получить в RFC 959.
Следует отметить, что FTP-протокол предоставляет долговременное интерактивное соединение, в то время как протокол HTTP передает запрошенный объект в рамках одной сессии, а потом разрывает соединение. FTP позволяет вести диалог и поддерживать соединение, пока не будет дана команда о прекращении сеанса связи.
FTP-протокол понимает два типа файлов — текстовые и двоичные, причем все нетекстовые файлы воспринимаются как двоичные. Работа через FTP-соединение осуществляется так же, как обмен текстовыми сообщениями (служебными командами), и непосредственно теми файлами, которые перемещаются между двумя компьютерами.
Читайте также Не подключается к серверу по rdp
Консольная форма работы менее удобна для пользователей, но позволяет лучше понимать, что именно происходит, какие команды выполняет компьютер. Графический интерфейс дает оболочку, с которой удобнее работать, однако скрывает от пользователя некоторые процессы нижнего уровня. Поскольку графические интерфейсы более удобны, в дальнейшем будем говорить именно о них.
Доступ с помощью FTP-клиента, встроенного в браузер
амый распространенный способ работы с FTP-серверами — посредством браузера. Введя в адресной строке браузера такой url, как, например, ftp://ftp.cuteftp.com/pub, вы получаете список папок (рис. 1), из которых можно копировать файлы так же, как с локального диска.
Доступ с помощью FTP-клиента, встроенного в файловый менеджер
айловый менеджер со встроенным FTP-клиентом расширяет свои функции — от уровня обслуживания файловой системы локального компьютера до уровня Интернета. Одним из наиболее удачных файловых менеджеров, который обеспечивает удобный доступ к файловым архивам в Интернет по протоколу FTP, является программа FAR. Она позволяет заранее настроить параметры соединения с FTP-сервером, набрав адрес сервера, имя и пароль для доступа, а также другие параметры.
Таких соединений можно настроить любое количество, а затем соединиться c сервером, выбрав одно из настроенных ранее соединений. Список FTP-серверов может иметь ветвящуюся структуру, то есть внутри него можно создавать папки и помещать туда новые соединения с FTP-серверами или копировать уже существующие. После соединения работа с сервером по перекачке файлов ничем не отличается от работы с файлами на локальном компьютере.
Доступны те же самые функции по копированию, удалению, созданию файлов и каталогов на FTP-сервере (рис. 2).
Немного иначе устроена работа с FTP-серверами в Windows Commander: список соединений с серверами представлен в виде отдельного окна, вызываемого из меню. В этом окне можно редактировать параметры соединений. После установления соединения с выбранным сервером это соединение видно как отдельный диск.
В отличие от FAR, в Windows Commander можно одновременно открывать много соединений и работать с ними так же, как с дисками собственного компьютера. Если не нужно добавлять соединение в список, то можно не настраивать заранее параметры соединения с FTP-сервером, а задать их во время установления соединения.
Есть возможность заранее создать список файлов, которые необходимо перекачать с FTP-сервера, и задать каталог, куда их записать.
Доступ с помощью FTP-клиента, встроенного в HTML-редакторы
FTP-клиент встроен во многие популярные HTML-редакторы, такие как HomeSite, Dreamweaver или FrontPage.
Например, в программе FrontPage вы можете опубликовать свои страницы на удаленном сервере по FTP-протоколу. Чтобы воспользоваться данной функцией, выполните команду File ® Publish Web. В появившейся панели Publish Destination (рис. 3) необходимо ввести адрес FTP-сервера; можно также щелкнуть по стрелочке, чтобы выбрать адрес, на котором вы уже публиковали страницы.
Доступ с помощью специальных FTP-клиентов
уществует довольно много специализированных FTP-клиентов, имеющих удобный графический интерфейс и массу вспомогательных функций. Одной из самых популярных программ в этом ряду является программа CuteFTP. Рассмотрим ее последнюю версию более подробно.
CuteFTP 5.0 XP имеет простой наглядный интерфейс (рис. 4), удобную систему подсказок, вместо командной строки предлагает Windows-подобный интерфейс и поддерживает большинство стандартных для Windows функций, например drag-and-drop. Простой интерфейс позволяет воспользоваться продуктом практически без обучения.
Главное окно программы (рис. 5) служит для того, чтобы передавать файлы на удаленный сервер и скачивать их оттуда. Окно поделено на четыре части:
- верхнее окно (Log Window — регистрационное окно) — отображает ваши команды и ответные команды сервера;
- центральное левое окно (Local Window — окно локальных ресурсов) — отображает файлы и папки, расположенные на вашем жестком диске;
- центральное правое окно (Remote Window — окно удаленных ресурсов) — отображает файлы и папки на удаленном сервере;
- нижнее окно (Queue Window — окно очереди): показывает файлы, передаваемые на сервер.
Существует несколько способов подключиться к удаленному серверу. Опишем наиболее простой. CuteFTP имеет адресную панель, похожую на адресную панель браузера. Вы можете получить доступ к этой панели, выполнив команду: Fileа Quick Connect. Затем введите адрес FTP-сайта, имя пользователя и пароль (если необходимо) и нажмите Enter.
Просмотреть команды локального компьютера и ответы сервера при подключении можно в окне регистрации. Например, при подключении к серверу ftp.microsoft.com команды будут выглядеть следующим образом:
STATUS:> Connect: Tuesday 00:11:45 02-11-2003STATUS:> Connecting to ftp.microsoft.comSTATUS:> Connecting to ftp.microsoft.com (ip = 207.46.133.140)STATUS:> Socket connected. Waiting for welcome message…220 Microsoft FTP ServiceSTATUS:> Connected. Authenticating…COMMAND:> USER anonymous331 Anonymous access allowed, send identity (e-mail name) as password.COMMAND:> PASS ********230-This is FTP.Microsoft.Com.230 Anonymous user logged in.STATUS:> Login successfulCOMMAND:> TYPE I200 Type set to I.COMMAND:> REST 100350 Restarting at 100.COMMAND:> REST 0350 Restarting at 0.STATUS:> This site can resume broken downloadsCOMMAND:> PWD257 “/” is current directory.COMMAND:> TYPE A200 Type set to A.STATUS:> Retrieving directory listing…COMMAND:> PASV227 Entering Passive Mode (207,46,133,140,51,204).COMMAND:> LISTSTATUS:> Connecting data socket…125 Data connection already open; Transfer starting.STATUS:> Received 809 bytes Ok.STATUS:> Time: 0:00:01, Efficiency: 0.79 KBytes/s (809 bytes/s)226 Transfer complete.STATUS:> Done.
Подключившись к удаленному серверу, вы можете воспользоваться многими способами передачи файлов. Самый привычный — drag-and-drop-метод: выделяете необходимый файл и перетаскиваете его из одной панели в другую (рис. 6). Более подробное описание программы можно найти по адресу http://www.cuteftp.com/.
Поиск файлов на FTP-серверах
ногие пользователи Интернета при поиске необходимых файлов и программ ищут html-страницы по их содержимому, не зная о существовании поисковых средств, которые позволяют искать файлы на FTP-серверах по именам самих файлов и каталогов.
Действительно, если вы ищете описание какой-либо программы, то следует это делать на Web-серверах. Если же вы знаете имя программы и ищете сервер, с которого ее можно скачать, то удобнее воспользоваться именно поисковиком FTP-ресурсов. Одним из популярных систем для поиска файлов является ресурс http://www.filesearch.ru/. На рис.
6 представлен результат поиска FTP-серверов, с которых можно скачать программу CuteFTP.
На сайте http://www.filesearch.ru/ можно также найти список крупнейших FTP-серверов, 20 из которых мы показали на рис. 7. Первое место в рейтинге, естественно, принадлежит ресурсу, хранящему MP3-файлы, и его объем просто поражает — более 2 тыс. гигабайт!
Заключение
FTP имеет свои достоинства и недостатки. Главный недостаток состоит в том, что в отличие от Web-службы на FTP-сервере вы получаете минимум дополнительной информации о ресурсах — вся информация представлена в виде списка файлов на удаленном компьютере.
Если вы скачиваете файлы непосредственно с Web-страниц, используя протокол HTTP (и не прибегаете к специальным программам докачки), то при медленной связи скачать большой файл достаточно трудно. Дело в том, что процедура передачи файлов в HTTP имеет большой минус в виде отсутствия такой полезной функции, как reget (функция докачки).
Это означает, что если при использовании протокола HTTP произойдет обрыв связи, то вам придется скачивать файл с самого начала. При использовании FTP-протокола вы можете воспользоваться функцией Reget и продолжить скачивание с того места, на котором остановились.
Таким образом, необходимо учитывать достоинства и недостатки каждого из протоколов.
КомпьютерПресс 4’2003
Источник: https://compress.ru/article.aspx?id=10386
Записки программиста
Если вы достаточно давно читаете этот блог, то можете помнить о том, как я решил собрать в нем описание популярных (и не очень) сетевых протоколов. Зачем это мне нужно, можно прочитать в статье Достаточно полное описание протокола SMTP. Вот решил пополнить коллекцию протоколом FTP, повсеместно используемым для передачи файлов.
1. Заходим
По традиции, сразу начну с примера:
$ telnet example.ru 21Trying 192.168.0.1…Connected to example.ru.Escape character is ‘]’.220-Welcome to Pure-FTPdYou are user number 5 of 100 allowed.Local time is now 17:41. Server port: 21.220 You will be disconnected after 15 minutes of inactivity.USER afiskon331 User afiskon OK. Password requiredPASS lamepassword230-User afiskon has group access to: coders
230 OK. Current restricted directory is /
FTP-сервер обычно работает на 21 порту. В приведенном примере строки, начинающиеся с цифр, посылаются сервером, остальные — клиентом. Запросы клиента всегда состоят из одной строки формата КОМАНДА [аргументы], в то время как ответы сервера могут содержать несколько строк.
Первая и последняя строки начинается с трех цифр, представляющих собой код ответа, за которыми идет текстовое описание ответа, отделенное от кода либо пробелом, либо тире. Если в качестве разделителя используется пробел, значит строка является последней в ответе (и, возможно, единственной), иначе — мы получили первую строку многострочного ответа. Где-то мы это уже видели, не так ли?
Существует пять групп ответов сервера:
Код | Значение |
1xx | Команда принята и в настоящее время идет ее выполнение. |
2xx | Команда принята и успешно выполнена. |
3xx | Команда принята, требуется дополнительная команда. |
4xx | Команда не может быть принята в данный момент. |
5xx | Невозможно выполнить команду. |
Как видно из примера, все начинается с посылки сервером кода 220. Затем пользователь должен залогиниться с помощью команд USER и PASS. Если все сделано правильно, на первую сервер ответит кодом 331, а на вторую — 230. Для анонимного входа (если он разрешен настройками сервера), в качестве имени пользователя следует указать «anonymous», а в качестве пароля — свой e-mail. На практике обычно посылается либо пустой e-mail, либо что-то типа root@example.ru.
Читайте также Первичный dns сервер как узнать?
Как видно, пароль передается в открытом виде, потому крайне желательно шифровать FTP-соединение с помощью SSL (это называется FTPS — FTP плюс SSL), а еще лучше — передавать файлы по SSH с помощью утилит scp, sftp или WinSCP. Первые две есть в любой unix-системе и используют для передачи файлов одноименные протоколы, работающие поверх SSH. WinSCP написан для Windows и внешне напоминает Total Commander, умеет работать как с устаревшим SCP (Secure Copy), так и SFTP (SSH File Transfer Protocol), появившимся только в SSH-2.
2. Осматриваемся
Но что-то меня не в ту степь понесло. После прохождения аутентификации (надо же, больше не путаю с авторизацией) FTP-сервер с радостью выполнит наши команды. Вот их список:
Команда | Ожидаемый код | Описание |
DELE | 250 | Удалить файл |
RMD | 250 | Удалить директорию |
CWD | 250 | Перейти в директорию |
MKD | 257 | Создать директорию |
PWD | 257 | Узнать текущую директорию |
QUIT | 221 | Закончить работу |
TYPE | 200 | Установить тип передачи |
PORT | 200 | Перейти в активный режим |
PASV | 227 | Перейти в пассивный режим |
LIST | 150,226 | Получить содержимое каталога |
RETR | 150,226 | Скачать файл |
STOR | 150,226 | Залить файл |
ABOR | 426,226 | Отменить передачу |
RNFR | 350 | Выбрать файл для переименования |
RNTO | 250 | Переименовать файл |
Здесь я перечислил лишь основные команды, которых достаточно для написания полноценного FTP-клиента. Дело в том, что в реальных условиях FTP-серверы очень избирательно относятся к поддержке команд, описанных в RFC959 и RFC3659. Так что, если мы хотим получить действительно работающее приложение, а не сферического коня в вакууме, придется ограничиться лишь командами из приведенного списка.
Самые простые команды — это QUIT, DELE, MKD, CWD и RMD. Просто командуем и проверяем код, возвращаемый сервером. Если он равен ожидаемому, значит все ОК, если нет — обрабатываем ошибку.
MKD ftp_test257 «ftp_test» : The directory was successfully createdCWD ftp_test250 OK. Current directory is /ftp_testCWD ..250 OK. Current directory is /RMD ftp_test
250 The directory was successfully removed
Если бы я писал FTP-клиент, то код, отвечающий за выполнение названных команд, выглядел бы примерно так:
int code; char* dir; // … if(code = rawcmd(250, «RMD %sr», dir)) printf(«Error: %d», code); else
printf(«All done!»);
Чуть сложнее с парсингом ответа сервера на команду PWD:
PWD
257 «/ftp_test» is your current location
Текущая директория передается в единственной (последней?) строке ответа сервера, заключенная в двойные кавычки. Если полное имя текущей директории содержит двойные кавычки, они заменяются на две кавычки:
PWD
257 «/ftp»»test» is your current location
Для переименования файлов используется пара команд — RNFR и RNTO:
RNFR old_file.zip350 Are you kidding?RNTO new_file.zip
250 Done!
По всей видимости, это такая оптимизация, чтобы буфер, в который сервер читает команды клиента, был порядка максимально допустимой длины полного имени файла, а не в два раза больше. В 1971-м году, когда был создан протокол, это могло быть важно.
Команда TYPE позволяет установить режим передачи файлов. Пример:
TYPE E200 TYPE is now EBCDICTYPE A200 TYPE is now ASCIITYPE I
200 TYPE is now 8-bit binary
Насколько я могу судить, сегодня эта команда уже устарела и все данные можно спокойно передавать в бинарном формате (TYPE I). Цитата из Википедии:
Первые компьютеры использовали формат, размером в байт, машинное слово, двойное машинное слово, не кратное 8. Обычно они были кратны шести. Восемь бит в байте было принято при разработке системы машинных команд для IBM System/360. Это стало международным стандартом и с начала 1970-х большинство компьютеров использует байты, состоящие из 8 бит, и машинные слова, кратные 8.
3. Действуем
Особенность протокола FTP — для выполнения команд и передачи файлов используются разные соединения. Это в общем-то нормальное проектное решение. Мы же не знаем, что там в этих файлах записано, а если передавать их вместе с командами, придется как-то кодировать содержимое файла, чтобы отличить его от команд. Зачем увеличивать объем трафика и усложнять протокол, когда можно просто открыть новое соединение и послать файл, как есть?
При установлении нового соединения кто-то должен собственно соединяться, а кто-то соединение принимать. Если клиент открывает порт, а сервер коннектится к нему, режим передачи файла называется активным. В обратном случае — пассивным. За счет того, что многие пользователи Интернета сегодня сидят за NAT, обычно используется пассивный режим. И это не очень хорошо, потому что число портов у сервера ограничено.
Что интересно — существует возможность передавать файлы с одного FTP-сервера на другой напрямую. Но поскольку такая возможность часто использовалась в DDoS-атаках, сейчас она практически везде отключена.
PORT 192,168,10,1,21,133200 PORT command successfulPASV
227 Entering Passive Mode (192,168,0,1,21,216)
Как несложно догадаться, с помощью цифр кодируется IP-адрес и порт для соединения. Допустим, мы находимся в пассивном режиме и хотим установить соединение для передачи данных:
$ telnet 192.168.0.1 `expr 21 * 256 + 216`Trying 192.168.0.1…Connected to example.ru.
Escape character is ‘]’.
После чего можем, например, просмотреть содержимое текущего каталога, заюзав команду LIST:
LIST150 Accepted data connection226-Options: -a -l
226 5 matches total
Смотрим на вывод telnet:
drwx—— 5 afiskon coders 512 Jul 7 11:35 .drwx—— 5 afiskon coders 512 Jul 7 11:35 ..drwxr—r— 3 afiskon coders 512 Jun 6 14:30 eax.medrwxr-xr-x 2 afiskon coders 1024 Jul 7 00:16 logsdrwxr—r— 2 afiskon coders 512 Jun 6 14:30 tmp
Connection closed by foreign host.
Абсолютно аналогично происходит скачивание и аплоад файлов, только используются команды RETR {файл} и STOR {файл} соответственно. Команды RETR, STOR и LIST можно прервать в процессе выполнения с помощью команды ABOR, в ответ на которую сервер должен ответить 426 «передача прервана», а затем — 226 «отмена операции произошла успешно».
4. Заключение
На этом я, пожалуй, закончу свое повествование. Получилось 9 Кб текста против 130 Кб RFC959. По этой статье вполне можно написать несложный FTP клиент или сервер, я проверял! Самое главное — это протестировать его на совместимость с максимально возможным количеством ПО, поскольку, как я уже отмечал, в мире FTP мало кто строго следует RFC. Ну и последнее — помните золотое правило «Be liberal with input, strict with output».
Протоколы, Сети.
Источник: https://eax.me/ftp-descr/
Протокол FTP — что это такое, для чего используют
Один из старейших сетевых протоколов — это FTP. Для чего он предназначен, какова его роль в сетевом «общении» компьютеров, как работает данный протокол и стоит ли его использовать — ответы на все эти вопросы вы найдете в статье ниже.
В чем суть технологии ftp
Современный протокол FTP используют несколько по-другому, чем раньше. Изначально его разрабатывали для работы с большими объемами данных. Потому был придуман не только протокол FTP, но и FTP-архив. Сейчас последний стал глобальным хранилищем для множества файлов, размещенных на серверах по всему миру. Архив образован из большого количества FTP-серверов и есть специальные поисковые системы, которые позволяют искать данные по хостам, такие как Напалм или FileSearch.
Не во всякую часть FTP-архива может влезть посторонний пользователь через поисковик. Существует сервера с различным уровнем доступа. Многие знают FTP, как протокол, который нужен для загрузки сайта на хостинг, то есть который необходим для конфиденциального использования. Точно для таких же целей используют FTP-архив и для коммерческих организаций, которые хранят какую-то секретную информацию в них.
Но есть и множество публичных FTP-архивов, которые являются подобием файлообменников. Именно для таких архивов и созданы специальные поисковики — чтобы пользователи могли находить сразу файлы, а не статьи с долгим описанием программ или игр, вместо самих приложений.
Какое предназначение протокола FTP
Предназначен FTP протокол для передачи данных между клиентом и сервером. Он так и называется — «протокол передачи данных». Поскольку им пользуются уже очень давно, FTP вошел в число стандартов сети Intetnet. Впервые протокол был использован еще в 1971 году. За время существования он сильно изменился.
Некоторые функции убрали, и сделали упор на том, что FTP хорошо подходит для обмена данными между удаленными компьютерами. Со временем его сделали более удобным для обычных пользователей. Ведь зайти в FTP-сервер можно как при помощи специальной программы, так и используя стандартные службы операционных систем.
К примеру, вы даже сможете подключиться к серверу FTP при помощи стандартного проводника Windows.
Кроме того, FTP предназначен для распределения прав доступа между пользователями сервера. Разные пользователи сервера имеют свой набор прав. К примеру, одни могут только читать данные, а другие перемещать, переименовывать, редактировать и загружать файлы на хост. Поскольку создавать FTP-сервера так же просто, как пользоваться им, многие юзеры используют этот протокол для создания удаленного доступа к своим компьютерам.
Читайте также Почему плей маркет выдает ошибку сервера?
Некоторые путают FTP и TCP. Хотя эти понятия невозможно сравнивать. FTP является протоколом, а TCP — это канал, по которому он работает. А устанавливается этот канал между устройством-сервером и устройством-клиентом. «Устройством», а не компьютером, потому что FTP можно использовать и на смартфонах при помощи специальных программ, не только на ПК.
Учтите, что FTP — хороший протокол для работы на удаленном компьютере, если вам нужно загружать туда какие-то данные, или наоборот — скачивать их.
Но для передачи конфиденциальной информации этот протокол совсем не подходит. Именно поэтому разработчики сервиса Яндекс Диск отказались использовать FTP в качестве основного протокола, и выбрали вместо него WebDAV. FTP является открытым протоколом, который не шифрует данных. И даже если вы установите парольную аутентификацию для клиентов на сервере, данные, которые они введут при авторизации, будут переданы на хост открытым текстом. То есть стоит их перехватить, и злоумышленники смогут проникнуть на сервер.
Как работает FTP протокол
В целом, модель работы FTP протокола очень простая, потому у вас не должны появиться проблемы во время его использования. Самая банальная модель — это когда пользователь использует программу-интерпретатор.
При помощи нее можно все команды выполнять в удобном интерфейсе, потому не придется знать их и вводить в терминал. Вы отдаете команды в интерпретатор, а он по управляющему соединению передает их на сервер. Управляющее соединение работает в протоколе TELNET.
Таким образом, устанавливая контакт с интерпретатором сервера, пользователь авторизуется на хосте и получает возможность использовать больше команд.
От набора команд, передаваемых по управляющему соединению, зависит поведение сервера и клиента, а также процесс передачи данных. Кроме того, при помощи команд можно управлять файловой системой клиента и сервера.
Для передачи данных используется другой канал, отличный от управляющего. Но последний инициирует вызов соединения для передачи данных. Принцип работы соединения передачи данных отличается от порядка работы управляющего канала, потому как сервер инициирует обмен файлами и данными. Хотя данное соединение может быть использовано в обоих направлениях: и для приема, и для передачи данных.
А вот в чем заключается общий алгоритм работы для любого протокола FTP на сервере:
- Сервер всегда находится в некотором состоянии ожидания со стороны пользователя. В любой момент клиент может подключиться к серверу, потому управляющий канал держит открытым 21-й порт. Именно по нему переходят все управляющие команды. Порт 21 установлен по умолчанию, но его могут изменить. Тогда пользователю придется вводить номер порта вручную, иначе он не сможет выйти на управляющий канал.
- После соединения через порт канала управления, программа со стороны клиента может отдавать команды интерпретатору сервера. Эти команды определяют как изменения внутри файловой системы сервера, так и способ передачи данных, их содержание, объем, тип режима работы и многое другое.
- После того, как все команды для передачи данных согласованы, один из участников соединения становится в пассивный режим ожидания (сервер или клиент). Он ждет, пока ему выдадут номер порта, чтобы открыть его и получить или отправить данные по нему.
- После окончания процесса передачи данных соединение закрывается, но управляющий канал по-прежнему остается открытым. Это позволяет пользователю все проделать снова: дать команду серверу и вновь начать передачу данных. При этом не нужно заново создавать сессию. Потому-то FTP и работает при помощи двух типов соединения.
Поскольку это самая банальная модель работы протокола FTP, бывают и более сложные случаи. К примеру, когда не пользователь работает с сервером, а сервер с сервером. При этом клиент управляют передачей данных напрямую между серверами, без посредников. И подобных примеров конфигурацией сервер-клиент можно привести большое множество. В этом кроется одно из преимуществ протокола FTP — гибкость работы.
Главное, что нужно понять в работе FTP протокола — это взаимодействие соединений и портов. Большинство ошибок во время работы по этому протоколу связаны с тем, что одна из сторон соединения не настроила свой порт. Есть пассивная и активная сторона протокола. Пассивная должна внимательно слушать и дожидаться, пока активная не передаст номер порта, который тут же нужно открыть. Если порт не будет открыт, передача данных не начнется.
https://www.youtube.com/watch?v=7VHc5iJar0g
Не думайте, что вы должны вручную ждать какие-то команды от активного участника соединения — это все делается автоматически. Проблемы появляются, когда, к примеру, у вас на компьютере уже занят тот или иной порт, либо заблокирован для входящих/исходящих соединений. Вот в такие моменты придется «закатать рукава», и вручную настроить компьютер, чтобы он мог корректно работать при помощи FTP.
Какие команды использует FTP протокол
Скорее всего, вам они в работе не понадобятся, поскольку вы будете использовать юзер-агент в виде программы с удобным интерфейсом. Одна из таких программ — это FileZIlla. Но всякое бывает. Возможно, у вас под рукой будет только Far Maneger, где все необходимо делать через терминал. В таком случае вы должны познакомиться с основными командами для FTP.
Чтобы подключиться к серверу, вам придется воспользоваться командой USER. Она необходима, чтобы обозначить имя юзера, который хочет открыть сессию с сервером. После того, как вы введете идентификатор пользователя в команде USER, вам нужно прописать пароль для входа. Для этого используйте специальную команду — PASS.
Одна из самых популярных функций, при помощи которой вы сможете «путешествовать» по серверу — это CWD. Команда нужна для того, чтобы вы могли перемещаться между директориями сервера. Чтобы воспользоваться командой, введите CWD и путь каталога, в который вы хотите попасть.
Если в каком-то случае вам необходимо провести реинициализацию, то есть опустить все данные и настройки текущего соединения, то используйте команду REIN. Во время ее использования передача данных не прекращается, и параметры передачи остаются прежними, какими были до команды REIN. Либо можете сделать это еще более радикальным способом — закрыть управляющее соединение при помощи команды QUIT. Она также не прерывает передачу данных, и только после окончания загрузки сессия полностью прерывается.
Для того, чтобы прописать порт в активном режиме, то есть назначить его для пассивного участника, вам нужно воспользоваться командой PORT. Проблема в том, что эта команда очень сложная для написания — вам нужно будет указать 32 бита IP сервера и 16 бит номера порта, что совсем неудобно. Потому лучше найдите способ использовать упрощенный клиент для работы по FTP протоколу, чтобы сильно не нагружать себя. В подобном клиенте изменить номер порта — это плевое дело. Достаточно зайти в настройки, найти нужный пункт и вписать в него другую цифру вместо текущей.
Команды RETR и STOR вы будете использовать для того, чтобы передавать данные с сервера и на сервер. Первая команда нужна для того, чтобы отправить выделенный файл на устройство клиента, а вторая — на сервер. А чтобы переименовать файл, вам нужно использовать две последовательные команды. Сначала пропишите RNFR со старым именем файла, а затем RNTO, указав новое имя файла. Также вам понадобится команда DELE, которая нужна для удаления данных с файловой системы, точнее того файла, который выделен в текущий момент.
Для удаления каталогов используются другие команды. Чтобы удалить выделенный каталог, вам понадобится команда RMD. А чтобы создать новую папку, используйте строку MKD. Также пользователям часто нужна функция просмотра файлов, которые имеются в каталоге. Для этого используйте команду LIST, либо NLST.
Какие есть аналоги у FTP
У протокола передачи данных FTP есть его прямые «наследники», то есть протоколы, которые образованы из ФТП. Это два протокола: TFTP и SFTP. Первый протокол не самый популярный, потому как сильно ограничен в плане команд. Он гораздо хуже подходит для управления файловой системой сервера, чем FTP. Вы не сможете даже просмотреть список файлов каталога при помощи него. Нужен TFTP только для передачи простейшей 8-битной информации, не более. И в этом протоколе есть всего 5 команд, которые нужны для чтения, записи, запроса пакета данных и других простых операций.
А вот протокол SFTP куда более удачный, чем TFTP и в некоторых случаях — чем FTP. Дело в том, что это защищенный FTP протокол. Он является комбинацией шифрованного SSH соединения и протокола передачи данных FTP. Кроме того, в SFTP многие лишние функции исключены, которые были введены в FTP уже давно, но никем не используются.
Потому SFTP и безопаснее, чем FTP, и при этом скромнее в хорошем смысле этого слова. Рекомендуется выбирать именно SFTP в тех случаях, когда вы работаете с какими-то конфиденциальными данными.
Тогда даже если хакеры и перехватят отправляемые данные по управляющему соединению, они все равно будут зашифрованными и никакой ценности взломщикам не принесут.
И лучше используйте FTP протокол в нормальных программах-клиентах, а не в терминале. Ведь так вы значительно ускорите работу по протоколу передачи данных и получите доступ к более изощренным его функциям.
Источник: http://e-webmaster.ru/ftp/protokol-ftp-chto-eto-takoe-dlya-chego-ispolzuyut.html