Протокол FTP (SFTP, FTPS) — что это такое, соединение между клиентом и сервером по ФТП.


Здравствуйте, уважаемые читатели блога сайт. Очередным шагом на пути познания механизма передачи информации в интернете станет изучение FTP, посредством которого можно в том числе работать с любыми файлами на удаленном сервере.

.jpg

Или применить более сложный вариант, ежели используется порт, отличный от 21:

Ftp://login:password@сайт:35/images/file-1.jpg

Однако же, использование веб-обозревателя в таком разрезе позволит лишь просмотреть или скачать интересующие файлы. Для того, чтобы в полной мере задействовать все плюсы FTP, в качестве клиента следует применить специализированный софт наподобие Файлзиллы ():


Чтобы подключиться через уже настроенный клиент FileZilla к удаленному серверу, необходимо ввести название хоста, в качестве которого используется , соответствующий его домену ( и ), имя пользователя, пароль и порт.

Кстати, в статье о Файлзилле дана не только стандартная информация, но и практические советы по устранению ее уязвимости в плане безопасности (несмотря на кучу плюсов, проблемы такого рода у ней есть, впрочем, как и у других программ подобного профиля), поэтому настоятельно рекомендую прочитать этот материал, перейдя по чуть выше предоставленной ссылке.

Но продолжим. Схематически взаимодействие «клиент-сервер» при ФТП-соединении можно наглядно представить следующим образом:


Если расписать этот процесс по пунктам, то получится примерно следующее:

  1. Пользователь активирует клиентское приложение и соединяется с сервером, введя логин и пароль.
  2. Устанавливается управляющее соединение между соответствующими модулями — интерпретаторами протокола со стороны клиента и сервера.
  3. Пользователь посредством клиента посылает команды серверу, определяющие различные параметры FTP-соединения (активный или пассивный режим , порт, вид передачи данных, их тип), а также директивы для действий, которые юзер намерен осуществить (например, удалить, переименовать, закачать файл и т.д.).
  4. После того, как установлены все необходимые параметры, один из участников (к примеру, клиент), являющийся пассивным, становится в режим ожидания открытия соединения на порт, который задан для передачи информации. Затем активный участник открывает соединение и начинает передавать данные по предназначенному для этого каналу.
  5. По завершении передачи это соединение закрывается, но управляющий канал между интерпретаторами остается открытым, вследствие чего пользователь в рамках той же сессии может вновь открыть передачу данных.

Если пользователь является администратором сайта, который расположен на удаленном сервере, то после аутентификации и подключения он в силах совершать любые возможные действия.

Однако, в интернете довольно много бесплатных ФТП-серверов, по сути являющихся библиотеками разного рода файлов, которые предназначены для хранения и скачивания текстовых документов, музыки, фото, видео, дистрибутивов программ и т.п.

В этом случае зарегистрированный пользователь после авторизации имеет весьма ограниченный доступ к определенным каталогам и может осуществлять только лишь некоторые установленные операции с их содержимым (скажем, просматривать и скачивать файлики).

Кроме стандартного соединения с сервером, предусматривающего ввод данных аутентификации, существует понятие анонимного FTP , когда любой пользователь может подключиться к серверу без предоставления персональных данных. Если при этом использовать браузер в качестве клиента, то адрес доступа к файлу может быть упрощен и представлен так:

Ftp://сайт/images/file-1.jpg

На практике при анонимном ФТП обычно в качестве логина для доступа применяется известное в сети слово «anonymous», а в качестве пароля — адрес электронной почты, который, впрочем, в большинстве случаев не проверяется.

Безопасный ФТП (SFTP, FTPS и с использованием SSH)

Этот протокол изначально не задумывался как защищенный, так ка разрабатывался в далеком 1971 году и использовался поначалу лишь в научно-исследовательской сети APRANET, доступ в которую имели только несколько военных объектов и университетов.

Но с развитием Мировой Паутины ее частью стал помянутый APRANET, а, следовательно, и технология FTP перекочевала туда же, поскольку обладала многими преимуществами. Однако, одновременно на несколько порядков возросла опасность несанкционированного доступа.

