• FTP (англ. File Transfer Protocol — протокол передачи файлов) — протокол, предназначенный для передачи файлов в компьютерных сетях. FTP позволяет подключаться к серверам FTP, просматривать содержимое каталогов и загружать файлы с сервера или на сервер; кроме того, возможен режим передачи файлов между серверами.Протокол FTP относится к протоколам прикладного уровня и для передачи данных использует транспортный протокол TCP. Команды и данные, в отличие от большинства других протоколов передаются по разным портам. Порт 20 используется для передачи данных, порт 21 для передачи команд. В случае, если передача файла была прервана по каким-либо причинам, протокол предусматривает средства для докачки файла, что бывает очень удобно при передаче больших файлов. Протокол не шифруется, при аутентификации передаются логин и пароль открытым текстом.
модель при соедингении сервера и клиента
1. Сервер FTP использует в качестве управляющего соединение на TCP порт 21, который всегда находится в состоянии ожидания соединения со стороны пользователя FTP.
2. Интерпретатор протокола пользователя” с модулем сервера — “Интерпретатор протокола сервера”, пользователь (клиент) может отправлять на сервер команды.
3. После того как согласованы все параметры канала передачи данных, один из участников соединения, который является пассивным (Прогр. пер. дан.польз.), становится в режим ожидания открытия соединения на заданный для передачи данных порт. После этого активный модуль (Пр. пер. дан. серв) открывает соединение и начинает передачу данных.
4. После окончания передачи данных, соединение между Пр. пер. дан. серв и Прогр. пер. дан.польз закрывается, но управляющее соединение “Интерпретатора протокола сервера” и “Интерпретатора протокола пользователя” остается открытым. Пользователь, не закрывая сессии FTP, может еще раз открыть канал передачи данных.
Клиент должен различать тип файла, который должен быть передан, структуру данных и режим передачи.
Модель FTP
Как уже говорилось, протокол передачи файлов подобен SMTP и РОРЗ - в нем используются строки ASCII в качестве команд и кодов ответа. Однако в отличие от всех предыдущих протоколов, обсуждаемых в этой книге, FTP использует два TCP-соединения для выполнения операций по передаче файлов. В FTP два TCP-соединения определяются как управляющее соединение и соединение данных. Управляющее соединение подобно другим TCP-соединениям, которые вы создавали в предыдущих главах. Другими словами, управляющее соединение -типичное соединение клиент-сервер. Сервер FTP обеспечивает пассивное открытие на официальном порту (порт протокола 21) и ждет запроса на установление соединения от клиента. Клиент FTP, в свою очередь, входит в контакт с FTP-сервером на официальном порту протокола и устанавливает с ним TCP-соединение (как обсуждалось в главе 5). Управляющее соединение остается активным на протяжении всего FTP-сеанса. Клиент и сервер обмениваются строками команд NVT ASCII и кодами ответа через управляющее соединение. FTP создает отдельное соединение данных для каждой операции по передаче файла (а также в некоторых других случаях). На рис. 16.1 изображена типичная конфигурация для операций по передаче файлов.
Основа операции - интерпретаторы протокола (PI) и процессы передачи данных (DTP). Как видим, клиент и сервер имеют свой собственный интерпретатор протокола и процесс передачи данных. Процессы передачи данных устанавливают и управляют соединением данных. Интерпретаторы протокола интерпретируют FTP-команды и общаются через управляющее соединение которое устанавливается в начале FTP-сеанса интерфейсом протокола пользователя.
Интерфейс пользователя ограждает пользователя от непосредственного общения с командами и ответами FTP. Программы Ftp вообще бывают двух видов:
полноэкранные (ориентированные на работу с меню) или строчные (ориентированные на работу с командной строкой). Большинство UNIX-программ Ftp — строчные.
Другими словами, пользователь UNIX выполняет программу Ftp (обычно и называемую Ftp) и вводит команды в строке приглашения FTP, подобном приглашению DOS на персональном компьютере. Однако в большинстве случаев команды, напечатанные в командной строке, фактически не являются командами FTP. Вместо этого программа интерфейса пользователя грамматически разбирает команду, введенную пользователем, и переводит запросы в команды FTP. Например, пользователь мог бы напечатать “get” вместо “RETR” и “put” вместо “STOR”. Большинство Windows-программ Ftp ориентировано на меню и диалоговые окна. Во многих случаях интерфейс пользователя в Windows-программе Ftp будет представлен окном диалога с кнопками команд, окнами-списками и полосами прокрутки, как это показано на рис. 16.2.
Перед тем как передавать по каналу для передачи данных, мы подготавливаем передачу по каналу для сигналов управления. Проблема разнородности решается с помощью определения трех атрибутов: тип, структура данных и режим передачи
1. ASCII -файл. Это формат, используемый по умолчанию для трансляции текстовых файлов. Каждый символ закодирован с использованием NVT ASCII-символов. Передатчик преобразует файл из собственного представления в NVT ASCII, и приемник преобразует символы NVT ASCII в собственное представление.
2. EBCDIC -файл. Если оба конца соединения используют кодирование EBCDIC, файл может быть передан с использованием EBCDIC-кодирования.
3. Image -файл. Этот файл по умолчанию — формат для передачи двоичных файлов. Файл посылается как непрерывный поток бит без всякой интерпретации и кодирования. Он в большинстве случаев используется для передачи двоичных файлов, таких как компилированная программа.
интерпретаций структуры данных:
· Файловая структура (по умолчанию). Этот файл не имеет структуры. Это непрерывный поток данных.
· Структура записи. Этот файл, разделенный внутри записи Он может быть использован только с текстовым файлом.
· Страничная структура. Это файл, разделенный на страницы, каждая страница имеет номер и заголовок страницы. Страницы могут быть накоплены или достигнуты с помощью произвольного или последовательного доступа.
режимы передачи:
1) Поточный режим. Это режим по умолчанию. Данные доставляются от FTP к TCP как непрерывный поток данных. TCP отвечает за разбиение данных на сегменты соответствующего размера. Если данные — просто поток байтов (файловая структура), то не нужно никакого признака окончания файла. Окончание файла в этом случае — это разъединение соединения данных отправителем. Если данные разделены на записи (структура по записи), каждая запись будет иметь однобайтный символ окончания записи (EOR — end of record).
2) Блочный режим. Данные могут быть доставлены от FTP и TCP в блоках. В этом случае блоку предшествует трехбайтный заголовок. Первый байт называется дескриптор блока, следующие два байта определяют размер блока в байтах.
3)Сжатый режим. Если файл большой, данные могут быть сжаты. Метод сжатия использует нормальное кодирование длины. В этом методе последовательное повторное появление блока данных заменяется одним вхождением и числом повторений. В тексте файла это обычно пробел (пустоты). В двоичном файле нулевые символы обычно сжимаются.