Один из ключевых протоколов интернета FTP (file transfer protocol) в субботу отметил свой 40-летний юбилей. Студент Массачусетского технологического института Абхай Бушан (Abhay Bushan) опубликовал первые спецификации RFC 114 16 апреля 1971 года, задолго до появления HTTP и даже за три года до TCP (RFC 793)!
Простой стандарт для копирования файлов с годами начал поддерживать более сложные модели контроля, совместимости и безопасности (сейчас существуют различные расширения). Удивительно, но и спустя четыре десятилетия FTP нельзя назвать устаревшим и он до сих пор довольно широко используется. Даже с технологиями P2P старичок выдерживает конкуренцию. Чего стоит одна только функция FXP, принятая в 1985 году, с помощью которой по FTP можно копировать напрямую файлы с одного удалённого сервера на другой. Для своего времени это было очень круто.
За сорок лет FTP сумел устоять перед многочисленными конкурентами, в том числе fsp, scp, rsync, uucp, WAIS, gopher и ftpmail, хотя некоторые из них превосходили FTP по ряду параметров и имели лучший интерфейс.
На смену оригинальному RFC 114 пришёл стандарт RFC 765 (июнь 1980), а затем RFC 959 (октябрь 1985), который действует до сих пор с учётом дополнений, которые касаются поддержки IPv6 и SSL/TLS.
Поддержка криптографических протоколов была необходима, чтобы устранить самое слабое место FTP: изначально он не умел шифровать трафик и все данные, включая имена, пароли и команды, передавались открытым текстом и легко перехватывались сниффером. Один из вариантов решения этой проблемы — туннелирование через SSH или использование криптографических протоколов TLS и SSL, что предусмотрено стандартом FTPS (FTP Secure или FTP-SSL), описанным в RFC 2228.
FTP и не думает уходить со сцены и продолжает развиваться. Например, сейчас обсуждаются расширения draft-ietf-ftpext2-hash по использованию хэшей для проверки целостности файлов и draft-peterson-streamlined-ftp-command-extensions с целым списком дополнительных команд, в том числе запрос уменьшенных копий изображений, операции с целыми ветками директорий со вложенными папками, запрос доступного дискового пространства, размера папки и её содержимого.