Поэтому возникла насущная необходимость защиты серверов от различного рода атак. Обычный ФТП не обладает возможностью передачи данных в зашифрованном виде, вследствие чего имена пользователей, пароли, команды и другая информация могут при желании легко и просто быть перехвачены злоумышленниками.

По этой причине были разработаны несколько методов, позволяющих зашифровать передаваемую посредством ФТП информацию. Вкупе все эти способы получили обобщающее и емкое название «Безопасный FTP» . Вот какие разновидности протокола соответствуют этому термину:

1. FTPS (FTP + SSL) — фактически это расширение стандартного протокола передачи файлов, которое обеспечено криптографическим протоколом SSL (Secure Sockets Layer — уровень защищенных сокетов). На сегодняшний день более передовым его аналогом является TLS (Transport Layer Security — защита транспортного уровня). При этом есть два метода предоставления безопасности:

1.1. Неявный является устаревшим и использует стандартный протокол, требующий применения SSL или TLS, которые могут обеспечить шифрование информации. При таком методе обязательно нужно использовать порты, отличные от обычных, что создает неудобства, поскольку нарушается совместимость клиентов и серверов, не поддерживающих FTPS.

1.2. Явный — намного более удобный, так как применяет команды стандартного протокола FTP, но при отправке ответа зашифровывает информацию, что позволяет сохранить совместимость, поскольку в этом случае применяются одни и те же порты как для FTPS, так и для FTP. При этом для шифрования данных клиентом отправляется команда «AUTH TLS» или «AUTH SSL».

2. SFTP (SSH FTP) — протокол прикладного уровня для передачи файлов, который работает поверх безопасного канала, его не следует путать с «Simple File Transfer Protocol», имеющего такую же аббревиатуру. Если FTPS является просто расширением FTP, то SFTP это отдельный и никак не связанный с ФТП протокол, который снабжен SSH (Secure Shell - безопасная оболочка).

Главное, в чем заключается его отличие от стандартного ФТП и ФТПС, это то, что СФТП шифрует абсолютно все команды, имена пользователей, пароли и другую конфиденциальную информацию. Так как это совершенно другая конфигурация, клиенты FTP (FTPS) не могут соединиться с SFTP-сервером.

3. FTP через SSH — производит обычную FTP-сессию через SSH-туннель, то есть этот вариант нельзя путать с SFTP, который является отдельным независимым протоколом. Этот метод нельзя назвать стопроцентно безопасным. Почему?

Дело в том, что если несколько SSH-клиентов устанавливают туннель для управляющего канала, который изначально осуществляется через 21 порт (а такая ситуация практически всегда и наблюдается), то защищенным окажется именно этот канал. При передаче же данных клиентское программное обеспечение откроет новые TCP-соединения, которые будут находиться уже вне воздействия защитной оболочки SSH.

Надеюсь, вы не запутались во всех этих вариантах безопасных протоколов. Для того, чтобы как-то облегчить понимание, позволю себе сделать краткое резюме. Объективно обеспечивающим самую высокую степень защиты является SFTP. Немного уступает ему в надежности явный FTPS, однако он более удобен, поскольку дает возможность пользоваться обычными портами. Какой из них выбрать, зависит от вида задачи, которая перед вами стоит и, конечно, настроек сервера.

Если вы являетесь обладателем сайта, то наверняка задавались вопросом, как зайти на сайт через ftp? Дело в том, что сайты состоят из файлов, которые находятся на удаленном сервере. Доступ к этим файлам можно получить как через вэб-панель хостинга, так и через ftp подключение, что намного удобнее.

Перед тем как подключаться к своему сайту по ftp, вам нужно знать непосредственно сам ftp – сервер и учетные данные у которых есть доступ для подключения к серверу. Более подробно читаем далее…

Для подключения к сайту по протоколу ftp я пользуюсь программой FileZilla. На сегодня, это самая удобная программа для этих целей. Частые обновления программы, исключают возможность злоумышленного подключения к вашему сайту.

Скачайте и установите программу. После установки запустите её

FileZilla – представляет из себя удобный файловый менеджер, в левой части которого находится панель с локальными файлами (на вашем компьютере), а в правой части вы будете видеть файлы на сервере (после подключения).

