1 курс / Техника и технология СМИ / Семинары / FTP
FTP (англ. File Transfer Protocol — протокол передачи файлов) — протокол, предназначенный для передачи файлов в компьютерных сетях. FTP позволяет подключаться к серверам FTP, просматривать содержимое каталогов и загружать файлы с сервера или на сервер; кроме того, возможен режим передачи файлов между серверами (см. FXP).
FTP является одним из старейших прикладных протоколов, появившимся задолго до HTTP, в 1971 году. Он и сегодня широко используется для распространения ПО и доступа к удалённым хостам(любое устройство, предоставляющее сервисы формата «клиент-сервер» в режиме сервера по каким-либо интерфейсам и уникально определённое на этих интерфейсах).
Протокол FTP относится к протоколам прикладного уровня(протоколы, работающие на верхнем уровне модели OSI и обеспечивающие взаимодействие приложений и обмен данными между ними.) и для передачи данных использует транспортный протокол TCP(протокол управления передачей). Команды и данные, в отличие от большинства других протоколов, передаются по разным портам(идентифицируемый номером системный ресурс, выделяемый приложению, выполняемому на некотором сетевом хосте, для связи с приложениями, выполняемыми на других сетевых хостах). Исходящий порт 20, открываемый на стороне сервера, используется для передачи данных, порт 21 для передачи команд. Порт для приема данных клиентом определяется в диалоге согласования. В случае, если передача файла была прервана по каким-либо причинам, протокол предусматривает средства для докачки файла, что бывает очень удобно при передаче больших файлов.
Протокол не шифруется, при аутентификации(проверка принадлежности субъекту доступа предъявленного им идентификатора) передаются логин и пароль открытым текстом. В случае построения сети с использованием хаба(сетевое устройство, предназначенное для объединения нескольких устройств Ethernet в общий сегмент сети), злоумышленник при помощи пассивного сниффера( сетевой анализатор трафика, программа или программно-аппаратное устройство, предназначенное для перехвата и последующего анализа, либо только анализа сетевого трафика, предназначенного для других узлов.) может перехватывать логины и пароли находящихся в том же сегменте сети(устройство, предназначенное для соединения нескольких узловкомпьютерной сети в пределах одного или нескольких сегментов сети) пользователей FTP, или, при наличии специального ПО, получать передаваемые по FTP файлы без авторизации. При построении сети на свитчах задача злоумышленника усложняется, но взлом всё равно возможен (MAC-спуфинг, переполнение таблицы адресов). Чтобы предотвратить перехват трафика, необходимо использовать протокол шифрования данных SSL, который поддерживается многими современными FTP-серверами и некоторыми FTP-клиентами.
Процесс нешифрованной авторизации проходит в несколько этапов (символы \r\n означают перевод строки):
Установка TCP-соединения с сервером (обычно на 21 порт)
Посылка команды USER логин\r\n
Посылка команды PASS пароль\r\n
Если к серверу разрешён анонимный доступ (как правило, лишь для загрузки данных с сервера), то в качестве логина используется ключевое слово «anonymous» или «ftp», а в качестве пароля — адрес электронной почты:
После успешной авторизации можно посылать на сервер другие команды.
- ABOR — Прервать передачу файла
- CDUP — Сменить директорию на вышестоящую.
- CWD — Сменить директорию.
- DELE — Удалить файл (DELE filename).
- EPSV — Войти в расширенный пассивный режим. Применяется вместо PASV.
- HELP — Выводит список команд принимаемых сервером.
- LIST — Возвращает список файлов директории. Список передается через соединение данных.
- MDTM — Возвращает время модификации файла.
- MKD — Создать директорию.
- NLST — Возвращает список файлов директории в более кратком формате чем LIST. Список передается через соединение данных.
- NOOP — Пустая операция
- PASV — Войти в пассивный режим. Сервер вернет адрес и порт к которому нужно подключиться чтобы забрать данные. Передача начнется при введении следующих команд RETR, LIST и тд.
- PORT — Войти в активный режим. Например PORT 12,34,45,56,78,89. В отличие от пассивного режима для передачи данных сервер сам подключается к клиенту.
- PWD — Возвращает текущую директорию.
- QUIT — Отключиться
- REIN — Реинициализировать подключение
- RETR — Скачать файл. Перед RETR должна быть команда PASV или PORT.
- RMD — Удалить директорию
- RNFR и RNTO — Переименовать файл. RNFR — что переименовывать, RNTO — во что.
- SIZE — Возвращает размер файла
- STOR — Закачать файл. Перед STOR должна быть команда PASV или PORT.
- SYST — Возвращает тип системы(UNIX, WIN, …)
- TYPE — Установить тип передачи файла(Бинарный, текстовый)
- USER — Имя пользователя для входа на сервер
- Публикация страниц сайта на интернет-сервере Веб-разработчиком
- Cкачивание музыки, программ и любых других файлов данных обычным пользователем интернета. Данный пример зачастую даже не осознается многими пользователями как использование FTP-клиента и протокола, так как многие публичные серверы не запрашивают дополнительных данных для аутентификации пользователей, а Интернет-браузеры (также являющиеся FTP-клиентами) осуществляют скачивание файлов без дополнительных вопросов.
Протокол передачи файлов
FTP (англ. File Transfer Protocol — протокол передачи файлов) — протокол, предназначенный для передачи файлов в компьютерных сетях. FTP позволяет подключаться к серверам FTP, просматривать содержимое каталогов и загружать файлы с сервера или на сервер; кроме того, возможен режим передачи файлов между серверами (см. FXP).
FTP является одним из старейших прикладных протоколов, появившимся задолго до 1971 году. До начала 90-х годов на долю FTP приходилось около половины трафика в сети Интернет. Он и сегодня широко используется для распространения ПО и доступа к удалённым хостам.
Протокол FTP относится к протоколам прикладного уровня и для передачи данных использует транспортный протокол портам. Порт 20 используется для передачи данных, порт 21 для передачи команд.
Протокол не шифруется, при аутентификации передаёт логин и пароль открытым текстом. Если злоумышленник находится в одном сегменте сети с пользователем FTP, то, используя сниффер, он может перехватить логин и пароль пользователя, или, при наличии специального ПО, получать передаваемые по FTP файлы без авторизации. Чтобы предотвратить перехват трафика, необходимо использовать протокол шифрования данных
Процесс нешифрованной авторизации проходит в несколько этапов (символы \r\n означают перевод строки):
Установка TCP-соединения с сервером (обычно на 21 порт) Посылка команды USER логин\r\n Посылка команды PASS пароль\r\n
Если к серверу разрешён анонимный доступ (как правило, лишь для загрузки данных с сервера), то в качестве логина используется ключевое слово «anonymous» или «ftp», а в качестве пароля — адрес электронной почты:
USER anonymous\r\n PASS someone@email\r\n
После успешной авторизации можно посылать на сервер другие команды.
Основные команды
- ABOR — Прервать передачу файла
- CDUP — Сменить директорию на вышестоящую.
- CWD — Сменить директорию.
- DELE — Удалить файл (DELE filename).
- HELP — Выводит список команд принимаемых сервером.
- LIST — Возвращает список файлов директории. Список передается через соединение данных (20 порт).
- MDTM — Возвращает время модификации файла.
- MKD — Создать директорию.
- NLST — Возвращает список файлов директории в более кратком формате чем LIST. Список передается через соединение данных (20 порт).
- NOOP — Пустая операция
- PASV — Войти в пассивный режим. Сервер вернет адрес и порт к которому нужно подключиться чтобы забрать данные. Передача начнется при введении следующих команд RETR, LIST и тд.
- PORT — Войти в активный режим. Например PORT 12,34,45,56,78,89. В отличие от пассивного режима для передачи данных сервер сам подключается к клиенту.
- PWD — Возвращает текущую директорию.
- QUIT — Отключиться
- REIN — Реинициализировать подключение
- RETR — Скачать файл. Перед RETR должна быть команда PASV или PORT.
- RMD — Удалить директорию
- RNFR и RNTO — Переименовать файл. RNFR — что переименовывать, RNTO — во что.
- SIZE — Возвращает размер файла
- STOR — Закачать файл. Перед STOR должна быть команда PASV или PORT.
- SYST — Возвращает тип системы(UNIX, WIN, . )
- TYPE — Установить тип передачи файла(Бинарный, текстовый)
Пример
220 FTP server ready. USER ftp //Анонимус 230 Login successful. PASV 227 Entering Passive Mode (192,168,254,253,233,92)//Клиент должен открыть соединение на переданный IP LIST 150 Here comes the directory listing. //Сервер передает список файлов в директории 226 Directory send OK. CWD incoming 250 Directory successfully changed. PASV 227 Entering Passive Mode (192,168,254,253,207,56) STOR gyuyfotry.avi 150 Ok to send data. //Клиент передает содержимое файла 226 File receive OK. QUIT 221 Goodbye.
На многих FTP-серверах существует каталог (под названием incoming, upload и т. п.), открытый на запись и предназначенный для закачки файлов на сервер. Это позволяет пользователям наполнять сервер свежими данными.
Изначально протокол предполагал встречное TCP-соединение от сервера к клиенту для передачи файла или содержимого каталога. Это делало невозможным общение с сервером, если клиент находится за , кроме того, часто запрос соединения к клиенту блокируется файерволом. Чтобы этого избежать, было разработано расширение протокола FTP passive mode, когда соединение для передачи данных тоже происходит от клиента к серверу. Кроме того, этой проблемы можно избежать, если использовать прокси-сервер (именно FTP прокси-сервер).
Специально для работы FTP протокола через межсетевые экраны , было сделано расширение NAT, называемое NAT-PT (rfc2766), позволяющее транслировать входящие соединения от сервера к клиенту через NAT. В процессе такого соединения NAT подменяет передаваемые данные от клиента указывая серверу истинный адрес и порт с которым сможет соединиться сервер, а потом транслирует соединение от сервера от этого адреса, клиенту на его адрес. Несмотря на все меры и нововведения принятые для поддержки FTP протокола, на практике функция NAT-PT обычно отключается во всех роутерах и маршрутизаторах с целью обеспечения дополнительной безопасности от вирусных угроз.
FXP
FXP (англ. File eXchange Protocol — протокол обмена файлами) — способ передачи файлов между двумя FTP сайтами напрямую, не закачивая их на свой компьютер . При FXP сессии, клиент открывает два FTP соединения к двум разным сайтам, запрашивая пакеты данных у первого сайта как будто бы от имени второго. Польза этого метода в том, что можно перекачивать файлы по сети с огромной скоростью, обладая низкоскоростным соединением. Это свойство протокола FTP обнаружили и стали использовать ещё до появления файлообменных программ (p2p).
Несомненным преимуществом поддержки стандарта FXP является то, что на конечных пользователей, желающих скопировать файлы с одного FTP-сервера на другой, уже не действует ограничение пропускной способности их собственного интернет-соединения. Нет необходимости скачивать себе файл, чтобы потом положить его на другой FTP-сервер. Таким образом, время передачи файлов будет зависеть только от скорости соединения между двумя удаленными FTP-серверами, которая в большинстве случаев заведомо больше «пользовательской».
К сожалению, использование стандарта FXP налагает на FTP-серверы и на пользователей, некоторые ограничения. Во-первых, оба сервера должны поддерживать режим PASV и позволять выполнять команды PORT иностранным хостам, а во-вторых, передача данных невозможна в том случае, когда оба сервера находятся под управлением операционных систем семейства Windows (например, Windows NT или Windows 2000). Возможность пересылать файлы напрямую с одного FTP-сервера на другой появляется только при условии, что хотя бы один из них управляется UNIX-подобной системой.
См. также
Ссылки
- Первоначальная спецификация FTP RFC 959
- Расширения безопасности RFC 2228
- Интернационализация FTP RFC 2640
- Расширение NAT-PT для поддержки FTP RFC 2766
- Шифрование KEA и SKIPJACK RFC 2773
- Расширение команд FTP RFC 3659
Wikimedia Foundation . 2010 .