Давайте, рассмотрим управление FTP соединением на примере простой FTP сессии, в течение которой просматривается список файлов на сервере. Клиент запущен на хосте svr4 с флагом -d (отладка). При этом печатаются команды и отклики, которыми происходит обмен по управляющему соединению. Все строки, начинающиеся с --->, отправляются клиентом серверу, а строки, которые начинаются с 3-циферных чисел, это отклики от сервера. Клиенту выдается приглашение в виде ftp>.
svr4 % ftp -d bsdi опция -d для отладочного вывода
Connected to bsdi. клиент осуществляет активное открытие управляющего соединения
220 bsdi FTP server (Version 5.60) ready. сервер отвечает, что он готов
Name (bsdi:rstevens): клиент спрашивает имя пользователя
---> USER rstevens вводим RETURN, поэтому используется имя по умолчанию
331 Password required for rstevens.
Password: вводим наш пароль; он не отображается эхом
---> PASS XXXXXXX клиент передает пароль в виде открытого текста
230 User rstevens logged in.
ftp> dir hello.c спрашиваем, находится ли в директории указанный файл
---> PORT 140,252,13,34,4,150 см. рисунок 27.4
200 PORT command successful.
---> LIST hello.c
150 Opening ASCII mode data connection for /bin/ls.
-rw-r--r-- 1 rstevens staff 38 Jul 17 12:47 hello.c
226 Transfer complete.
remote: hello.c вывод от клиента
56 bytes received in 0.03 seconds (1.8 Kbytes/s)
ftp> quit мы закончили
---> QUIT
221 Goodbye.
Когда FTP клиент просит нас ввести имя пользователя, он выводит имя по умолчанию (наше имя на хосте клиента). Когда мы нажимаем клавишу RETURN, отправляется это имя по умолчанию.
Когда мы спрашиваем, присутствует ли указанный файл в директории, устанавливается соединение данных. Этот пример является продолжением процедуры, показанной на рисунках 27.4 и 27.5. Клиент спрашивает свой TCP модуль о динамически назначаемом номере порта для своего конца соединения данных и отправляет этот номер порта (1174) серверу в виде команды PORT. Мы также видим, что одна команда, введенная пользователем (dir) генерирует две FTP команды (PORT и LIST).
На рисунке 27.6 приведена временная диаграмма, иллюстрирующая обмен пакетами по управляющему соединению. (Мы удалили все, что связано с установлением и прерыванием управляющего соединения, вместе со всеми объявлениями размера окна.) На этом рисунке показано как открывается соединение данных, используется и затем закрывается.