Для подключения к серверу вам нужно знать учетные данные. Обычно, хостер высылает их на почту, которая указывалась при регистрации. Находим письмо и открываем его. Вот как оно выглядело у меня, когда я регистрировал свой первый сайт

Как видите, есть сам сервер, логин, пароль. Теперь открываем FileZilla, нажимаем на кнопку “Менеджер сайтов”

В открывшемся окошке, жмем “Новый сайт” и вводим наши данные

После внесения данных, нажмите кнопку “ОК”, окошко с настройками закроется. Псоле этого нажмите стрелочку возле кнопки “Менеджер сайтов” и выберите “Новый сайт” (тот который мы только что создали)

Если вы ввели все данные правильно, программа соединит вас с сервером, а в правом окошке появится папка с фалами на сервере

Теперь чтобы скопировать на сайт какой то файл, или наоборот вытащить файл из сайта, вам нужно просто перейдя по папке в правой колонке выбрать нужный каталог и обычным перетаскиванием перетянуть файл в левую колонку (в ней тоже укажите путь в который нужно сохранить файл).

После окончания работ, просто закройте FileZilla. Как видите ничего страшного и непонятного. Все очень легко и просто. Если же у вас остались вопросы, задавайте в комментариях, с удовольствием помогу.

FTP — это протокол, незаменимый для сайтостроителей. При помощи протокола передачи данных FTP сайт быстро можно загрузить нужной информацией. Данный протокол позволяет работать с большими массивами информации и делает все на высокой скорости. Потому вебмастера, которые решают загрузить на хостинг данные сайта именно по FTP-протоколу, делают верный выбор!

И хоть пользоваться FTP легче простого, у большинства начинающих вебмастеров знакомство с сервером и клиентом FTP не задается с первого раза. Потому в данной статье вы узнаете, как можно загрузить свой сайт на хостинг через протокол FTP, как узнать адрес сайта FTP, и затем к нему подключиться и зайти на сервер.

Как загрузить данные на хостинг через FTP

Хостинг вашего сайта — это сервер FTP. Чтобы зайти в его файловую систему и загрузить необходимые дистрибутивы, вам нужен специальный клиент. По сути, это обычная программа, которая позволяет удобно манипулировать файловой системой и работать через разные виды протоколов передачи данных. Самый популярный клиент, который можно скачать бесплатно, — это FileZilla. Большинство хостинг-провайдеров рекомендуют именно эту программу в своих инструкциях работы с сервером.

Итак, установите FileZilla на компьютер, или любой другой клиент. Установка не займет много времени и практически ничем не отличается от типичной инсталляции программ в Windows. Далее вам необходимо открыть верхнее меню «Файл» и выбрать пункт «Менеджер сайтов». Следующим шагом вам предстоит добавить новый сайт в ваш FTP-менеджер. В поле имени хоста пропишите адрес своего сайта по FTP, в строке «Тип входа» отметьте «Запросить пароль», а затем в графе «Пользователь» заполните свои данные для входа: логин и пароль.

Также обязательно нужно настроить параметры передачи данных. Дело в том, что клиент работает по двум соединениям с сервером. Одно соединение необходимо для передачи команд на хостинг, а второе для того, чтобы вы могли загрузить и выгрузить данные с сервера. Вам необходимо выбрать режим для соединения передачи данных: активный или пассивный.

А в пассивном режиме команды отдает сервер, а не клиент, что является логичней. Кроме того, порой в активном режиме сервер не отображает папки.

После определения настроек можно пробовать зайти на хостинг — для этого нажмите кнопку «Соединиться». Потом появится всплывающее окно, куда нужно прописать пароль от аккаунта FTP-сервера. После соединения перед вами откроются две панели управления в FileZilla. С одной стороны будет находиться панель для управления файловой системой компьютера, а с другой — сервера. Вам нужно в той панели, где находится менеджер сервера, отыскать папку WWW. Внутри нее будет размещен домен вашего сайта. Откройте его, сразу удалите index.html и подготовьтесь к передаче данных на сервер с компьютера. Для этого выделите файлы на ПК в другой панели управления, и при помощи правой кнопки мыши найдите пункт «Закачать на сервер».

