Процедуры, диагностики и безопасность в Интернет

Процедуры Интернет (Telnet/ssh, FTP/SFTP, ping, traceroute)

Разбить на страницы
Показывать лекцию целиком

Собственно ради реализации различных процедур через сеть и создавался Интернет. Данный раздел отражает наиболее динамично развивающуюся часть Интернет-технологий. Одни виды услуг устаревают и выходят из употребления (Gopher, WAIS, MOSAIC, Archie), другие появляются вновь (например, IP-телефония, поисковые машины, электронная коммерция). В последнее время несравненно большее внимание стали уделять сетевой безопасности и диагностическим аспектам работы с сетями. Безопасность вышла на первые позиции из-за внедрения Интернет в область финансов и бизнеса. Последнее время активно развиваются технология мультимедиа (интеграция с кабельным телевидением), сфера развлечений (игровые серверы, виртуальная реальность) и информационно-поисковые системы на основе техники WWW.

Удаленный доступ (Telnet/ssh)

TELNET был первой реализованной процедурой, он позволяет пользователю установить TCP-соединение с сервером и затем передавать коды нажатия клавиш так, как если бы работа проводилась на консоли сервера, а также передавать клиенту текстовый отклик сервера. TELNET (RFC-854) служит для выполнения удаленного доступа к вычислительным ресурсам и базам данных. Для входа в ЭВМ обычно нужна аутентификация (ввод имени-идентификатора пользователя и его слова-пароля). TELNET предлагает три услуги:

  • определяет сетевой виртуальный терминал ( NVT — network virtual terminal), который обеспечивает стандартный интерфейс к удаленной системе;
  • включает механизм, который позволяет клиенту и серверу согласовать опции обмена;
  • обеспечивает симметрию соединения, допуская любую программу (например, FTP ) выступать в качестве клиента
  • Протокол TELNET позволяет обслуживающей машине рассматривать все удаленные терминалы как стандартные "сетевые виртуальные терминалы" строчного типа, работающие в кодах ASCII, а также обеспечивает возможность согласования более сложных функций (например, локальный или удаленный эхо-контроль, страничный режим, высота и ширина экрана и т. д.). На прикладном уровне над TELNET находится либо программа поддержки реального терминала, либо прикладной процесс в обслуживающей машине, к которому осуществляется доступ с терминала. Формат NVT достаточно прост. Для данных используются 7-битовые ASCII коды. 8-битовые же октеты зарезервированы для командных последовательностей.

    Если команда TELNET вводится без аргументов, ЭВМ переходит в командный режим, напечатав приглашение telnet. В этом режиме она воспринимает и исполняет команды, описанные ниже.

    При вводе TELNET с аргументами программа осуществит связь вашей ЭВМ с удаленным компьютером, имя или адрес которого вы ввели в качестве одного из аргументов.

    После того как связь установлена, начинаются переговоры об используемых опциях (см. табл. 1.1). Каждая из договаривающихся сторон может послать другой один из четырех запросов will, do, wont и dont (см табл. 1.4).

    Коды опций в Telnet
    Код опции в Telnet Описание Номер RFC
    0 Двоичный обмен 856
    1 Эхо 857
    2 Повторное соединение NIC 15391
    3 Подавление буферизации ввода 858
    4 Диалог о размере сообщения NIC 15393
    5 Статус 859
    6 Временная метка 860
    7 Удаленный доступ и отклик 726
    8 Длина выходной строки nic 20196
    9 Размер выходной страницы nic 20197
    10 Режим вывода символов <возврат каретки> 652
    11 Вывод горизонтальной табуляции 653
    12 Установка положения табуляции при выводе 654
    13 Режим вывода команды смены страницы 655
    14 Вывод вертикальной табуляции 656
    15 Определяет положение вертикальной табуляции 657
    16 Режим вывода символа <перевод строки> 658
    17 Расширенный набор кодов ASCII 698
    18 Возврат (logout) 727
    19 Байт-макро 735
    20 Терминал ввода данных 732
    21 Supdup 736
    22 Supdup-вывод 747
    23 Место отправления 779
    24 Тип терминала 930
    25 Конец записи 885
    26 Tacacs-идентификация пользователя 927
    27 Пометка вывода 933
    28 Код положения терминала 946
    29 Режим 3270 1041
    30 X.3 PAD 1053
    31 Размер окна 1073

    Далее TELNET переходит в режим ввода. В этом режиме любой введенный текст пересылается удаленной ЭВМ. Ввод может производиться посимвольно или построчно. При посимвольном режиме каждый введенный символ пересылается немедленно; при построчном режиме отклик на каждое нажатие клавиши производится локально, а пересылка выполняется лишь при нажатии клавиши <Enter>. Некоторые опции требуют дополнительных данных, такая информация может быть получена с помощью субопций (RFC-1091). При этом клиент посылает трехбайтовую последовательность IAC WILL 24, где 24 — код-идентификатор терминала. Получатель может откликнуться последовательностью IAC DO 24, если все в порядке. Сервер, в свою очередь, посылает последовательность IAC SB 24 1 IAC SE, запрашивая тип терминала клиента. Здесь код 24 означает, что это субопция для опции типа терминала (см. табл. 1.1), а следующая 1 является командой "пришлите код вашего терминала". Клиент в свою очередь может откликнуться, послав последовательность IAC SB 24 0 I B M P C IAC SE. Здесь байт 0 означает "мой терминал имеет тип". Список кодов терминалов содержится в RFC-1700.

    Когда связь с удаленной ЭВМ уже осуществлена, переход в командный режим может быть выполнен с помощью нажатия '^]' (escape). В этом режиме доступны команды:

    open имя_ЭВМ [ порт ]open открывает связь с ЭВМ, имя которой указано в обращении. Если номер порта явно не указан, telnet пытается использовать для связи с сервером номер порта по умолчанию. Вместо имени ЭВМ-сервера может использоваться ее IP-адрес
    display [ аргумент ... ]Отображает все или часть набора параметров telnet (см. описание команды send)
    CloseЗакрывает сессию telnet и возвращает систему в командный режим
    QuitЗакрывает любую сессию telnet
    mode typeУправляет режимом ввода ("построчный" или "посимвольный"). Удаленной машине посылается запрос на переход в соответствующий режим. Если она готова (способна) работать в запрошенном режиме, будет произведено соответствующее переключение
    statusОтображает текущий статус telnet. В перечень информации входит имя удаленной ЭВМ и действующий режим обмена
    ? [ команда ]Выдает справочную информацию о команде, название которой приведено в качестве аргумента
    send argumentsПосылает удаленной ЭВМ один или несколько символьных аргументов. В качестве аргументов могут использоваться: escape, synch, brk, ip, ao, ayt, ecel, ga и др. Смотри таблицу 1.3.
    escapeПосылает escape-символ (например, '^]')
    SYNCHПосылает synch-последовательность. Эта последовательность позволяет аннулировать все, что было до этого напечатано, но еще не считано. Эта последовательность посылается как срочная (важная) TCP-информация (может не сработать, если удаленной системой является 4.2 BSD). Если последовательность не сработала, на терминал будет послан символ "r"
    brkПосылает Break-последовательность при нажатии клавиши Break (Pause)
    set argument valueПрисваивает любому числу переменных telnet новые значения. Специальное значение off выключает функцию, соответствующую данной переменной

    Значения переменных можно узнать с помощью команды display. Такими переменными могут быть: escape, interrupt, quit, flushoutput, erase, kill, eof, echo. Последняя переменная (в исходном состоянии '^E') в построчном режиме осуществляет переключение между локальным эхо на ввод символа (режим по умолчанию) и подавлением эхо, например, при вводе пароля. Переменные процедуры telnet представлены в таблице 1.2.

    Практически стандарт TELNET описан во многих RFC-документах, которые определяют различные варианты реализации этой команды. Список опций команды telnet приведен в таблице 1.1.

    Переменные telnet
    Название переменной Назначение
    Echo Определяет, будет ли отображаться на экране то, что вы вводите с клавиатуры. При значении off ввод не отображается, например, при вводе пароля
    Escape Задает символ, который используется в качестве escape. Появление этого символа во входном потоке заставляет его и последующие символы интерпретироваться в ЭВМ, где функционирует процесс telnet, как команда
    Interrupt Специфицирует символ прерывания процесса. Ввод его приводит к остановке процесса пользователя, работающего на удаленной ЭВМ
    Quit Специфицирует символ, который используется пользователем на его клавиатуре для выполнения команд brake или attention
    Flushoutput Определяет символ, который служит для прерывания процедуры вывода на удаленной ЭВМ
    EOF Специфицирует символ, который используется для обозначения конца файла на удаленной машине
    Последовательности символов, используемые совместно с командой send
    Последовательность символов Назначение
    ?Отображает справочную информацию о команде send
    escapeПосылает символ escape (без прерывания посылки символов для Telnet )
    ipПосылает протокольную последовательность telnet. Удаленная машина должна прервать процесс, запущенный для вас
    ecПосылает протокольную EC-последовательность telnet. Удаленная ЭВМ должна стереть последний напечатанный вами символ
    elПосылает протокольную EL-последовательность TELNET. Удаленная ЭВМ должна стереть последнюю напечатанную вами строку
    aoПосылает протокольную AO-последовательность TELNET. Удаленная ЭВМ должна направить весь вывод на ваш терминал
    brkПосылает протокольную BRK-последовательность TELNET. Удаленная ЭВМ должна обеспечить отклик
    aytПосылает протокольную AYT-последовательность TELNET (Are You There). Удаленная ЭВМ должна обеспечить отклик

    В таблице 1.4 представлены наименования и коды команд Telnet, которые используются как клиентом, так и сервером в сочетании с префиксным байтом 0xff (IAC — интерпретировать как команду). Если нужно послать код данных, равный 255, посылается два байта с кодами 255.

    Коды команд TELNET
    Имя субкоманды TELNET Код Описание
    EOF 236 Признак конца файла
    SUSP 237 Отложить исполнение текущего процесса
    ABORT 238 Прервать процесс
    EOR 239 Конец записи
    NOP 241 Никаких действий
    DM(Метка данных) 242 Блок данных процедуры SYNCH
    BRK (Остановка) 243 BRK-символ (break)
    IP(Прерывание процесса) 244 IP-функция
    io (Прерывание вывода) 245 AO-функция
    AYT (Вы здесь?) 246 AYT-функция
    EC (Стереть символ) 247 EC-функция
    EL (Стереть строку) 248 EL-функция
    GA (Продолжайте) 249 GA-функция
    SB 250 Начало субопции
    SE 240 Завершение согласования параметров (конец субопции)
    Will ("будет") 251 Начало исполнения (опционно)
    Won't (не будет) 252 Отказ исполнения или продолжения выполнения (опционно)
    Do ("исполнить") 253 Индицирует запрос, который другая система исполняет (опционно)
    Don't ("Нет") 254 Требует, чтобы другая система остановила исполнение (опционно)
    IAC 255 Интерпретируется как начало командной последовательности

    Операция "прерывание процесса" (IP) позволяет прервать, удалить или завершить процесс пользователя (например, выйти из бесконечного цикла).

    Процедура "прерывание вывода" (AO) позволяет процессу пользователя продолжаться, но вывод на его рабочую станцию прерывается, при этом очищается буфер от уже записанной, но не отображенной информации.

    Запрос "Вы здесь?" (AYT) удобен, когда необходимо выяснить, выполняется ли пользовательская задача или нет.

    Операция "стереть символ" (EC) позволяет пользователю удалить символ из потока данных, применяется для редактирования текста на экране.

    Операция "стереть строку" (EL) позволяет пользователю при редактировании удалить целую строку.

    Команда "go ahead" (GA, "продолжайте") устанавливает полудуплексный режим передачи данных. Каких-либо воздействий на удаленную ЭВМ обычно не производит. В таблице 1.5 приведен список комбинаций клавиш, нажатие которых вызывает определенный результат.

    Управляющие комбинации клавиш
    Комбинация клавиш Достигаемый результат
    Ctrl+E Echo
    Ctrl+] Escape
    Ctrl+? Erase
    Ctrl+O flushoutput
    Ctrl+C Interrupt (прерывание исполнения программы)
    Ctrl+U Kill
    Ctrl+\ Quit
    Ctrl+D EOF

    Блок данных процедуры TELNET содержит три байта и называется командой. Формат этого блока показан на рис 1.1.

    (рис 1.1) Формат блока данных Telnet

    Первый байт в соответствии с таблицей содержит 8 единиц, далее следует байт команды (табл. 1.4). Третий октет служит для размещения кода опции, он может и отсутствовать.

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

    IAC WILL TRANSMIT-BINARY,

    которая в цифровых кодах выглядит как ( 255 251 0 ).

    Для прекращения этого (двоичного) режима передачи нужно выдать команду:

    IAC DON’T TRANSMIT-BINARY (255 254 0).

    Субкоманды Telnet позволяют управлять откликом при работе с клавиатурой. Обычно отклик-эхо присылается удаленной ЭВМ, реже формируется локально. Для включения отклика можно выдать команду: IAC WILL ECHO (255 251 1) (часто это реализовано по умолчанию).

    При работе с Telnet рекомендуется сначала ознакомиться с конкретными возможностями команды с помощью описания (или F10/?). Это позволит вам, например, спасать результаты поиска в файле с указанным вами именем и т.д.

    Многие telnet -клиенты позволяют также указывать явно номер порта, через который должна быть установлена связь. По умолчанию это порт 23. Обычный пользователь не интересуется, через какой порт он работает. Но иногда желательно реализовывать telnet через разные порты системы, обеспечивающие различные услуги, это бывает полезно и с отладочными целями. Используя команду:

    telnet XXXXXX.domain <номер порта>

    можно осуществить связь через порт с заданным номером с узлом XXXXXX.domain. Многие библиотеки применяют метод портов для обеспечения доступа к своим ресурсам внешних Inernet-пользователей. Помимо telnet, существуют и другие стандартные процедуры, выполняющие схожие задачи.

    SUN Microsistems разработала и широко использует программный модуль RPC (Remote Procedure Call, RFC-1057), он используется для удаленного вызова программ почти во всех системах, базирующихся на UNIX. RPC может применяться как на TCP, так и UDP транспортных уровнях.

    Для удаленного исполнения программ может служить команда REXECD, которая активно используется на IBM-системах в рамках ОС AIX.

    Уязвимость протокола Telnet для хакеров привела к тому, что в последнее время эта утилита часто заменяется SSH (Secure Shell) или другими программами, обеспечивающими безопасный удаленный доступ. Но следует иметь в виду, что SSH сохраняет алгоритмическую логику telnet , хотя и использует порт 22 вместо 23. К числу недостатков Telnet следует отнести невозможность эффективного использования мышки.

    Протокол пересылки файлов FTP

    FTP (RFC-959) обеспечивает файловый обмен между удаленными пользователями. Протокол FTP формировался многие годы. Первые реализации в МТИ относятся к 1971. (RFC 114 и 141). RFC 172 рассматривает протокол, ориентированный на пользователя и предназначенный для передачи файлов между ЭВМ. Позднее в документах RFC 265 и RFC 281 протокол был усовершенствован. Заметной переделке протокол подвергся в 1973, и окончательный вид он обрел в 1985 году. Таким образом, данный протокол является одним из старейших.

    Здесь, так же, как и в случае TELNET, необходима идентификация, но многие депозитарии допускают анонимный вход (имя пользователя ANONYMOUS, RFC-1635), который не требует пароля или разрешает ввод вашего почтового адреса вместо него. Работа FTP на пользовательском уровне происходит в несколько этапов:

  • Идентификация (ввод имени-идентификатора и пароля)
  • Выбор каталога
  • Определение режима обмена (поблочный, поточный, ASCII или двоичный)
  • Выполнение команд обмена ( get, mget, dir, mdel, mput, put и т.д.)
  • Завершение процедуры ( quit или close )
  • FTP довольно необычная процедура, так как поддерживает две логические связи между ЭВМ (Рис 1.2). Одна связь служит для удаленного доступа и использует протокол Telnet для передачи команд. Другая связь предназначена для обмена данными. Сервер производит операцию passive open для порта 21 и ждет соединения с клиентом. В качестве транспорта применяется протокол ТСР. Клиент осуществляет операцию active open для порта 21. Канал остается активным до завершения процедуры FTP. TOS (тип IP-сервиса) соответствует минимуму задержки, так как этот канал используется для ручного ввода команд. Канал для передачи данных формируется каждый раз для пересылки файлов. Канал открывается перед началом пересылки и закрывается по коду end_of_file (конец файла). IP-тип сервиса (TOS) в этом случае ориентирован на максимальную пропускную способность.

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

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

    (рис 1.2) Схема работы протокола FTP

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

    На фазе задания режима обмена предоставляются следующие возможности.

    (рис 1.3) Организация информационного обмена между двумя удаленными машинами

    Команда Block сохраняет структуру логических записей файла.

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

    Команда TYPE может задать режимы обмена IMAGE, ASCII или EBCDIC. Из них ASCII — используется по умолчанию.

    Режим EBCDIC применяется для обменов между ЭВМ, работающими с набором символов EBCDIC.

    Режим IMAGE предполагает обмен 8-битными байтами, используется для передачи двоичной (а не текстовой) информации.

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

    Для копирования файла из удаленного сервера используется команда GET, для копирования группы файлов — MGET, в последнем случае применяются символы-заменители, например, MGET *.txt (или RFC-18*.txt, при этом скопируются файлы с RFC-1800.txt до RFC-1899.txt, если таковые существуют в текущем каталоге). Аналогом команды GET в какой-то степени является команда DIR (ls), только она переносит содержимое каталога, что для некоторых операционных систем эквивалентно. При использовании модификации mget проявляйте осторожность — вы можете заблокировать телекоммуникационный канал длительным копированием. Для записи файла в удаленный сервер применяется команда PUT. При операциях обмена обычно используется текущий каталог локальной ЭВМ. В вашем распоряжении всегда имеется возможность поменять местный каталог с помощью команды LCD или ее аналога. Любая команда обмена выполняется в несколько этапов.

  • Формирование канала под управлением клиента, так как именно клиент выдал команду get, dir, put и т.д.
  • Клиент выбирает произвольный номер порта на своей ЭВМ и осуществляет процедуру passive open для этого порта.
  • Клиент посылает номер порта серверу по каналу управления (порт 21), используя команду PORT. Можно обойтись и без команды PORT (ведь применяется тот же порт, что и в командном канале), но это увеличивает задержки и по этой причине не рекомендуется.
  • Сервер получает номер порта по каналу управления и выдает команду active open в указанный порт ЭВМ-клиента. Сервер для канала данных всегда использует порт с номером 20.
  • Рассмотрим пример FTP -сессии. Для этого выдадим команду:

    FTP -d ns.itep.ru (флаг -d означает установку отладочного режима, при
                       котором выдаются все сообщения и внутренние команды 
                       на экран терминала)
    FTP Trying...Open
    220- *** Welcome at FTP-Server ftp.ITEP.RU ***
    220-
    220 ns.itep.ru FTP server ready.
    Userid for logging in on ns.itep.ru (SEMENOV)? semenov
    FTP command: USER semenov
    FTP response: 331 Password required for semenov.
    331 Password required for semenov.
    Password for logging in as semenov on ns.itep.ru? XXXXXXXX
    PASS XXXXXXXX (ввод пароля не отображается на экране)
    FTP response: 230 User semenov logged in.
    230 User semenov logged in.
    ftp:ns.itep.ru> help (просьба выдать список доступных на данном 
       сервере FTP-команд)
    Any unambiguous abbreviation for a command may be used.
    Available commands are:
    ! ? acct append ascii binary bye cd debug
    delete dir drive Exit fcd fdir fpwd get help
    iget image iput Lcd ldir lmkdir local login lpwd
    ls mdelete mget mkdir mput option parent passive put
    pwd quit quote rename retrieve rmdir send server show
    stat store take tenex tget tput type user verbose 
    version
    ftp:ns.itep.ru> quit
    FTP command: QUIT
    FTP response: 221 Goodbye.

    Уход из FTP производится по команде quit. В приведенном примере файловый обмен не производился, но и команда HELP требует переноса информации (так же, как и dir ), так как вам выдается список команд, доступных на удаленном сервере. Из воспроизведенного списка команд самая опасная — mdelete, так как она способна стереть целый каталог. Нетекстовые файлы (архивированные, графические и программные) следует пересылать в режиме binary. Для перевода в этот режим используется одноименная команда. Для перехода из одного каталога в другой на удаленном сервере служит команда cd имя_каталога, а для возврата в предшествующий — cd .. . Например, cd /pub/msdos.

    Ссылка на объект, доступный через анонимное FTP, обычно записывается в виде:

    Название ресурса   Имя сервера   Имя каталога в сервере.

    Например:

    Internet-cmc   ftp.rpi.edu   /pub/communications/internet-cmc.txt

    ftp://ftp.rpi.edu/pub/communications/internet-cmc.txt

    Internet-cmc (CMC — computer-mediated communication) — это межкомпьютерный обмен по сети Internet.

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

    Субкоманды FTP Описание
    ABOR Прерывание исполнения предыдущей FTP -команды и связанного с ней обмена
    ACCT<SP> <accountinformation> Ввод идентификатора пользователя (ID)
    ALLO <SP> <десятичное целое> [<SP> R <SP> <десятичное целое>] Зарезервировать достаточно места (в байтах) для пересылки файла. Для файлов с постраничной структурой после символа R указывается число записей
    APPE <SP> <проход> Присовокупить передаваемые данные к файлу, указанному в параметре проход
    CDUP Переход в каталог-прародитель
    CWD <SP> <проход> Изменить рабочий каталог (CD)
    DELE <SP> <проход> Стереть файл (del)
    HELP Выдать справочную информацию о выполнимых командах
    HELP [<SP> <строка>] Выдать описание работы данной команды
    LIST [<SP> <проход>] Вывод списка файлов или каталогов (dir)
    MKD <SP> <проход> Создать каталог
    MODE <SP> <код режима> Режим обмена = поток, блоки или со сжатием
    NLST [<SP> <проход>] Переслать оглавление каталога от сервера к клиенту
    NOOP Пустая команда
    PASS <SP> <пароль> Слово-пропуск (пароль) пользователя, заполняется пользователем
    PASV Перевести сервер в режим прослушивания информационного порта на предмет установления соединения
    PORT <SP> <порт ЭВМ> IP-адрес и номер порта клиента
    PWD Выдать имя текущего каталога
    QUIT Уход из FTP
    REIN Завершение сессии и открытие новой
    REST <SP> <маркер> Возобновление обмена, начиная с места, указанного маркером
    RETR <SP> <проход> Переслать копию файла (get) другому адресату
    RMD <SP> <проход> Удалить каталог
    RNFR <SP> <проход> Начало процедуры переименования файла (Rename From)
    RNTO <SP> <проход> Указание нового имени файла при переименовании (Rename To)_
    SITE <SP> <строка> Используется сервером для реализации локально специфических команд
    SMNT <SP> <проход> Позволяет пользователю смонтировать нужную файловую систему
    STAT Выдать текущие значения параметров (STATUS)
    STOR <SP> <проход> Сервер должен запомнить полученные данные в виде файла
    STOU Аналог команды STOR, но записывает файл в текущий каталог и присваивает файлу уникальное имя
    STRU <SP> <код структуры> Структура файла = файл, запись или страница
    SYST Сервер сообщает тип системы
    TYPE <SP> <код типа> Специфицирует тип информации, часто для этой цели используются команды binary и ASCII
    USER <SP> < [имя [пропуск]] > Идентифицирует пользователя, запрашивается сервером
    ? То же, что и HELP;
    lcd Изменить локальный каталог (на вашей ЭВМ)
    ! Выйти временно из FTP и уйти в Shell (UNIX)
    ! команда Исполнить команду Shell (UNIX)
    close Прервать связь с удаленным сервером, оставаясь в FTP
    open [имя_ЭВМ] Установить связь с указанным удаленным сервером
    dir Выдать содержимое удаленного каталога

    <SP> — пробел; все команды завершаются последовательностью <CRLF> возврат каретки + перевод строки. В квадратных скобках записан опционный аргумент. Выполнение любой команды можно прервать с помощью Ctrl-C.

    В рамках процедуры FTP доступны следующие команды (приведенный перечень команд является неполным):

    ! [ команда ]Исполняется команда интерпретатора shell вашей ЭВМ (UNIX). Если имя команды явно не введено, система переходит в интерактивный режим shell
    $ имя-макро [ аргументы ]Выполняется макро, имя которого введено, аргументы используются этим макро
    account [ пароль ]Позволяет ввести пароль, необходимый для доступа в удаленный сервер
    append имя_местного_файла [ имя_удаленного_файла ]Добавить местный файл к файлу на удаленном сервере
    ByeЗавершает FTP -сессию.
    caseПереключает регистр символов, которыми записаны имена файлов на удаленной ЭВМ, в процессе выполнения команды MGET. Если case включен (по умолчанию выключен), все прописные буквы в именах файлов на удаленной ЭВМ меняются при переносе в вашу ЭВМ на строчные
    closeЗавершает FTP -сессию и возвращает систему в интерактивный командный режим. Все описанные ранее макро стираются
    debug [ debug-value ]Включает/выключает режим отладки. Значение debugvalue определяет отладочный уровень. Если отладка включена, FTP отображает на экране каждую команду, посылаемую удаленной ЭВМ. Эта информация помечается символом '-->'
    dir [ удаленный каталог ] [ местный файл ]Выдает на экран содержимое удаленного каталога. Если в качестве параметра указано имя местного файла, результат заносится в него. Если имя удаленного каталога не указано, команда выполняется для текущего каталога
    disconnectсиноним close
    hashвключает/выключает знак (#). Во включенном состоянии отмечается пересылка каждого блока, что позволяет визуально контролировать процесс обмена
    macdef macro-nameОпределяет макро. Последующие строки запоминаются в качестве текста макро с именем macro-name. Нулевая строка (двойное нажатие клавиши RETURN) завершает ввод текста макро. Можно ввести до 16 макро с суммарным объемом до 4096 символов
    mdelete [ имена_файлов_на удаленной_ЭВМ ]удаляет файлы на удаленной ЭВМ
    open имя-ЭВМ [ port ]устанавливает связь с указанным FTP -сервером (ЭВМ) через специфицированный порт
    promptвключает/выключает интерактивные запросы со стороны ЭВМ. Это бывает полезным при выполнении групповых команд MPUT, MGET или MDELETE и позволяет проводить соответствующие операции над файлами выборочно
    proxyftp -команда выполняет FTP -команду на вторичной удаленной ЭВМ. Эта команда позволяет связать два удаленных FTP -сервера и осуществить пересылку файлов между ними. Первой proxy-командой должна быть команда open, необходимая для связи со вторичным сервером. Введите команду proxy ?, чтобы проверить выполнимость этих команд на данном сервере
    quitсиноним bye
    recvудаленный_файл [ местный_файл ] синоним команды get
    remotehelp [ имя_команды ]Запрашивает справочную информацию от удаленного FTP -сервера. Если имя_команды задано, запрашивается информация о конкретной команде
    runiqueВключает режим записи файлов в вашу ЭВМ только с уникальными именами. Если файл с таким именем уже существует, то новому файлу будет присвоено имя с расширением .1, если и такое имя уже есть, то с расширением .2. Это может продолжаться вплоть до расширения .99, после чего будет выдано сообщение об ошибке. Впрочем, такую ситуацию вообразить крайне трудно, если вы сами не наплодили файлов с цифровыми расширениями. Для команды mget это крайне полезная функция, которая застрахует вас от стирания из текущего каталога ваших файлов, которые имеют имена, совпадающие с именами на удаленном сервере. По умолчанию runique не включено
    send local-file [ remote-file ]Синоним команды put
    statusОтображает текущее состояние ftp

    В депозитариях можно встретить файлы следующих разновидностей (все виды ниже перечисленных файлов пересылаются в режиме binary, а не ASCII) (таблица 1.7).

    Тип файла Пример записи имени файла Программа обработки файла
    Архивированный файл файл.Z compress, uncompress
    tar-файл файл.tar Tar
    Архивированный tar-файл файл.tar.Z tar, compress, uncompress
    файл.tar.gz Применен архиватор GZIP
    uuencode-файл файл.uue uuencode, uudecode
    Архивированный uuencode-файл файл.uue.Z uuencode, uudecode, compress, uncompress
    zip-файл файл.zip pkzip, pkunzip
    shar-файл файл.shar shar, sh, unshar
    сжатый shar-файл файл.shar.Z shar, sh, unshar, compress, uncompress

    При выполнении FTP система возвращает трехразрядные десятичные коды-отклики, которые позволяют судить о корректности обмена и диагностировать процедуру. Выдача кода сопровождается текстом-комментарием. Первая цифра может принимать значения от 1 до 5. Структура кодов показана в таблице 1.8.

    Коды диагностики
    Значение кода-отклика Описание
    1yz Позитивный предварительный отклик, который означает, что операция начата. До завершения процедуры следует ожидать как минимум еще один отклик
    2yz Сигнал успешного завершения процедуры, говорящий о том, что можно ввести новую команду
    3yz Положительный промежуточный отклик, указывающий на то, что команда воспринята, но для продолжения требуется дополнительная информация
    4yz Негативный отклик, свидетельствующий о том, что команда не воспринята, но можно попробовать ее исполнить еще раз
    5yz Отклик, говорящий о том, что команда не выполнена и не может быть выполнена вообще

    Значение кода "y" в вышеприведенной таблице может принимать значения от 0 до 5. Значения кодов "y" приведены ниже в таблице 1.8a.

    Значение кода-отклика Описание
    x0z Указывает на синтаксическую ошибку; синтаксис верен, но команда не имеет смысла
    x1z Указание на необходимость ввода дополнительной информации
    x2z Отклик, связанный с управлением каналом связи
    x3z Отклик для команд идентификации пользователя и проверки пароля
    x4z Функция не определена
    x5z Отклик, характеризующий состояние файловой системы

    Далее в тексте встречается выражение "анонимное FTP ", это подразумевает следующую процедуру (см. также RFC-1635):

    ftp> login: anonymous
    ftp> password: [ваш полный E-mail адрес]
    ftp> cd <имя_каталога > (смена каталога)
    ftp> binary (если текст, например, архивирован, 
       в противном случае команду выдавать не нужно)
    ftp> get <имя_файла> (копирование файла)
    ftp> quit (уход из процедуры)

    Следует иметь в виду, что некоторые анонимные FTP -серверы требуют, чтобы ЭВМ, с которой осуществляется ввод, имела не только IP-адрес, но и зарегистрированное в локальном DNS-сервере имя. Эти FTP -серверы, получив запрос, пытаются выяснить имя ЭВМ, так как они ведут "журнал посещений", и в случае неуспеха прерывают сессию. Таким образом, анонимное FTP может считаться таковым лишь условно, в смысле ненужности быть авторизованным на сервере, чтобы иметь к нему доступ. Конкретные примеры кодов статуса обмена для FTP:

    Коды откликов
    Код-отклик Описание
    110 Комментарий
    120 Функция будет реализована через nnn минут
    125 Канал открыт, обмен данными начат
    150 Статус файла правилен, подготавливается открытие канала
    200 Команда корректна
    211 Системный статус или отклик на справочный запрос
    212 Состояние каталога
    213 Состояние файла
    214 Справочное поясняющее сообщение
    220 Слишком много подключений к FTP -серверу (можете попробовать позднее). В некоторых версиях указывает на успешное завершение промежуточной процедуры
    221 Благополучное завершение по команде quit
    225 Канал сформирован, но информационный обмен отсутствует
    226 Закрытие канала, обмен завершен успешно
    230 Пользователь идентифицирован, продолжайте
    250 Запрос прошел успешно
    331 Имя пользователя корректно, нужен пароль
    332 Для входа в систему необходима аутентификация
    421 Процедура не возможна, канал закрывается
    425 Открытие информационного канала не возможно
    426 Канал закрыт, обмен прерван
    450 Запрошенная функция не реализована, файл не доступен, например, занят
    451 Локальная ошибка, операция прервана
    452 Ошибка при записи файла (не достаточно места)
    500 Синтаксическая ошибка, команда не может быть интерпретирована (возможно, она слишком длинна)
    501 Синтаксическая ошибка (неверный параметр или аргумент)
    502 Команда не используется (нелегальный тип MODE)
    503 Неудачная последовательность команд
    504 Команда не применима для такого параметра
    530 Система не загружена (not logged in)
    532 Необходима аутентификация для запоминания файла
    550 Запрошенная функция не реализована, файл не доступен, например, не найден
    552 Запрошенная операция прервана, недостаточно выделено памяти

    В настоящее время разработаны версии FTP для работы с IPv6 (RFC-2428). Из соображений безопасности рекомендуется использовать версию SFTP или SCP.

    Ping и Traceroute

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

    Pingэто процедура, которая базируется на IP- и ICMP-протоколах пересылки дейтограмм и служит для трассировки маршрутов и проверки работоспособности каналов и узлов.

    Для решения поставленной задачи PING использует отклики протокола ICMP (смотри также статьи о протоколах IP и ICMP). В протоколе IP имеется опция записи маршрута ( RR — Record Route). В отличие от традиционной команды traceroute, опция RR позволяет записать как путь от инициатора до адресата, так и обратный маршрут. К сожалению, разработчики протокола предусмотрели для записи маршрута только 37 байт, сюда может поместиться максимум девять IP-адресов (определяется предельным размером поля опций ). Применяется PING и при отладке сетевых продуктов. При выполнении этой команды ЭВМ сообщит вам Internet-адреса всех промежуточных узлов, их имена и время распространения отклика от указанного вами узла. Следует иметь в виду, что трассировка осуществляется непосредственно с помощью IP-протокола (опция записи адресов промежуточных узлов). Ниже приведен пример использования команды Ping.

    Команда трассировки маршрута ИТЭФ — сервер научно-исследовательской станции США Мак-Мурдо в Антарктиде (запись в файл route.txt, команда выполнялась в 1994 году):

    ping -q mcmurdo-gw.mcmurdo.gov > route.txt

    Содержимое файла route.txt будет иметь вид:

    hop 1: 193.124.224.190 ??? имя для GW ИТЭФ пока не придумано
    hop 2: 193.124.137.13 MSU-Tower.Moscow.RU.Radio-MSU.net Вперед, в космос
    hop 3: 193.124.137.9 NPI-MSU.Moscow.RU.Radio-MSU.net Через спутник "Радуга"
    hop 4: 193.124.137.6 DESY.Hamburg.DE.Radio-MSU.net пакеты совершили мягкую посадку в Гамбурге, ДЕЗИ
    hop 5: 188.1.133.56 dante.WiN-IP.DFN.DE
    hop 6: 193.172.4.12 duesseldorf2.empb.net
    hop 7: 193.172.4.8 amsterdam6.empb.net
    hop 8: 193.172.12.6 Amsterdam1.dante.net Пересекаем Атлантический океан
    hop 9: 194.41.0.42 New-York1.dante.net вступили на землю США
    hop 10: 192.103.63.5 en-0.cnss35.New-York.t3.ans.net
    hop 11: 140.222.32.222 mf-0.cnss32.New-York.t3.ans.net
    hop 12: 140.222.56.2 t3-1.cnss56.Washington-DC.t3.ans.net
    hop 13: 140.222.145.1 t3-0.enss145.t3.ans.net
    hop 14: 192.203.229.243 SURA2.NSN.NASA.GOV Снова в космос,
    hop 15: 128.161.166.1 GSFC8.NSN.NASA.GOV но теперь через американский
    hop 16: 128.161.232.1 GSFC12.NSN.NASA.GOV Спутник
    hop 17: 128.161.1.1 ARC1NEW.NSN.NASA.GOV
    hop 18: 192.203.230.2 ARC1.NSN.NASA.GOV
    hop 19: 192.100.12.2 ARC2.NSN.NASA.GOV
    hop 20: 128.161.115.2 MCMURDO.NSN.NASA.GOV Наденьте шапку, мы в Антарктиде!
    Target 157.132.100.1 reached on hop 21 round-trip time 1370 ms

    Фантастика, мы пересекли туда и обратно Европу, два океана и США с востока на запад, побывали в Антарктиде — и все это менее чем за полторы секунды.

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

    Наибольшее число модификаций имеет BSD-версия ping. Если на вашей ЭВМ нет этой удобной программы, можно воспользоваться общедоступной версией по адресу:

    ftp://ftp.uu.net /unix/bsd-sources/sbin/ping.

    Сходную информацию позволяет получить и программа traceroute:

    traceroute -n cernvm.cern.ch
    traceroute to crnvma.cern.ch (128.141.2.4) 30 hops max, 40 byte packets
    1 193.124.224.50 3 ms 2 ms 2 ms
    2 194.85.112.130 3 ms 3 ms 3 ms
    3 194.67.80.5 4 ms 3 ms 3 ms
    4 193.124.137.6 534 ms 534 ms 534 ms
    5 188.1.56.5 545 ms 545 ms 546 ms
    6 193.172.4.12 558 ms (ttl=59!) 549 ms (ttl=59!) 548 ms (ttl=59!)
    7 193.172.4.30 580 ms (ttl=58!) 581 ms (ttl=58!) 581 ms (ttl=58!)
    8 193.172.24.10 586 ms 585 ms 597 ms
    9 192.65.185.1 593 ms 587 ms 598 ms
    10 128.141.2.4 628 ms 602 ms 619 ms

    При написании программ, использующих протокол ICMP, полезно воспользоваться отладочной опцией PING, которая позволяет получить на экране шестнадцатеричный образ посылаемого и получаемого пакетов:

    ping -d# 300 ns.itep.ru (версия PCTCP, запрос отклика серверу имен;
                            число байт, подлежащих выдаче, равно 300)
    Dump of outgoing packet
    Version = 4 IP header length = 5 Precedence = Routine
    Type of Service = Normal
    Total length = 284 Protocol = 1 TTL = 64
    45 00 01 1C 00 02 00 00 40 01 71 29 C0 94 A6 81 C1 7C E0 23 IP-заголовок
    08 00 8D BD E9 03 00 01 ... ICMP-заголовок
    host responding, time = 60 ms

    Выдачи ради экономии места сильно сокращены. Тексты пакетов начинаются с кодов IP-версии (=4) и длины заголовка (=5), далее следует байт TOS=0, два байта длины пакета (01 1С) и т.д. в соответствии с требованиями IP-протокола.

    ping -d 300 ns.itep.ru (команда получения текста пакета-отклика на запрос)
    host responding, time = 25 ms
    Dump of incoming packet
    Version = 4 IP header length = 5 Precedence = Routine
    Type of service = Normal
    Total length = 284 Protocol = 1 TTL = 254
    45 00 01 1C EE 29 00 00 FE 01 C5 00 C1 7C E0 23 C0 94 A6 81
    00 00 93 BD EB 03 00 01 ..............

    В принципе, процедуру Ping и Traceroute можно реализовать и с привлечением протоколов UDP и TCP. Рассмотрим следующую модель реализации Traceroute.

    Посылаем последовательно по адресу IP(URL) IP-пакеты со значением TTL=1, 2,... и т.д. Если до адресата больше одного шага, соответствующий маршрутизатор, размещенный по пути следования к адресату, уничтожит посланный пакет и вернет ICMP-сообщение: Time Exceeded (тип ICMP-сообщения=11, TTL стало =0), указав при этом IP-адрес узла, где это произошло. Послав запрос типа get_name_by_address для присланного IP, можно получить имя узла, откуда пришло данное уведомление. Отсутствие сообщения Time Exceeded (например, после трех попыток) будет говорить о достижении адресата. Еще лучше для контроля наличия отклика от узла-адресата использовать реализацию ping на основе протокола UDP или ТСР (например, из библиотеки PERL), так как в этом случае можно задать бессмысленный номер порта и адресат откликнется ICMP-сообщением "порт недоступен" (с предъявлением своего IP-адреса). Это будет означать, что адресат достигнут. В результате такой последовательности посылок будет получена исчерпывающая информация о пути до указанной цели.

    Для данной методики реализации traceroute не существенно, какой протокол применять — UDP, ICMP или TCP.

    Страницы:

    Собственно ради реализации различных процедур через сеть и создавался Интернет. Данный раздел отражает наиболее динамично развивающуюся часть Интернет-технологий. Одни виды услуг устаревают и выходят из употребления (Gopher, WAIS, MOSAIC, Archie), другие появляются вновь (например, IP-телефония, поисковые машины, электронная коммерция). В последнее время несравненно большее внимание стали уделять сетевой безопасности и диагностическим аспектам работы с сетями. Безопасность вышла на первые позиции из-за внедрения Интернет в область финансов и бизнеса. Последнее время активно развиваются технология мультимедиа (интеграция с кабельным телевидением), сфера развлечений (игровые серверы, виртуальная реальность) и информационно-поисковые системы на основе техники WWW.

    Удаленный доступ (Telnet/ssh)

    TELNET был первой реализованной процедурой, он позволяет пользователю установить TCP-соединение с сервером и затем передавать коды нажатия клавиш так, как если бы работа проводилась на консоли сервера, а также передавать клиенту текстовый отклик сервера. TELNET (RFC-854) служит для выполнения удаленного доступа к вычислительным ресурсам и базам данных. Для входа в ЭВМ обычно нужна аутентификация (ввод имени-идентификатора пользователя и его слова-пароля). TELNET предлагает три услуги:

  • определяет сетевой виртуальный терминал ( NVT — network virtual terminal), который обеспечивает стандартный интерфейс к удаленной системе;
  • включает механизм, который позволяет клиенту и серверу согласовать опции обмена;
  • обеспечивает симметрию соединения, допуская любую программу (например, FTP ) выступать в качестве клиента
  • Протокол TELNET позволяет обслуживающей машине рассматривать все удаленные терминалы как стандартные "сетевые виртуальные терминалы" строчного типа, работающие в кодах ASCII, а также обеспечивает возможность согласования более сложных функций (например, локальный или удаленный эхо-контроль, страничный режим, высота и ширина экрана и т. д.). На прикладном уровне над TELNET находится либо программа поддержки реального терминала, либо прикладной процесс в обслуживающей машине, к которому осуществляется доступ с терминала. Формат NVT достаточно прост. Для данных используются 7-битовые ASCII коды. 8-битовые же октеты зарезервированы для командных последовательностей.

    Если команда TELNET вводится без аргументов, ЭВМ переходит в командный режим, напечатав приглашение telnet. В этом режиме она воспринимает и исполняет команды, описанные ниже.

    При вводе TELNET с аргументами программа осуществит связь вашей ЭВМ с удаленным компьютером, имя или адрес которого вы ввели в качестве одного из аргументов.

    После того как связь установлена, начинаются переговоры об используемых опциях (см. табл. 1.1). Каждая из договаривающихся сторон может послать другой один из четырех запросов will, do, wont и dont (см табл. 1.4).

    Коды опций в Telnet
    Код опции в Telnet Описание Номер RFC
    0 Двоичный обмен 856
    1 Эхо 857
    2 Повторное соединение NIC 15391
    3 Подавление буферизации ввода 858
    4 Диалог о размере сообщения NIC 15393
    5 Статус 859
    6 Временная метка 860
    7 Удаленный доступ и отклик 726
    8 Длина выходной строки nic 20196
    9 Размер выходной страницы nic 20197
    10 Режим вывода символов <возврат каретки> 652
    11 Вывод горизонтальной табуляции 653
    12 Установка положения табуляции при выводе 654
    13 Режим вывода команды смены страницы 655
    14 Вывод вертикальной табуляции 656
    15 Определяет положение вертикальной табуляции 657
    16 Режим вывода символа <перевод строки> 658
    17 Расширенный набор кодов ASCII 698
    18 Возврат (logout) 727
    19 Байт-макро 735
    20 Терминал ввода данных 732
    21 Supdup 736
    22 Supdup-вывод 747
    23 Место отправления 779
    24 Тип терминала 930
    25 Конец записи 885
    26 Tacacs-идентификация пользователя 927
    27 Пометка вывода 933
    28 Код положения терминала 946
    29 Режим 3270 1041
    30 X.3 PAD 1053
    31 Размер окна 1073

    Далее TELNET переходит в режим ввода. В этом режиме любой введенный текст пересылается удаленной ЭВМ. Ввод может производиться посимвольно или построчно. При посимвольном режиме каждый введенный символ пересылается немедленно; при построчном режиме отклик на каждое нажатие клавиши производится локально, а пересылка выполняется лишь при нажатии клавиши <Enter>. Некоторые опции требуют дополнительных данных, такая информация может быть получена с помощью субопций (RFC-1091). При этом клиент посылает трехбайтовую последовательность IAC WILL 24, где 24 — код-идентификатор терминала. Получатель может откликнуться последовательностью IAC DO 24, если все в порядке. Сервер, в свою очередь, посылает последовательность IAC SB 24 1 IAC SE, запрашивая тип терминала клиента. Здесь код 24 означает, что это субопция для опции типа терминала (см. табл. 1.1), а следующая 1 является командой "пришлите код вашего терминала". Клиент в свою очередь может откликнуться, послав последовательность IAC SB 24 0 I B M P C IAC SE. Здесь байт 0 означает "мой терминал имеет тип". Список кодов терминалов содержится в RFC-1700.

    Когда связь с удаленной ЭВМ уже осуществлена, переход в командный режим может быть выполнен с помощью нажатия '^]' (escape). В этом режиме доступны команды:

    open имя_ЭВМ [ порт ]open открывает связь с ЭВМ, имя которой указано в обращении. Если номер порта явно не указан, telnet пытается использовать для связи с сервером номер порта по умолчанию. Вместо имени ЭВМ-сервера может использоваться ее IP-адрес
    display [ аргумент ... ]Отображает все или часть набора параметров telnet (см. описание команды send)
    CloseЗакрывает сессию telnet и возвращает систему в командный режим
    QuitЗакрывает любую сессию telnet
    mode typeУправляет режимом ввода ("построчный" или "посимвольный"). Удаленной машине посылается запрос на переход в соответствующий режим. Если она готова (способна) работать в запрошенном режиме, будет произведено соответствующее переключение
    statusОтображает текущий статус telnet. В перечень информации входит имя удаленной ЭВМ и действующий режим обмена
    ? [ команда ]Выдает справочную информацию о команде, название которой приведено в качестве аргумента
    send argumentsПосылает удаленной ЭВМ один или несколько символьных аргументов. В качестве аргументов могут использоваться: escape, synch, brk, ip, ao, ayt, ecel, ga и др. Смотри таблицу 1.3.
    escapeПосылает escape-символ (например, '^]')
    SYNCHПосылает synch-последовательность. Эта последовательность позволяет аннулировать все, что было до этого напечатано, но еще не считано. Эта последовательность посылается как срочная (важная) TCP-информация (может не сработать, если удаленной системой является 4.2 BSD). Если последовательность не сработала, на терминал будет послан символ "r"
    brkПосылает Break-последовательность при нажатии клавиши Break (Pause)
    set argument valueПрисваивает любому числу переменных telnet новые значения. Специальное значение off выключает функцию, соответствующую данной переменной

    Значения переменных можно узнать с помощью команды display. Такими переменными могут быть: escape, interrupt, quit, flushoutput, erase, kill, eof, echo. Последняя переменная (в исходном состоянии '^E') в построчном режиме осуществляет переключение между локальным эхо на ввод символа (режим по умолчанию) и подавлением эхо, например, при вводе пароля. Переменные процедуры telnet представлены в таблице 1.2.

    Практически стандарт TELNET описан во многих RFC-документах, которые определяют различные варианты реализации этой команды. Список опций команды telnet приведен в таблице 1.1.

    Переменные telnet
    Название переменной Назначение
    Echo Определяет, будет ли отображаться на экране то, что вы вводите с клавиатуры. При значении off ввод не отображается, например, при вводе пароля
    Escape Задает символ, который используется в качестве escape. Появление этого символа во входном потоке заставляет его и последующие символы интерпретироваться в ЭВМ, где функционирует процесс telnet, как команда
    Interrupt Специфицирует символ прерывания процесса. Ввод его приводит к остановке процесса пользователя, работающего на удаленной ЭВМ
    Quit Специфицирует символ, который используется пользователем на его клавиатуре для выполнения команд brake или attention
    Flushoutput Определяет символ, который служит для прерывания процедуры вывода на удаленной ЭВМ
    EOF Специфицирует символ, который используется для обозначения конца файла на удаленной машине
    Последовательности символов, используемые совместно с командой send
    Последовательность символов Назначение
    ?Отображает справочную информацию о команде send
    escapeПосылает символ escape (без прерывания посылки символов для Telnet )
    ipПосылает протокольную последовательность telnet. Удаленная машина должна прервать процесс, запущенный для вас
    ecПосылает протокольную EC-последовательность telnet. Удаленная ЭВМ должна стереть последний напечатанный вами символ
    elПосылает протокольную EL-последовательность TELNET. Удаленная ЭВМ должна стереть последнюю напечатанную вами строку
    aoПосылает протокольную AO-последовательность TELNET. Удаленная ЭВМ должна направить весь вывод на ваш терминал
    brkПосылает протокольную BRK-последовательность TELNET. Удаленная ЭВМ должна обеспечить отклик
    aytПосылает протокольную AYT-последовательность TELNET (Are You There). Удаленная ЭВМ должна обеспечить отклик

    В таблице 1.4 представлены наименования и коды команд Telnet, которые используются как клиентом, так и сервером в сочетании с префиксным байтом 0xff (IAC — интерпретировать как команду). Если нужно послать код данных, равный 255, посылается два байта с кодами 255.

    Коды команд TELNET
    Имя субкоманды TELNET Код Описание
    EOF 236 Признак конца файла
    SUSP 237 Отложить исполнение текущего процесса
    ABORT 238 Прервать процесс
    EOR 239 Конец записи
    NOP 241 Никаких действий
    DM(Метка данных) 242 Блок данных процедуры SYNCH
    BRK (Остановка) 243 BRK-символ (break)
    IP(Прерывание процесса) 244 IP-функция
    io (Прерывание вывода) 245 AO-функция
    AYT (Вы здесь?) 246 AYT-функция
    EC (Стереть символ) 247 EC-функция
    EL (Стереть строку) 248 EL-функция
    GA (Продолжайте) 249 GA-функция
    SB 250 Начало субопции
    SE 240 Завершение согласования параметров (конец субопции)
    Will ("будет") 251 Начало исполнения (опционно)
    Won't (не будет) 252 Отказ исполнения или продолжения выполнения (опционно)
    Do ("исполнить") 253 Индицирует запрос, который другая система исполняет (опционно)
    Don't ("Нет") 254 Требует, чтобы другая система остановила исполнение (опционно)
    IAC 255 Интерпретируется как начало командной последовательности

    Операция "прерывание процесса" (IP) позволяет прервать, удалить или завершить процесс пользователя (например, выйти из бесконечного цикла).

    Процедура "прерывание вывода" (AO) позволяет процессу пользователя продолжаться, но вывод на его рабочую станцию прерывается, при этом очищается буфер от уже записанной, но не отображенной информации.

    Запрос "Вы здесь?" (AYT) удобен, когда необходимо выяснить, выполняется ли пользовательская задача или нет.

    Операция "стереть символ" (EC) позволяет пользователю удалить символ из потока данных, применяется для редактирования текста на экране.

    Операция "стереть строку" (EL) позволяет пользователю при редактировании удалить целую строку.

    Команда "go ahead" (GA, "продолжайте") устанавливает полудуплексный режим передачи данных. Каких-либо воздействий на удаленную ЭВМ обычно не производит. В таблице 1.5 приведен список комбинаций клавиш, нажатие которых вызывает определенный результат.

    Управляющие комбинации клавиш
    Комбинация клавиш Достигаемый результат
    Ctrl+E Echo
    Ctrl+] Escape
    Ctrl+? Erase
    Ctrl+O flushoutput
    Ctrl+C Interrupt (прерывание исполнения программы)
    Ctrl+U Kill
    Ctrl+\ Quit
    Ctrl+D EOF

    Блок данных процедуры TELNET содержит три байта и называется командой. Формат этого блока показан на рис 1.1.

    (рис 1.1) Формат блока данных Telnet

    Первый байт в соответствии с таблицей содержит 8 единиц, далее следует байт команды (табл. 1.4). Третий октет служит для размещения кода опции, он может и отсутствовать.

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

    IAC WILL TRANSMIT-BINARY,

    которая в цифровых кодах выглядит как ( 255 251 0 ).

    Для прекращения этого (двоичного) режима передачи нужно выдать команду:

    IAC DON’T TRANSMIT-BINARY (255 254 0).

    Субкоманды Telnet позволяют управлять откликом при работе с клавиатурой. Обычно отклик-эхо присылается удаленной ЭВМ, реже формируется локально. Для включения отклика можно выдать команду: IAC WILL ECHO (255 251 1) (часто это реализовано по умолчанию).

    При работе с Telnet рекомендуется сначала ознакомиться с конкретными возможностями команды с помощью описания (или F10/?). Это позволит вам, например, спасать результаты поиска в файле с указанным вами именем и т.д.

    Многие telnet -клиенты позволяют также указывать явно номер порта, через который должна быть установлена связь. По умолчанию это порт 23. Обычный пользователь не интересуется, через какой порт он работает. Но иногда желательно реализовывать telnet через разные порты системы, обеспечивающие различные услуги, это бывает полезно и с отладочными целями. Используя команду:

    telnet XXXXXX.domain <номер порта>

    можно осуществить связь через порт с заданным номером с узлом XXXXXX.domain. Многие библиотеки применяют метод портов для обеспечения доступа к своим ресурсам внешних Inernet-пользователей. Помимо telnet, существуют и другие стандартные процедуры, выполняющие схожие задачи.

    SUN Microsistems разработала и широко использует программный модуль RPC (Remote Procedure Call, RFC-1057), он используется для удаленного вызова программ почти во всех системах, базирующихся на UNIX. RPC может применяться как на TCP, так и UDP транспортных уровнях.

    Для удаленного исполнения программ может служить команда REXECD, которая активно используется на IBM-системах в рамках ОС AIX.

    Уязвимость протокола Telnet для хакеров привела к тому, что в последнее время эта утилита часто заменяется SSH (Secure Shell) или другими программами, обеспечивающими безопасный удаленный доступ. Но следует иметь в виду, что SSH сохраняет алгоритмическую логику telnet , хотя и использует порт 22 вместо 23. К числу недостатков Telnet следует отнести невозможность эффективного использования мышки.

    Протокол пересылки файлов FTP

    FTP (RFC-959) обеспечивает файловый обмен между удаленными пользователями. Протокол FTP формировался многие годы. Первые реализации в МТИ относятся к 1971. (RFC 114 и 141). RFC 172 рассматривает протокол, ориентированный на пользователя и предназначенный для передачи файлов между ЭВМ. Позднее в документах RFC 265 и RFC 281 протокол был усовершенствован. Заметной переделке протокол подвергся в 1973, и окончательный вид он обрел в 1985 году. Таким образом, данный протокол является одним из старейших.

    Здесь, так же, как и в случае TELNET, необходима идентификация, но многие депозитарии допускают анонимный вход (имя пользователя ANONYMOUS, RFC-1635), который не требует пароля или разрешает ввод вашего почтового адреса вместо него. Работа FTP на пользовательском уровне происходит в несколько этапов:

  • Идентификация (ввод имени-идентификатора и пароля)
  • Выбор каталога
  • Определение режима обмена (поблочный, поточный, ASCII или двоичный)
  • Выполнение команд обмена ( get, mget, dir, mdel, mput, put и т.д.)
  • Завершение процедуры ( quit или close )
  • FTP довольно необычная процедура, так как поддерживает две логические связи между ЭВМ (Рис 1.2). Одна связь служит для удаленного доступа и использует протокол Telnet для передачи команд. Другая связь предназначена для обмена данными. Сервер производит операцию passive open для порта 21 и ждет соединения с клиентом. В качестве транспорта применяется протокол ТСР. Клиент осуществляет операцию active open для порта 21. Канал остается активным до завершения процедуры FTP. TOS (тип IP-сервиса) соответствует минимуму задержки, так как этот канал используется для ручного ввода команд. Канал для передачи данных формируется каждый раз для пересылки файлов. Канал открывается перед началом пересылки и закрывается по коду end_of_file (конец файла). IP-тип сервиса (TOS) в этом случае ориентирован на максимальную пропускную способность.

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

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

    (рис 1.2) Схема работы протокола FTP

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

    На фазе задания режима обмена предоставляются следующие возможности.

    (рис 1.3) Организация информационного обмена между двумя удаленными машинами

    Команда Block сохраняет структуру логических записей файла.

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

    Команда TYPE может задать режимы обмена IMAGE, ASCII или EBCDIC. Из них ASCII — используется по умолчанию.

    Режим EBCDIC применяется для обменов между ЭВМ, работающими с набором символов EBCDIC.

    Режим IMAGE предполагает обмен 8-битными байтами, используется для передачи двоичной (а не текстовой) информации.

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

    Для копирования файла из удаленного сервера используется команда GET, для копирования группы файлов — MGET, в последнем случае применяются символы-заменители, например, MGET *.txt (или RFC-18*.txt, при этом скопируются файлы с RFC-1800.txt до RFC-1899.txt, если таковые существуют в текущем каталоге). Аналогом команды GET в какой-то степени является команда DIR (ls), только она переносит содержимое каталога, что для некоторых операционных систем эквивалентно. При использовании модификации mget проявляйте осторожность — вы можете заблокировать телекоммуникационный канал длительным копированием. Для записи файла в удаленный сервер применяется команда PUT. При операциях обмена обычно используется текущий каталог локальной ЭВМ. В вашем распоряжении всегда имеется возможность поменять местный каталог с помощью команды LCD или ее аналога. Любая команда обмена выполняется в несколько этапов.

  • Формирование канала под управлением клиента, так как именно клиент выдал команду get, dir, put и т.д.
  • Клиент выбирает произвольный номер порта на своей ЭВМ и осуществляет процедуру passive open для этого порта.
  • Клиент посылает номер порта серверу по каналу управления (порт 21), используя команду PORT. Можно обойтись и без команды PORT (ведь применяется тот же порт, что и в командном канале), но это увеличивает задержки и по этой причине не рекомендуется.
  • Сервер получает номер порта по каналу управления и выдает команду active open в указанный порт ЭВМ-клиента. Сервер для канала данных всегда использует порт с номером 20.
  • Рассмотрим пример FTP -сессии. Для этого выдадим команду:

    FTP -d ns.itep.ru (флаг -d означает установку отладочного режима, при
                       котором выдаются все сообщения и внутренние команды 
                       на экран терминала)
    FTP Trying...Open
    220- *** Welcome at FTP-Server ftp.ITEP.RU ***
    220-
    220 ns.itep.ru FTP server ready.
    Userid for logging in on ns.itep.ru (SEMENOV)? semenov
    FTP command: USER semenov
    FTP response: 331 Password required for semenov.
    331 Password required for semenov.
    Password for logging in as semenov on ns.itep.ru? XXXXXXXX
    PASS XXXXXXXX (ввод пароля не отображается на экране)
    FTP response: 230 User semenov logged in.
    230 User semenov logged in.
    ftp:ns.itep.ru> help (просьба выдать список доступных на данном 
       сервере FTP-команд)
    Any unambiguous abbreviation for a command may be used.
    Available commands are:
    ! ? acct append ascii binary bye cd debug
    delete dir drive Exit fcd fdir fpwd get help
    iget image iput Lcd ldir lmkdir local login lpwd
    ls mdelete mget mkdir mput option parent passive put
    pwd quit quote rename retrieve rmdir send server show
    stat store take tenex tget tput type user verbose 
    version
    ftp:ns.itep.ru> quit
    FTP command: QUIT
    FTP response: 221 Goodbye.

    Уход из FTP производится по команде quit. В приведенном примере файловый обмен не производился, но и команда HELP требует переноса информации (так же, как и dir ), так как вам выдается список команд, доступных на удаленном сервере. Из воспроизведенного списка команд самая опасная — mdelete, так как она способна стереть целый каталог. Нетекстовые файлы (архивированные, графические и программные) следует пересылать в режиме binary. Для перевода в этот режим используется одноименная команда. Для перехода из одного каталога в другой на удаленном сервере служит команда cd имя_каталога, а для возврата в предшествующий — cd .. . Например, cd /pub/msdos.

    Ссылка на объект, доступный через анонимное FTP, обычно записывается в виде:

    Название ресурса   Имя сервера   Имя каталога в сервере.

    Например:

    Internet-cmc   ftp.rpi.edu   /pub/communications/internet-cmc.txt

    ftp://ftp.rpi.edu/pub/communications/internet-cmc.txt

    Internet-cmc (CMC — computer-mediated communication) — это межкомпьютерный обмен по сети Internet.

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

    Субкоманды FTP Описание
    ABOR Прерывание исполнения предыдущей FTP -команды и связанного с ней обмена
    ACCT<SP> <accountinformation> Ввод идентификатора пользователя (ID)
    ALLO <SP> <десятичное целое> [<SP> R <SP> <десятичное целое>] Зарезервировать достаточно места (в байтах) для пересылки файла. Для файлов с постраничной структурой после символа R указывается число записей
    APPE <SP> <проход> Присовокупить передаваемые данные к файлу, указанному в параметре проход
    CDUP Переход в каталог-прародитель
    CWD <SP> <проход> Изменить рабочий каталог (CD)
    DELE <SP> <проход> Стереть файл (del)
    HELP Выдать справочную информацию о выполнимых командах
    HELP [<SP> <строка>] Выдать описание работы данной команды
    LIST [<SP> <проход>] Вывод списка файлов или каталогов (dir)
    MKD <SP> <проход> Создать каталог
    MODE <SP> <код режима> Режим обмена = поток, блоки или со сжатием
    NLST [<SP> <проход>] Переслать оглавление каталога от сервера к клиенту
    NOOP Пустая команда
    PASS <SP> <пароль> Слово-пропуск (пароль) пользователя, заполняется пользователем
    PASV Перевести сервер в режим прослушивания информационного порта на предмет установления соединения
    PORT <SP> <порт ЭВМ> IP-адрес и номер порта клиента
    PWD Выдать имя текущего каталога
    QUIT Уход из FTP
    REIN Завершение сессии и открытие новой
    REST <SP> <маркер> Возобновление обмена, начиная с места, указанного маркером
    RETR <SP> <проход> Переслать копию файла (get) другому адресату
    RMD <SP> <проход> Удалить каталог
    RNFR <SP> <проход> Начало процедуры переименования файла (Rename From)
    RNTO <SP> <проход> Указание нового имени файла при переименовании (Rename To)_
    SITE <SP> <строка> Используется сервером для реализации локально специфических команд
    SMNT <SP> <проход> Позволяет пользователю смонтировать нужную файловую систему
    STAT Выдать текущие значения параметров (STATUS)
    STOR <SP> <проход> Сервер должен запомнить полученные данные в виде файла
    STOU Аналог команды STOR, но записывает файл в текущий каталог и присваивает файлу уникальное имя
    STRU <SP> <код структуры> Структура файла = файл, запись или страница
    SYST Сервер сообщает тип системы
    TYPE <SP> <код типа> Специфицирует тип информации, часто для этой цели используются команды binary и ASCII
    USER <SP> < [имя [пропуск]] > Идентифицирует пользователя, запрашивается сервером
    ? То же, что и HELP;
    lcd Изменить локальный каталог (на вашей ЭВМ)
    ! Выйти временно из FTP и уйти в Shell (UNIX)
    ! команда Исполнить команду Shell (UNIX)
    close Прервать связь с удаленным сервером, оставаясь в FTP
    open [имя_ЭВМ] Установить связь с указанным удаленным сервером
    dir Выдать содержимое удаленного каталога

    <SP> — пробел; все команды завершаются последовательностью <CRLF> возврат каретки + перевод строки. В квадратных скобках записан опционный аргумент. Выполнение любой команды можно прервать с помощью Ctrl-C.

    В рамках процедуры FTP доступны следующие команды (приведенный перечень команд является неполным):

    ! [ команда ]Исполняется команда интерпретатора shell вашей ЭВМ (UNIX). Если имя команды явно не введено, система переходит в интерактивный режим shell
    $ имя-макро [ аргументы ]Выполняется макро, имя которого введено, аргументы используются этим макро
    account [ пароль ]Позволяет ввести пароль, необходимый для доступа в удаленный сервер
    append имя_местного_файла [ имя_удаленного_файла ]Добавить местный файл к файлу на удаленном сервере
    ByeЗавершает FTP -сессию.
    caseПереключает регистр символов, которыми записаны имена файлов на удаленной ЭВМ, в процессе выполнения команды MGET. Если case включен (по умолчанию выключен), все прописные буквы в именах файлов на удаленной ЭВМ меняются при переносе в вашу ЭВМ на строчные
    closeЗавершает FTP -сессию и возвращает систему в интерактивный командный режим. Все описанные ранее макро стираются
    debug [ debug-value ]Включает/выключает режим отладки. Значение debugvalue определяет отладочный уровень. Если отладка включена, FTP отображает на экране каждую команду, посылаемую удаленной ЭВМ. Эта информация помечается символом '-->'
    dir [ удаленный каталог ] [ местный файл ]Выдает на экран содержимое удаленного каталога. Если в качестве параметра указано имя местного файла, результат заносится в него. Если имя удаленного каталога не указано, команда выполняется для текущего каталога
    disconnectсиноним close
    hashвключает/выключает знак (#). Во включенном состоянии отмечается пересылка каждого блока, что позволяет визуально контролировать процесс обмена
    macdef macro-nameОпределяет макро. Последующие строки запоминаются в качестве текста макро с именем macro-name. Нулевая строка (двойное нажатие клавиши RETURN) завершает ввод текста макро. Можно ввести до 16 макро с суммарным объемом до 4096 символов
    mdelete [ имена_файлов_на удаленной_ЭВМ ]удаляет файлы на удаленной ЭВМ
    open имя-ЭВМ [ port ]устанавливает связь с указанным FTP -сервером (ЭВМ) через специфицированный порт
    promptвключает/выключает интерактивные запросы со стороны ЭВМ. Это бывает полезным при выполнении групповых команд MPUT, MGET или MDELETE и позволяет проводить соответствующие операции над файлами выборочно
    proxyftp -команда выполняет FTP -команду на вторичной удаленной ЭВМ. Эта команда позволяет связать два удаленных FTP -сервера и осуществить пересылку файлов между ними. Первой proxy-командой должна быть команда open, необходимая для связи со вторичным сервером. Введите команду proxy ?, чтобы проверить выполнимость этих команд на данном сервере
    quitсиноним bye
    recvудаленный_файл [ местный_файл ] синоним команды get
    remotehelp [ имя_команды ]Запрашивает справочную информацию от удаленного FTP -сервера. Если имя_команды задано, запрашивается информация о конкретной команде
    runiqueВключает режим записи файлов в вашу ЭВМ только с уникальными именами. Если файл с таким именем уже существует, то новому файлу будет присвоено имя с расширением .1, если и такое имя уже есть, то с расширением .2. Это может продолжаться вплоть до расширения .99, после чего будет выдано сообщение об ошибке. Впрочем, такую ситуацию вообразить крайне трудно, если вы сами не наплодили файлов с цифровыми расширениями. Для команды mget это крайне полезная функция, которая застрахует вас от стирания из текущего каталога ваших файлов, которые имеют имена, совпадающие с именами на удаленном сервере. По умолчанию runique не включено
    send local-file [ remote-file ]Синоним команды put
    statusОтображает текущее состояние ftp

    В депозитариях можно встретить файлы следующих разновидностей (все виды ниже перечисленных файлов пересылаются в режиме binary, а не ASCII) (таблица 1.7).

    Тип файла Пример записи имени файла Программа обработки файла
    Архивированный файл файл.Z compress, uncompress
    tar-файл файл.tar Tar
    Архивированный tar-файл файл.tar.Z tar, compress, uncompress
    файл.tar.gz Применен архиватор GZIP
    uuencode-файл файл.uue uuencode, uudecode
    Архивированный uuencode-файл файл.uue.Z uuencode, uudecode, compress, uncompress
    zip-файл файл.zip pkzip, pkunzip
    shar-файл файл.shar shar, sh, unshar
    сжатый shar-файл файл.shar.Z shar, sh, unshar, compress, uncompress

    При выполнении FTP система возвращает трехразрядные десятичные коды-отклики, которые позволяют судить о корректности обмена и диагностировать процедуру. Выдача кода сопровождается текстом-комментарием. Первая цифра может принимать значения от 1 до 5. Структура кодов показана в таблице 1.8.

    Коды диагностики
    Значение кода-отклика Описание
    1yz Позитивный предварительный отклик, который означает, что операция начата. До завершения процедуры следует ожидать как минимум еще один отклик
    2yz Сигнал успешного завершения процедуры, говорящий о том, что можно ввести новую команду
    3yz Положительный промежуточный отклик, указывающий на то, что команда воспринята, но для продолжения требуется дополнительная информация
    4yz Негативный отклик, свидетельствующий о том, что команда не воспринята, но можно попробовать ее исполнить еще раз
    5yz Отклик, говорящий о том, что команда не выполнена и не может быть выполнена вообще

    Значение кода "y" в вышеприведенной таблице может принимать значения от 0 до 5. Значения кодов "y" приведены ниже в таблице 1.8a.

    Значение кода-отклика Описание
    x0z Указывает на синтаксическую ошибку; синтаксис верен, но команда не имеет смысла
    x1z Указание на необходимость ввода дополнительной информации
    x2z Отклик, связанный с управлением каналом связи
    x3z Отклик для команд идентификации пользователя и проверки пароля
    x4z Функция не определена
    x5z Отклик, характеризующий состояние файловой системы

    Далее в тексте встречается выражение "анонимное FTP ", это подразумевает следующую процедуру (см. также RFC-1635):

    ftp> login: anonymous
    ftp> password: [ваш полный E-mail адрес]
    ftp> cd <имя_каталога > (смена каталога)
    ftp> binary (если текст, например, архивирован, 
       в противном случае команду выдавать не нужно)
    ftp> get <имя_файла> (копирование файла)
    ftp> quit (уход из процедуры)

    Следует иметь в виду, что некоторые анонимные FTP -серверы требуют, чтобы ЭВМ, с которой осуществляется ввод, имела не только IP-адрес, но и зарегистрированное в локальном DNS-сервере имя. Эти FTP -серверы, получив запрос, пытаются выяснить имя ЭВМ, так как они ведут "журнал посещений", и в случае неуспеха прерывают сессию. Таким образом, анонимное FTP может считаться таковым лишь условно, в смысле ненужности быть авторизованным на сервере, чтобы иметь к нему доступ. Конкретные примеры кодов статуса обмена для FTP:

    Коды откликов
    Код-отклик Описание
    110 Комментарий
    120 Функция будет реализована через nnn минут
    125 Канал открыт, обмен данными начат
    150 Статус файла правилен, подготавливается открытие канала
    200 Команда корректна
    211 Системный статус или отклик на справочный запрос
    212 Состояние каталога
    213 Состояние файла
    214 Справочное поясняющее сообщение
    220 Слишком много подключений к FTP -серверу (можете попробовать позднее). В некоторых версиях указывает на успешное завершение промежуточной процедуры
    221 Благополучное завершение по команде quit
    225 Канал сформирован, но информационный обмен отсутствует
    226 Закрытие канала, обмен завершен успешно
    230 Пользователь идентифицирован, продолжайте
    250 Запрос прошел успешно
    331 Имя пользователя корректно, нужен пароль
    332 Для входа в систему необходима аутентификация
    421 Процедура не возможна, канал закрывается
    425 Открытие информационного канала не возможно
    426 Канал закрыт, обмен прерван
    450 Запрошенная функция не реализована, файл не доступен, например, занят
    451 Локальная ошибка, операция прервана
    452 Ошибка при записи файла (не достаточно места)
    500 Синтаксическая ошибка, команда не может быть интерпретирована (возможно, она слишком длинна)
    501 Синтаксическая ошибка (неверный параметр или аргумент)
    502 Команда не используется (нелегальный тип MODE)
    503 Неудачная последовательность команд
    504 Команда не применима для такого параметра
    530 Система не загружена (not logged in)
    532 Необходима аутентификация для запоминания файла
    550 Запрошенная функция не реализована, файл не доступен, например, не найден
    552 Запрошенная операция прервана, недостаточно выделено памяти

    В настоящее время разработаны версии FTP для работы с IPv6 (RFC-2428). Из соображений безопасности рекомендуется использовать версию SFTP или SCP.

    Ping и Traceroute

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

    Pingэто процедура, которая базируется на IP- и ICMP-протоколах пересылки дейтограмм и служит для трассировки маршрутов и проверки работоспособности каналов и узлов.

    Для решения поставленной задачи PING использует отклики протокола ICMP (смотри также статьи о протоколах IP и ICMP). В протоколе IP имеется опция записи маршрута ( RR — Record Route). В отличие от традиционной команды traceroute, опция RR позволяет записать как путь от инициатора до адресата, так и обратный маршрут. К сожалению, разработчики протокола предусмотрели для записи маршрута только 37 байт, сюда может поместиться максимум девять IP-адресов (определяется предельным размером поля опций ). Применяется PING и при отладке сетевых продуктов. При выполнении этой команды ЭВМ сообщит вам Internet-адреса всех промежуточных узлов, их имена и время распространения отклика от указанного вами узла. Следует иметь в виду, что трассировка осуществляется непосредственно с помощью IP-протокола (опция записи адресов промежуточных узлов). Ниже приведен пример использования команды Ping.

    Команда трассировки маршрута ИТЭФ — сервер научно-исследовательской станции США Мак-Мурдо в Антарктиде (запись в файл route.txt, команда выполнялась в 1994 году):

    ping -q mcmurdo-gw.mcmurdo.gov > route.txt

    Содержимое файла route.txt будет иметь вид:

    hop 1: 193.124.224.190 ??? имя для GW ИТЭФ пока не придумано
    hop 2: 193.124.137.13 MSU-Tower.Moscow.RU.Radio-MSU.net Вперед, в космос
    hop 3: 193.124.137.9 NPI-MSU.Moscow.RU.Radio-MSU.net Через спутник "Радуга"
    hop 4: 193.124.137.6 DESY.Hamburg.DE.Radio-MSU.net пакеты совершили мягкую посадку в Гамбурге, ДЕЗИ
    hop 5: 188.1.133.56 dante.WiN-IP.DFN.DE
    hop 6: 193.172.4.12 duesseldorf2.empb.net
    hop 7: 193.172.4.8 amsterdam6.empb.net
    hop 8: 193.172.12.6 Amsterdam1.dante.net Пересекаем Атлантический океан
    hop 9: 194.41.0.42 New-York1.dante.net вступили на землю США
    hop 10: 192.103.63.5 en-0.cnss35.New-York.t3.ans.net
    hop 11: 140.222.32.222 mf-0.cnss32.New-York.t3.ans.net
    hop 12: 140.222.56.2 t3-1.cnss56.Washington-DC.t3.ans.net
    hop 13: 140.222.145.1 t3-0.enss145.t3.ans.net
    hop 14: 192.203.229.243 SURA2.NSN.NASA.GOV Снова в космос,
    hop 15: 128.161.166.1 GSFC8.NSN.NASA.GOV но теперь через американский
    hop 16: 128.161.232.1 GSFC12.NSN.NASA.GOV Спутник
    hop 17: 128.161.1.1 ARC1NEW.NSN.NASA.GOV
    hop 18: 192.203.230.2 ARC1.NSN.NASA.GOV
    hop 19: 192.100.12.2 ARC2.NSN.NASA.GOV
    hop 20: 128.161.115.2 MCMURDO.NSN.NASA.GOV Наденьте шапку, мы в Антарктиде!
    Target 157.132.100.1 reached on hop 21 round-trip time 1370 ms

    Фантастика, мы пересекли туда и обратно Европу, два океана и США с востока на запад, побывали в Антарктиде — и все это менее чем за полторы секунды.

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

    Наибольшее число модификаций имеет BSD-версия ping. Если на вашей ЭВМ нет этой удобной программы, можно воспользоваться общедоступной версией по адресу:

    ftp://ftp.uu.net /unix/bsd-sources/sbin/ping.

    Сходную информацию позволяет получить и программа traceroute:

    traceroute -n cernvm.cern.ch
    traceroute to crnvma.cern.ch (128.141.2.4) 30 hops max, 40 byte packets
    1 193.124.224.50 3 ms 2 ms 2 ms
    2 194.85.112.130 3 ms 3 ms 3 ms
    3 194.67.80.5 4 ms 3 ms 3 ms
    4 193.124.137.6 534 ms 534 ms 534 ms
    5 188.1.56.5 545 ms 545 ms 546 ms
    6 193.172.4.12 558 ms (ttl=59!) 549 ms (ttl=59!) 548 ms (ttl=59!)
    7 193.172.4.30 580 ms (ttl=58!) 581 ms (ttl=58!) 581 ms (ttl=58!)
    8 193.172.24.10 586 ms 585 ms 597 ms
    9 192.65.185.1 593 ms 587 ms 598 ms
    10 128.141.2.4 628 ms 602 ms 619 ms

    При написании программ, использующих протокол ICMP, полезно воспользоваться отладочной опцией PING, которая позволяет получить на экране шестнадцатеричный образ посылаемого и получаемого пакетов:

    ping -d# 300 ns.itep.ru (версия PCTCP, запрос отклика серверу имен;
                            число байт, подлежащих выдаче, равно 300)
    Dump of outgoing packet
    Version = 4 IP header length = 5 Precedence = Routine
    Type of Service = Normal
    Total length = 284 Protocol = 1 TTL = 64
    45 00 01 1C 00 02 00 00 40 01 71 29 C0 94 A6 81 C1 7C E0 23 IP-заголовок
    08 00 8D BD E9 03 00 01 ... ICMP-заголовок
    host responding, time = 60 ms

    Выдачи ради экономии места сильно сокращены. Тексты пакетов начинаются с кодов IP-версии (=4) и длины заголовка (=5), далее следует байт TOS=0, два байта длины пакета (01 1С) и т.д. в соответствии с требованиями IP-протокола.

    ping -d 300 ns.itep.ru (команда получения текста пакета-отклика на запрос)
    host responding, time = 25 ms
    Dump of incoming packet
    Version = 4 IP header length = 5 Precedence = Routine
    Type of service = Normal
    Total length = 284 Protocol = 1 TTL = 254
    45 00 01 1C EE 29 00 00 FE 01 C5 00 C1 7C E0 23 C0 94 A6 81
    00 00 93 BD EB 03 00 01 ..............

    В принципе, процедуру Ping и Traceroute можно реализовать и с привлечением протоколов UDP и TCP. Рассмотрим следующую модель реализации Traceroute.

    Посылаем последовательно по адресу IP(URL) IP-пакеты со значением TTL=1, 2,... и т.д. Если до адресата больше одного шага, соответствующий маршрутизатор, размещенный по пути следования к адресату, уничтожит посланный пакет и вернет ICMP-сообщение: Time Exceeded (тип ICMP-сообщения=11, TTL стало =0), указав при этом IP-адрес узла, где это произошло. Послав запрос типа get_name_by_address для присланного IP, можно получить имя узла, откуда пришло данное уведомление. Отсутствие сообщения Time Exceeded (например, после трех попыток) будет говорить о достижении адресата. Еще лучше для контроля наличия отклика от узла-адресата использовать реализацию ping на основе протокола UDP или ТСР (например, из библиотеки PERL), так как в этом случае можно задать бессмысленный номер порта и адресат откликнется ICMP-сообщением "порт недоступен" (с предъявлением своего IP-адреса). Это будет означать, что адресат достигнут. В результате такой последовательности посылок будет получена исчерпывающая информация о пути до указанной цели.

    Для данной методики реализации traceroute не существенно, какой протокол применять — UDP, ICMP или TCP.

    Вернуться к учебному плану