Через некоторое время указанные файлы будут загружены на хостинг. Узнать об этом несложно — они появятся в панели управления сервером. Учтите, что вы можете использовать клиент FileZilla не только как инструмент для загрузки данных на сервер или компьютер. Через него можно удобно управлять файловой системой: переименовывать, редактировать, просматривать, перемещать, копировать, удалять или создавать файлы. FileZilla куда функциональней, чем стандартный проводник Windows, потому вы сможете выполнять на сервере множество различный операций и действий.

Как определить имя хоста для подключения по FTP

Порой подключиться так просто к серверу не получается, потому что неизвестно имя хоста для подключения. Чтобы зайти на сервер, вам придется немного порыться в информации о хостинге, дабы узнать наименование хоста. Иначе вы не сможете подключить свой компьютер к хостингу и загрузить необходимые данные для него.

Как правило, данные для подключения можно отыскать в панели администрирования в хостинге. Учтите, что данные для входа в админку в хостинг отличаются от данных для подключения к серверу по FTP. Если в личном кабинете вы не нашли никаких данных, тогда отправляйтесь в почтовый ящик, который вы указывали при регистрации у хостинг-провайдера. Вам должно было прийти сообщение, в котором указаны и имя хоста, и наименование пользователя, и пароль для входа. Если это так, то сохраните эти данные где-нибудь в другом месте, а само письмо удалите с компьютера, дабы никто другой его не увидел.

Иногда система борьбы со СПАМом распознает письмо с данными для входа на сервер по FTP, как вирусную рассылку. В таком случае проверьте папку, где храниться СПАМ. Если и эта затея не помогла, то обратитесь в службу поддержки. Обычно, техническая поддержка всегда быстро реагирует на возникшие проблемы клиентов хостинг-провайдера. Ведь вы платите деньги, потому являетесь потенциальной прибылью для хостинга. Потому отношение к вам будет ласковым, обходительным, а реакция на возникшую проблемы быстрой и адекватной. Уже в скором времени вам сообщат, в каком месте хранятся данные для входа на сервер по FTP. Скидывать информацию напрямую не будут, потому что у них нет доступа к таким данным.

Можно ли зайти на сервер FTP при помощи стандартных возможностей Windows

Случается такое, что нет возможности тратить время на загрузку и установку каких-либо посторонних приложений для входа на сервер. В таких ситуациях можно воспользоваться стандартными функциями операционной системы Windows, которых достаточно, чтобы зайти на сервер и загрузить туда файлы сайта.

Вам необходимо открыть проводник и любую папку. Либо можете открыть «Мой компьютер». Вверху вы увидите путь к этому каталогу. Вам нужно его стереть, и вместо данного пути прописать данные для входа на FTP сервер через ftp://. Данные необходимо указывать в четкой последовательности. Сначала следует указать логин для входа на сервер, потом без пробелов через двоеточие прописать пароль, затем обозначить собачку @ и сразу без пробелов прописать имя хоста или его IP-адрес для соединения.

После проделанного сервер FTP откроется прямо у вас на компьютере в проводнике. То есть возникнет ощущение, будто он находится у вас на ПК, а не на удаленном хостинге. Открыв еще одну папку с файлами, вы сможете перетянуть необходимые данные на сервер. Специальными клиентами пользуются потому, что проводник не очень удобный в работе с сервером. Держать две папки открытыми в незакрепленном виде неудобно, в сравнении с продуманным интерфейсом FileZIlla.

Войти на сервер можно и при помощи запроса ftp://Сервер (то есть имя хоста), но потом вам нужно будет ввести логин и пароль для входа. Как видите, все очень просто и ничего сверхъестественного в FTP нет.

FTP (File Transfer Protocol) - один из стандартных протоколов, созданный для TCP/IP и утвержденный в 1971 году. Применяется для загрузки сетевых страниц с частных устройств на серверы хостинга.

Что такое FTP

Формально FTP подразумевает подключение к определенной папке, которая находится на сервере, посредством Интернет. Несмотря на внушительный возраст, этот протокол до сих пор используется для передачи файлов, доступа к удаленным хостам и распространения программного обеспечения.

В отличие от HTTP, FTP основан на сессиях работы, поддерживает аутентификацию пользователей и текстовый режим, позволяет выполнять операции над файловой системой. Его главная особенность заключается в том, что с ним возможно множественное (в частности, двоичное) подключение. Один из каналов является управляющим - через него поступают команды серверу и возвращаются ответы. Остальные используются непосредственно для передачи данных. При этом FTP позволяет сокращать расходы трафика и время, затраченное на пересылку больших файлов.

Функции FTP

Для работы с протоколом используют стандартные UNIX-команды. С их полным перечнем можно ознакомиться, набрав в специальной строке «help» или «?». Наиболее часто используются следующие команды:

  • open - устанавливает связь с FTP-сайтом. Применяется при обращении к разным серверам во время одного сеанса работы. Требует предварительного закрытия предыдущей FTP-площадки командой close ;
  • user - используется для повторного ввода имени и пароля пользователя для аутентификации. Функция необходима в тех случаях, когда удаленная машина допускает пользователей с определенными параметрами;
  • bye или quit - используется параллельно с close , закрывает все связи и завершает выполнение программы;
  • remotehelp - открывает справочную информацию по командам, которые поддерживает удаленный FTP-сервер.

При работе с функциями необходимо придерживаться следующих правил:

  • использовать символ «/» для разделения каталогов;
  • следить за употреблением строчных и прописных букв (важен регистр);
  • использовать префиксы, которые начинаются с точки (опционально).

Команды и чаще всего вспомогательные программы для FTP-соединений позволяют загружать на сервер файлы с компьютера и в обратном направлении, а также менять права доступа к отдельным объектам.

Программы для FTP-соединения

Специализированное ПО используется для эффективной и наглядной работы с FTP-серверами. Большинство приложений ориентировано не только на профессионалов, но и на новичков, которые легко справятся с интуитивно понятным интерфейсом. Рассмотрим самые популярные программы, выполняющие функции FTP-клиентов.

Far Manager

Far Manager - пример консольного файлового менеджера, разработанного под ОС Windows российским программистом Евгением Рошалом. Программа отличается узнаваемым двухоконным интерфейсом и стандартной сине-белой цветовой схемой. Управление осуществляется через систему команд, вводимых с клавиатуры. При работе с FTP поддерживается доступ через различные типы прокси-серверов, выполнение поиска и замены символов во множестве файлов срабатывает автоматическая докачка. Является свободно распространяемым ПО.

Total Commander

Total Commander имеет собственный FTP-клиент, который позволяет выполнять все стандартные операции с файлами и папками: копировать, вырезать, создавать, переименовывать, удалять, просматривать, редактировать. Следует учесть, что доступы к FTP сохраняются в клиенте автоматически и хранятся незашифрованными. Total Commander является свободно распространяемым ПО.

FileZilla

FileZilla - популярный FTP-клиент с открытым кодом и мультиязычным интерфейсом. Разработан для ОС Windows, Linux и Mac OS. Поддерживает FTP через SSL/TLS (он же FTPS), IPv6, IDN. Работает с нелатинскими доменными зонами, способен передавать файлы большого объема (от 4 ГБ), позволяет настраивать ограничения по скорости скачивания и передачи. Реализована поддержка Drag-and-drop, удаленное редактирование файлов, работа с вкладками и очередью загрузки. Является свободно распространяемым ПО.

WinSCP - удобный графический клиент для работы с FTP. Предназначен для использования в среде ОС Windows. Поддерживает копирование файлов в защищенном режиме, автоматизацию при помощи скриптов, интеграцию с Pageant, а также выделяется узнаваемым интерфейсом в стиле Norton Commander. В клиенте предусмотрена возможность сохранения настроек соединения, синхронизация папок по настраиваемым алгоритмам, есть встроенный текстовый редактор. Является свободно распространяемым ПО.

FireFTP - не отдельное приложение, а расширение для популярного браузера Mozilla FireFox. Предоставляет доступ к FTP-серверу в отдельной вкладке. После инсталляции расширение можно найти в панели «Инструменты». Клиент работает в двухоконном режиме и позволяет выполнять стандартные операции: перемещение, добавление, переименование, удаление. Реализована поддержка нескольких учетных записей, шифрование соединений, изменение прав доступа к файлам и их редактирование без предварительной загрузки на ПК. Является свободно распространяемым ПО.

Конкретный клиент для работы можно выбрать исходя из того, для чего нужен FTP и каковы задачи работы на сервере.

Как подключиться к хостингу через FTP

Выберите подходящий клиент и установите его на свой ПК. Далее используйте для входа на хостинг следующую информацию:

  • логин и пароль;
  • хост или адрес сервера;
  • порт для подключения (необходимо указывать «21»).

Дополнительно может потребоваться указание типа сервера и способа входа. Далее необходимо нажать кнопку для подключения и начать работу с файлами и папками. Чтобы выбрать, чем открыть FTP, обратитесь к предыдущему пункту.

Эта статья - попытка описать основные различия между известными протоколами обмена данными FTP и HTTP.

Мы активно используем оба протокола в нашем основном продукте - уже много лет, и за это время столкнулись со многими заблуждениями и непониманием работы этих двух фундаментальных протоколов обмена файлами в Интернете.

Если вы увидите какие-то ошибки или неточности, напишите об этом .

Дисклэймер : в английском языке есть два термина: “upload” и “download”. В русском нет хороших аналогов, поэтому для файлов, которые мы отдаём с клиента на сервер, применяем слово “заливать” (upload), а для файлов, которые забираем на клиент с сервера - используем слово “скачивать” (“download”).

Оба протокола используются для скачивания и заливки файлов в Интернете и локальных сетях. Для текста и бинарных данных. Оба протокола работают поверх TCP/IP. Но между ними есть несколько серьёзных различий.

Скорость передачи

Наверное, самый распространённый вопрос: что быстрее для передачи файлов, FTP или HTTP?

Что делает FTP быстрым?

  • в передаваемом потоке нет мета описаний, только чистые бинарные данные. Справочные данные идут в отдельном соединении;
  • нет накладных расходов по перекодировке передаваемых данных.

Что делает HTTP быстрым?

  • повторное использование существующих постоянных соединений повышает производительность TCP, не тратится время на создание новых соединений;
  • конвейерная обработка позволяет быстрее запрашивать несколько файлов с одного и того же сервера;
  • (автоматическое) сжатие трафика уменьшает объём передаваемых данных, это может увеличить скорость передачи при условии быстрых клиента и сервера и медленного канала связи;
  • нет управляющих команд в потоке передачи данных, это экономит время обработки.

В конечном итоге чистый результат, конечно, зависит от конкретных деталей, но я бы сказал, что для одиночных статических файлов вы не сможете увидеть ощутимую разницу.

Для одиночного файла небольшого размера и медленного соединения FTP покажет себя лучше. При получении нескольких файлов подряд (особенно небольших размеров) HTTP обычно показывает лучший результат.

Возраст

Заливка

Оба протокола умеют это делать. У FTP есть команда "append", HTTP исповедует подход "вот вам данные, а вы сами разбирайтесь, что с ними делать", то есть, никаких команд по управлению заливаемыми файлами нет.

Следует сказать, что существует протокол WebDAV, построенный поверх HTTP, который позволяет работать с файлами в традиционной манере, будто они находятся на вашем локальном устройстве.

Форматы ASCII, EBCDIC или бинарный

FTP имеет представление о формате файла, поэтому может передавать данные как в ASCII, так и в двоичном виде (raw bytes). HTTP же всегда отправляет файлы в двоичном виде. Таким образом, FTP умеет преобразовывать данные "на лету", если они передаются между системами с разными архитектурами (Windows/Linux/мэйнфрэймы).

Например, если отправитель использует одну схему для кодирования конца строки ("EOL" - End-Of-Line), а получатель - другую, то FTP сделает так, что они друг друга поймут. Unix использует только символ NL (newLine x0A), а MS Windows два символа подряд, CR и LF (CarriageReturn и LineFeed - x0D0A). EBCDIC перекодировки используются на старых мэйнфреймах.

HTTP, в противовес FTP, предоставляет метаданные для файлов, "Content-Type". Таким образом, метаданные могут использоваться клиентами для интерпретации содержимого.

Заголовки

Передача файлов через HTTP всегда включает в себя набор заголовков, в которых находятся метаданные. FTP никогда не передаёт никаких заголовков. В связи с этим, при передаче большого количества мелких файлов, их заголовки будут составлять значительную часть трафика. В заголовках HTTP находится информация о дате и времени модификации файлов, кодировке символов, имени сервера и его версии и т.п.

Пайплайны или конвейеры

HTTP поддерживает конвейерную обработку данных. Это означает, что клиент может запросить новую передачу файлов до того, как закончится предыдущая, что даёт возможность убрать задержки при закачке нескольких документов подряд. TCP пакеты, таким образом, будут оптимизированы для максимальной скорости передачи.

Что-то подобное, хотя и не совсем похожее, есть и в FTP. Это поддержка множественных запросов для параллельного получения файлов в одном управляющем соединении. Конечно, для этого нужно использовать новые TCP соединения для передачи бинарных данных, по одному для каждого файла, однако, далеко не все FTP серверы поддерживают такие возможности.

FTP команды/ответы

FTP клиент может отправлять на сервер множество команд и получать на них ответы от сервера. Даже передача одного файла включает в себя целую серию таких простых команд. Это, конечно, негативно сказывается на скорости, потому что каждая команда требует обработки на двух сторонах: клиенте и сервере. Из-за этого возникают задержки. HTTP передачи данных – это преимущественно, только один запрос и один ответ (для каждого файла). Получение одного файла через FTP иногда может занимать до десятка команд и ответов между клиентом и сервером.

Два соединения

Одна из самых больших проблем для FTP в реальной работе - это использование двух соединений. Первое - для отправки управляющих команд, а второе - для передачи содержимого файла. Для этой цели он каждый раз открывает отдельный поток TCP. Если вы передаёте 100 файлов, по очереди будут открыты и закрыты 100 TCP соединений.

Файрволы и NAT

FTP использует два соединения: управляющее и для передачи данных. Соединение для данных может идти в двух направлениях, и использовать динамические номера портов. Это добавляет головной боли администраторам и зачастую требует от файрволов понимания специфики функционирования FTP на уровне сетевого протокола, чтобы обеспечить нормальную работу.

Это также означает, что если обе стороны соединения находятся за NAT , вы, скорее всего, не сможете пользоваться FTP.

Кроме того, NAT убивает незанятые соединения, через которые длительное время не было передачи данных. Поэтому, во время долгих передач по FTP на медленных каналах связи мы оказываемся в ситуации, когда соединение оказывается разорванным, потому что NAT решил, что оно уже неактивно.

Чтобы такого не происходило, приходится время от времени отправлять фиктивные пустые команды, чтобы соединение поддерживалось в "живом" состоянии. Результат - небольшой, но лишний трафик.

Активный и пассивный режимы

FTP открывает второе соединение в активном или пассивном режиме. Если работает активный режим (соединение инициирует сервер) - будут проблемы с соединением в сложных сетях, потому что такое соединение невозможно через NAT. Поэтому, в большинстве случаев используется пассивный режим (passive mode), когда соединение происходит только со стороны клиента.

Зашифрованные управляющие соединения

Поскольку брандмауэры должны уметь "разбирать по косточкам" управляющее соединение FTP, чтобы дать возможность корректно открывать второе соединение для передачи бинарных данных, существует огромная проблема с зашифрованными соединениями (FTP-SSL или FTPS). Как только управляющее соединение становится зашифрованным, файрвол уже не в состоянии интерпретировать его команды, чтобы понимать, когда и как следует разрешить второе соединение между клиентом и сервером для передачи бинарных данных.

К тому же, разработка самого стандарта FTPS заняла слишком много времени, что привело к одновременному существованию нескольких гибридных версий, плохо совместимых между собой.

Схемы авторизации

У FTP и HTTP есть несколько документированных методов аутентификации. Оба протокола предлагают базовую аутентификацию обычным текстом (логин/пароль). Однако, для HTTP существуют несколько часто используемых методов проверки, которые не отправляют пароль в виде обычного текста, в отличие от FTP.

Скачивание

Оба протокола умеют это делать. У обоих протоколов были проблемы при скачивании файлов с размером, больше чем 2 гигабайта, но это уже в прошлом. В современных клиентах и серверах, на современных операционных системах этой проблемы больше нет.

Диапазоны/возобновление скачивания

FTP поддерживает скачивание и закачку, а также восстановление разорванных соединений и продолжение передачи в обеих направлениях. HTTP может похвастаться только восстановлением при скачивании, а при заливке файлов на сервер восстановление оборванного соединения и продолжение заливки часто оказываются невозможными.

В противовес FTP, HTTP поддерживает более продвинутые диапазоны для скачивания.

Также у FTP есть проблемы при возобновлении соединений при заливке или скачивании файлов, начиная с сегмента, большего, чем 2 GB.

Постоянные соединения

HTTP клиент может держать одно постоянное соединение с сервером для любого количества передач файлов.

Во избежание закрытия соединения, когда у вас нет возможности сообщить удалённой стороне о том, что передача файла уже завершена, в HTTP было введено так называемое кодирование передаваемых блоков (чанков) с данными.

Во время передачи отправляющая сторона отдаёт поток данных блоками (размер блока + сами данные) до тех пор, пока они не закончатся, а потом передаёт блок с нулевой длиной, чтобы просигнализировать о конце файла.

Помимо того, что соединение не нужно закрывать и открывать заново для новых файлов, ещё одним очевидным плюсом такой схемы есть возможность обнаружения преждевременных аварийных отключений в процессе передачи.

Сжатие

HTTP предоставляет серверу и клиенту возможность договориться и выбрать один из алгоритмов сжатия. Алгоритм gzip является, пожалуй, наиболее широко используемым. Есть более современный brotli , но он ещё не полностью поддерживается разными серверами и клиентами, хотя даёт лучшее сжатие (до +20%), особенно на текстовых html, javascript и css файлах.

FTP предоставляет официальное встроенное RLE сжатие, однако оно обычно неэффективно для большинства бинарных и текстовых данных. Есть много дополнительных "хакерских" реализаций для сжатия FTP трафика, но ни одна из них не стала официальной и широко используемой.

FXP

FTP поддерживает технологию для передачи данных с одного сервера на другой, как будто бы передачу ведет непосредственно сам клиент. Однако на большинстве серверов эта возможность закрыта из-за проблем с безопасностью, так как протокол FXP был недостаточно хорошо спроектирован.

IPv6

И HTTP, и FTP отлично работают с IPv6, однако изначально в оригинальной спецификации протокола FTP не было поддержки IPv6, и из-за этого множество серверов до сих пор не имеют нужных команд для его включения. Это также касается межсетевых экранов между клиентами и серверами, которые должны понимать FTP.

Виртуальный хостинг на основе имени

Используя HTTP 1.1, вы легко можете разместить множество сайтов на одном сервере, и все они будут различаться по их именам.

В FTP вы вообще не можете использовать виртуальный хостинг на основе имён, пока команда HOST не будет реализована на сервере, с которым вы соединены. Это свежая спецификация, и она ещё мало распространена.

Просмотр каталогов

В FTP можно получить список файлов из папки на удалённом сервере, не скачивая их, в то время как в HTTP нет такой возможности.

Однако, в силу того, что авторы спецификации FTP жили в разное время, команды для получения списка файлов в каталоге (LIST и NLST) не имеют чётко описанного формата вывода. Поэтому авторам FTP клиентов приходится заниматься написание синтаксических анализаторов текста, чтобы попытаться правильно угадать, что за данные им передаёт сервер. Более поздние спецификации (RFC3659) предусматривают новые команды типа MLSD, но они ещё не получили широкого распространения и плохо поддерживаются разными серверами и клиентами.

Списки файлов в каталогах через HTTP обычно передаются текстом в HTML формате, либо с помощью WebDAV, который работает поверх HTTP.

Поддержка прокси

Одно из серьёзных преимуществ HTTP перед FTP - это поддержка прокси, встроенная в него с самого начала. Технология отлажена и очень хорошо работает. Многие протоколы могут быть инкапсулированы внутрь HTTP, как в своеобразный "конверт" для прохождения прокси-серверов.

FTP всегда использовался с прокси серверами, но это никогда не было стандартизировано, и всегда требовало специальных подходов в каждом конкретном случае.







2024 © gtavrl.ru.