РЕАЛИЗАЦИЯ ПРОТОКОЛА TCP/IP В ОС UNIX

Лекция №7

РЕАЛИЗАЦИЯ ПРОТОКОЛА TCP/IP В ОС UNIX

TCP/IP - это группа протоколов, используемых для связи компьютерных сетей и маршрутизации движения информации между большим количеством различных компьютеров. "TCP" означает "Протокол контроля передачи", а "IP" означает "Протокол межсетевого взаимодействия". Протоколы стандартизированы описанными допустимыми форматами, обработкой ошибок, передачей сообщений и стандартами связи. Компьютерные системы, которые подчиняются протоколам связи, таким как TCP/IP могут использовать общий язык. Это позволяет им передавать сообщения безошибочно нужным получателям, не смотря на большие различия в аппаратном и программном обеспечении различных машин. Многие большие сети были выполнены на основе этих протоколов, включая DARPA сеть. Разнообразные университеты, учреждения и компьютерные фирмы связаны в глобальную сеть, которая следует протоколам TCP/IP. Тысячи индивидуальных машин подсоединены к глобальной сети. Любая машина в глобальной сети может взаимодействовать с любой другой (термин "глобальная сеть" обычно используется для названия действия объединения двух или более локальных сетей.). Машины в глобальной сети называются "hosts"(главные ЭВМ) или "nodes"(узловые ЭВМ). TCP/IP обеспечивает базу для многих полезных средств, включая электронную почту, передачу файлов и дистанционную регистрацию. Электронная почта предназначена для передачи коротких текстовых файлов. Прикладные программы для передачи файлов могут передавать очень большие файлы, содержащие программы и данные. Они также могут выполнять контрольные проверки правильности передачи данных. Дистанционная регистрация позволяет пользователям одного компьютера зарегистрироваться на удаленной машине и получить в интерактивном сеансе связи ресурсы этой машиной.

Протокол межсетевого взаимодействия (IP)

IP определяет несвязанную пакетную доставку. Эта доставка связывает одну или более пакетно-управляемые сети в глобальную сеть. Термин "несвязанную" означает, что получающая и посылающая машины не связаны собой непосредственным контуром. Здесь индивидуальные пакеты данных (дейтаграммы) маршрутизируются через различные машины глобальной сети к локальной сети-получателю и получающей машине. Таким образом, сообщения разбиваются на несколько дейтаграмм, которые посылаются отдельно. Необходимо заметить, что несвязанная пакетная доставка сама по себе ненадежна. Отдельные дейтаграммы могут быть получены или не получены и с большой вероятностью могут быть получены не в том порядке, в котором они были посланы. TCP увеличивает надежность.

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

Протокол контроля передачи (TCP)

Протокол контроля передачи данных (TCP) работает совместно с IP для обеспечения надежной доставки. Он предлагает средства обеспечения надежности того, что различные дейтаграммы, составляющие сообщения, собираются в правильном порядке на принимающей машине и, что некоторые пропущенные дейтаграммы, будут посланы снова, пока они не будут приняты правильно. Первая цель TCP - это обеспечение надежности, безопасности и сервиса виртуального контура связи между парами связанных процессов на уровне ненадежных внутрисетевых пакетов, где могут случиться потери, уничтожение, дублирование, задержка или потеря упорядоченности пакетов. Таким образом, обеспечение безопасности, например такой как, ограничение доступа пользователей к соответствующим машинам, может быть выполнено посредством TCP. TCP касается только общей надежности. Имеется несколько соображений относительно возможности получения надежного сервиса дейтаграмм. Если дейтаграмма послана через локальную сеть к удаленной главной машине, то промежуточные сети не гарантируют доставку. Кроме того, посылающая машина не может знать маршрут передачи дейтаграммы. Надежность пути "источник-приемник" обеспечивается TCP на фоне ненадежности среды. Это делает TCP хорошо приспособленной к широкому разнообразию приложений многомашинных связей. Надежность обеспечивается посредством контрольной суммы (коды обнаружения ошибок) последовательных чисел в заголовке TCP, прямого подтверждения получения данных и повторной передачи неподтвержденных данных.

МАРШРУТИЗАЦИЯ СООБЩЕНИЙ

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

Шлюзы

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

Адресация сети

Каждая машина в глобальной сети TCP/IP имеет 32 бита для сетевых адресов. Адрес включает две различные части: идентификатор сети и идентификатор главной машины. Машины, которые являются шлюзами, имеют более одного адреса, если они связывают более одной машины. Адреса глобальной сети назначаются Центром информации глобальной сети (NIC), который расположен в SRI Information в Менло, штате Калифорния. NIC назначает только идентификаторы сети. Затем администраторы каждой отдельной сети назначают идентификаторы главной машины своей сети. Есть три класса адресации сети, относящиеся к маленьким, средним и большим сетям. Чем больше сеть, тем больше число главных машин в этой сети. Соответственно, чем меньше сеть, тем меньше количество главных машин. Таким образом, когда 32 битный адрес распределяется между идентификатором сети и машины, большие сети требуют больше бит для уникального определения всех главных машин сети. Нужно отметить, что существует немного действительно больших сетей, и поэтому не требуется больше бит для идентификации этих сетей. Адреса сетей разбиты на три класса: А, В, С. Следующая таблица представляет эти классы и их форматы:

Класс

Размер и конфигурация сети

Класс А

7бит - идентификатор сети, 24бита - идентификатор машины

Класс В

14бит - идентификатор сети, 16бит - идентификатор машины

Класс С

21бит - идентификатор сети, 8бит - идентификатор машины

Все адреса сети имеют 32 бита. Первый бит в классе А - 0, чтобы идентифицировать класс А. В классе В адрес начинается с 10 и в классе С адрес начинается с 11. Эта адресация сети предоставляет уникальный адрес для всех существующих типов сетей, которые могут быть среди различных сетей, использующих эту систему адресации. Фактически существует мало больших сетей, имеющих много главных машин (класс А), много маленьких сетей (класс С) и среднее количество средних сетей (класс В). Адрес сети часто пишется состоящим из четырех целых десятичных чисел, разделенных точкой, где каждый десятичный номер представляет один октет 32 битного адреса сети. Например, машина может иметь адрес

128.12.3.5.

Порты и сокеты

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

Сокет - это адрес, который включает идентификатор порта, это конкатенация адреса сети с портом TCP. Связь с помощью портов может быть показана на экране посредством утилиты netstat.

ИСПОЛЬЗОВАНИЕ СЕТЕВЫХ КОМАНД

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

- Доступные команды сети

- Равнозначность пользователей

- Идентификация машинных адресов в командах

- Проблемы доступа и пароля

- Использование виртуального терминала

- Передача файлов к и от удаленной машины

- Выполнение дистанционных команд

ОБЗОР СЕТЕВЫХ КОМАНД ДЛЯ TCP/IP

TCP/IP команды - это производные окружения Berkeley UNIX и ARPANET сети. ARPA - это продукт Advanced Research Projects Agency. Команды, производные от Berkeley UNIX, могут использоваться только с UNIX и совместимыми с UNIX системами. Производные от ARPANET работают с любыми операционными системами. Основное различие между этими типами команд такова, что 4.3BSD (Berkeley UNIX) команды унаследовали UNIX-стиль работы с разрешениями в сети, ARPANET команды этих разрешений не понимают. Команды включенные в TCP/IP из Berkeley UNIX окружения называются r-командами (впереди команды ставится - r). Это такие команды как rcp, rcmd, rlogin. Эти команды типа 4.3BSD разработаны на специфике UNIX и наиболее удобны, когда пользователь работает на машине с системой UNIX. Команды, такие как telnet и ftp взяты из ARPANET. Они разработаны независимо от любой операционной системы. Протоколы, используемые в этих командах, разработаны в соответствии со спецификацией Department of Defense (DoD) Internet. Системные команды напечатаны вместе с их дескрипторами ниже. Не все из этих команд предназначены для использования пользователями системы. Некоторые обеспечивают административные функции.

TCP/IP системные команды

Команда Дескриптор

ftp(TC) программа передачи файла

ifconfig(ADMN) параметры конфигурирования интерфейса сети

logger(TC) формирование элементов в системе регистрации

mkhosts(ADMN) команды создания имен узлов

netstat(TC) изображение состояния сети

rcmd(TC) выполнение команд удаленных системных оболочек

rcp(TC) копирование удаленных файлов

rlogin(TC) удаленная регистрация

ruptime(TC) изображение состояния узлов локальной сети

rwho(TC) кто зарегистрировался в узле локальной сети

slattach(ADMN) подключение к последовательным линиям как сетевым интерфейсам

sldetach(ADMN) отключение от последовательных линий как от сетевых интерфейсов

talk(TC) разговор с другим пользователем

telnet(TC) протокол интерфейса пользователя к DARPA TELNET

trpt(ADMN) печать протокола трассировки

СЕТЕВЫЕ КОМАНДЫ UNIX

Сеть UNIX - это группа машин, имеющих операционную систему UNIX или совместимую с UNIX, объединенных вместе, обычно посредством Ethernet. В глобальной сети UNIX две или более таких сети объединены вместе посредством шлюзов. Шлюзы глобальной сети невидимы на уровне команд интерфейса, создавая при этом иллюзию работы одной сети. (На шлюзы также ссылаются как на IP маршруты или мосты) UNIX - это командно-ориентированная система и, следовательно, чтобы использовать удаленные источники в глобальной системе UNIX, нужно использовать только специфические команды, допустимые в UNIX. Такие команды должны быть едиными в системе и могут быть вызваны на любом уровне. Они могут быть выполнены в программах пользователей, с использованием fork(S) и exec(S) системных вызовов или system(S) подпрограммы. Эти команды - это процессы пользователя операционной системы, но они требуют сетевого программного обеспечения для функционирования. В UNIX название команд такое же, как название файлов, которые содержат процессы программ. Как пользователь, чья машина подключена к сети UNIX, можно выполнить следующее:

- дистанционно зарегистрироваться в другой машине, с которой вы хотите работать;

- совершить логический переход с одной удаленной машины на другую без ввода пароля (если администратор вашей системы "уравнял" машины или, если вы создали эквивалент пользователя для этой машины);

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

- получить доступ к глобальным данным со всех машин;

- скопировать или переместить файлы с одной машины на другую, если на это есть разрешение (смотри chmod(C));

- совместить работу таких устройств, как принтер накопитель на магнитном диске;

- получить доступ к электронной почте системы, которая была создана для сети;

- выполнять резидентные приложения на других машинах;

- получить доступ к другим UNIX машинам, которые в данный момент выполняют соответствующие протоколы;

Заметьте, что существует три типа объектов сети системы UNIX:

- выполняемые команды и сервисные программы (иногда называемые daemons), поддерживающие команды

- конфигурационные файлы

- библиотечные и системные вызовы для использования программистами

ВАЖНЫЕ ПОНЯТИЯ ДЛЯ ИСПОЛЬЗОВАНИЯ СЕТЕВЫХ КОМАНД

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

- эквивалент пользователя

- связи и адреса

- машинный доступ и пароль

Эквивалент пользователя

Эквивалент пользователя используют только в командах rcp, rcmd и rlogin. Команда rcp не может быть использована без эквивалента пользователя. Команда rlogin запрашивает имя пользователя и пароль, когда не установлен эквивалент пользователя; когда эквивалент установлен, пароль не запрашивается. Команда rcmd не может нормально использоваться без эквивалента пользователя. (Если rcmd вызывается с главной машины, то нет команды, когда нет эквивалента пользователя; аналогичный эффект, когда вызывается rlogin без эквивалента пользователя. Вот почему программа запрашивает имя пользователя и пароль для команды login). Для установления эквивалента используются несколько файлов. Один из них это /etc/hosts.equiv файл, который охватывает систему полностью за исключением корня. Другой файл это .rhosts файл в "домашнем" каталоге. Этот файл охватывает только индивидуальный каталог (Для корня это /.rhosts). Эти два файла работают вместе с третьим файлом /etc/password, который определяет экстент эквивалента пользователя. Существует два пути для установления эквивалента пользователя:

- введение его в .rhosts и в /etc/password

- введение его в /etc/hosts.equiv и в /etc/password

В обоих случаях /etc/password должен содержать элемент для эквивалента пользователя удаленной машины. Нельзя редактировать это файл, чтобы вставить элементы для эквивалента. Лучше использовать специальную утилиту, чтобы создать область пользователя и элементы в файле /etc/password для эквивалента пользователя.

Эти два метода создания эквивалента, описанные выше, имеют различные контексты. Если файл .rhosts используется в соответствующей области, тогда эквивалент учреждается только для этой области. Однако, если в файле /etc/hosts.equiv есть элемент и область для главной машины, тогда эта область содержит эквивалент пользователя для любых областей (за исключением корня). Таким образом, если элемент в файле /etc/hosts.equiv имеет только имя главной машины, тогда любой пользователь на этой машине получает эквивалент пользователя для всех локальных областей (за исключением корня). Элементы для .rhosts должны включать имя машины и имя области. Файл /etc/hosts.equiv выделяет области для системного имени только как обсуждалось ранее. Если есть элементы в файлах /etc/hosts.equiv и .rhosts для одной и той же машины или области, где работают несколько машин, тогда элемент из /etc/hosts.equiv определяет экстент для эквивалента пользователя.

Связи, имена и адреса

Для осуществления связи между вашей машиной и некоторой удаленной машиной, посредством глобальной сети, вы должны сначала создать связь в удаленной машине. TCP/IP предоставляет автоматическую установку связи с помощью нескольких программ, в основном telnet и ftp. Вы должны знать связи и давать команды, чтобы установить их. Как при вызове по телефону, вы должны при установке связи сначала знать, как достичь вашего абонента. Каждая главная машина в глобальной сети имеет уникальный адрес, по которому она может быть вызвана для установки связи. Т.к. сетевые адреса не всегда легко запомнить, сетевое программное обеспечение позволяет использование имен вместо адресов. Имя главной машины задается вашим системным администратором. Если вы не знаете имя главной машины, которую вы хотите использовать, спросите вашего системного администратора. Поскольку главные машины могут использоваться для различных целей, возможно существование нескольких имен (алиасов) для одного и того же адреса машины. Однако каждое имя соответствует одному адресу машины и свяжет вас с этой машиной в любое время ее использования.

Права доступа

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

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

ВИРТУАЛЬНЫЕ ТЕРМИНАЛЫ И УДАЛЕННАЯ РЕГИСТРАЦИЯ

Команда rlogin(TC) и ARPANET команда telnet(TC) обеспечивают выбор возможности виртуального терминала. Виртуальный терминал создается, когда вы используете вашу локальную машину для регистрации на удаленной машине. Впечатление такое, что ваш терминал логически подключен к удаленной машине. Переключение вашего терминала между UNIX-совместимыми машинами может быть таким же легким как печать имени машины, к которой вы хотите подключиться. Возможность виртуального терминала отличается от дистанционного выполнения команд тем, что пользователь может использовать программы, которые основаны на прямом доступе терминала, таких как vi(C). Эти команды используют терминал в режиме прямого доступа. Это значит, что чтение производится символ за символом, а не строка за строкой. Далее следует короткий обзор telnet и rlogin.

Команда telnet

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

Дистанционная регистрация при помощи rlogin

Вы можете использовать rlogin для регистрации на другой удаленной UNIX -совместимой машине. Для использования команды необходимо знать пароль на этой машине, на которой вы собираетесь зарегистрироваться. Однако, если вы уже пользователь эквивалента на удаленной машине, то вам не нужен пароль. rlogin команда может использоваться только на UNIX-совместимых машинах.

ПЕРЕДАЧА ФАЙЛОВ

Команда ftp позволяет вам манипулировать файлами на двух машинах одновременно. Используя ftp, вы можете проверять директории и перемещать один или множество файлов между системами. Эта программа разработана независимой от операционной системы. Дополнительное свойство ftp в том, что она позволяет анонимному пользователю, который не имеет ресурсов своей машины, расположить нужные файлы без пароля защитной области директория ftp. ftp не требует (или понимает) эквивалент пользователя. Команда копирования удаленных файлов rcp не требует эквивалента пользователя. Это специфическая UNIX команда и она может быть использована, если вы передаете файлы между UNIX-совместимыми машинами.

ВЫПОЛНЕНИЕ УДАЛЕННЫХ КОМАНД

Команда rcmd позволяет вам посылать команды к удаленным UNIX машинам для выполнения получать результаты назад. Вам нет необходимости регистрироваться на удаленных машинах, чтобы использовать rcmd; с этой машиной появляется канал связи. Эта команда полезна для создания дистрибутивных shell программ, которые выполняют команды на удаленных машинах посредством сети. Чтобы использовать rmcd, вы должны иметь эквивалент машины-адресата (машины, на которой вы пытаетесь выполнить команду). Эта команда может быть использована только с удаленными машинами, которые используют UNIX или UNIX-совместимую операционную систему. Команда rcmd передает свой стандартный ввод и вывод удаленно выполняемым командам и возвращает в исходную систему все, что является результатом работы удаленной команды, т.е. стандартный вывод и файл ошибок. Для прямого доступа вас должен быть файл /usr/hosts.

ВЫПОЛНЕНИЕ УДАЛЕННЫХ КОМАНД

ИСПОЛЬЗОВАНИЕ rcmd

Команда rcmd позволяет вам посылать команды к удаленным UNIX-совместимым машинам и получать результат их работы назад. Вам нет необходимости регистрироваться на удаленной машине, чтобы использовать rcmd. Эта команда полезна для создания дистрибутивных shell программ. Чтобы использовать rcmd, вы должны иметь эквивалент машины-адресата.

Машина-адресат это машина, на которой вы хотите выполнить команду.

Эта команда может быть использована только с удаленными машинами, которые используют UNIX или UNIX-совместимую операционную систему.

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

Для прямого доступа вас должен быть файл /usr/hosts.

Вызов rcmd

Команда rcmd взята из командного языка UNIX. Вы должны установить имя машины и одну или более команд для выполнения. Например:

# rcmd имя машины команда(ы)

В большинстве случаев вы можете пропустить rcmd, которое относится к командному языку и просто записать:

# имя машины команда(ы)

Для того, чтобы вы смогли использовать эту особенность, ваш системный администратор должен конфигурировать UNIX для доступа к удаленной машине без вызова rcmd. Ваш системный администратор может подсказать как конфигурирована ваша машина.

Опции rcmd

Существует две опции, которые вы можете специфицировать при вызове rcmd. Эти опции следующие:

-l пользователь Обычно, команда, которую вы специфицируете, выполняется на удаленной машине под вашим пользовательским именем. Эта опция позволяет вам выполнять команду под другим пользовательским именем. Например:

# rcmd имя машины -l tom команда

Используете ли вы свое имя или другое имя, вы должны получить разрешение на выполнение команды на удаленной машине. Администратор машины может подсказать, как сконфигурирована удаленная машина.

-n Эта опция защищает rcmd от посылки стандартного ввода в удаленную команду и вы от считывания стандартного ввода. Это делается с помощью /dev/null. Например:

# rcmd имя машины -n -l tom команда

Считывание означает чтение в буфер данных. Буферы команды rcmd выполняют стандартный ввод данных не взирая на то, читает ли их удаленная команда или нет.

Пример сеанса использования rcmd

Следующий пример показывает, как rcmd используется для выполнения who(C) команды на удаленной машине, называемой admin. Вывод располагается в файле на локальной машине посредством считывания стандартного вывода. В этом примере стандартный вывод направляется в файл /tmp/admin.who.

# rcmd admin who > /tmp/admin.who

Дистанционная печать

Команда rcmd может быть использована для дистанционной печати, как показано в следующем примере, который печатает файл, называемый templ на принтере системы, называемом systemx:

$ cat temp1 | rcmd systemx lp

ИСПОЛЬЗОВАНИЕ ДИСТАНЦИОННЫХ ТЕРМИНАЛОВ.

Этот раздел объясняет, как использовать две команды TCP/IP, которые обеспечивают способности виртуального терминала. "Виртуальный" означает, что физических связей с удаленными машинами нет. Тем не менее, команды сами создают эти физические связи между вашим терминалом и удаленной машиной. "Терминал" означает, что команды позволяют терминалу вашей машины действовать как терминал удаленной машины посредством сети. Команды виртуального терминала описываются следующими символами:

- telnet(TC)

- rlogin(TC)

Команда telnet обеспечивает виртуальному терминалу доступ к другим машинам глобальной сети. Используя telnet, вы можете зарегистрироваться на другой главной машине сети, к которой вы имеете разрешение, как будто вы пользователь этой машины. Как только вызвана telnet, ваш терминал подключается к удаленной машине и данные, которые проходят к этой машине. Ответы с удаленной машины изображаются на экране вашего терминала. Команда rlogin может использоваться вместо telnet, чтобы связаться с другими машинами в операционной системе UNIX. Команда rlogin предоставляет доступ виртуального терминала к другим машинам также, как операционная система UNIX. Для полной информации смотри раздел, озаглавленный "Команда rlogin" далее в этой главе.

СВЯЗЬ С ИСПОЛЬЗОВАНИЕМ telnet

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

Командный режим и режим ввода

Когда вы открываете telnet связь с удаленными машинами, вы находитесь в режиме ввода. Этот режим передает все символы, которые вы набираете, к удаленной машине и на вашем терминале появляются все данные, посланные вам удаленной машиной. Для прерывания существует специальный символ ( ^] ). Если вы его напечатали, то происходит переход telnet в командный режим. (Прерывание может быть осуществлено набором ] ).

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

Когда telnet в режиме ввода, то связь с удаленной машиной основана на некоторых опциях. Эти опции определяют, как будет осуществляться связь оперативных систем и компьютеров. Примером такой опции может быть какое "эхо" отражает символы, которые вы набираете, вашей машины или удаленной машины. Программа telnet и удаленная машина, которую вы выбрали, будут отвергать эти опции и устанавливать свои, совместимые с вашей машиной, при связи с удаленной машиной.

Вызов программы telnet

Программа telnet вызывается из оболочки UNIX с помощью команды telnet.

Вы можете специфицировать имя машины, с которой вы хотите связаться. Следующий пример показывает как выполнить связь с машиной admin:

telnet admin

Имя машины определяется вашим системным администратором. Вы можете узнать имена машин, разрешенных для вас, распечатав содержимое файла /etc/hosts. Когда вы определились с именем, вызывайте telnet. это установит связь и установит режим ввода. Вы можете также вызвать telnet без имени машины. Например:

telnet

В этом случае вы будете в командном режиме. Если вы не установили имя машины, вы должны установить связь с удаленной машиной, используя команду open из telnet программы. Основные детали даны в следующем разделе "Использование telnet команд".

Использование telnet команд

Вы можете вводить telnet команды, когда есть сообщение о командном режиме telnet:

telnet>

Если вы не набрали имя машины, то вы находитесь в командном режиме. Тоже самое вы увидите если введете в режиме ввода (^] ). Если вы перешли в командный режим из режима ввода, telnet остается в командном режиме после ввода каждой команды. Если вы используете open команду для установки связи с удаленной машиной, то telnet перейдет в режим ввода. Если вы перешли в командный режим из режима ввода, то telnet вернется в режим ввода после выполнения команды. Если вы использовали команду close, чтобы разорвать связь с удаленной машиной, telnet останется в командном режиме после отработки команды. Если вы использовали команду quit, telnet закрывается и вы вернетесь в программу, из которой вышли. Каждая команда в командном режиме должна следовать за Return. Программа telnet не воспримет команду, пока вы не нажмете Return. Если вы сделали ошибку при наборе команды, вы можете использовать команды редактирования erase (BKSP) или kill(Cancel), чтобы отредактировать символы, которые вы набрали. Однако, эти команды редактирования не работают в режиме ввода. Вместо них используются telnet send команды. Они обсуждаются дальше. При вводе команды вам нет необходимости вводить полное название команды. Нужно ввести количество символов, достаточное для идентификации команды.

TCP/IP. Далее дано описание telnet команд:

open Эта команда устанавливает telnet связь с удаленной машиной. Вам следует определить имя этой машины как опцию команды. Этот пример открывает telnet связь с машиной admin:

telnet> open admin

close Эта команда закрывает связь с удаленной машиной и останавливает работу telnet. Функционально это эквивалент команды quit.

quit Эта команда прекращает работу telnet программы. При этом происходит выход из программы. Эта команда закрывает связь с удаленной машиной, если она была активной.

z Эта команда задерживает работу telnet для контроля. В других системах команда предоставляет пользователю другую оболочку.

mode Далее следуют подкоманды и опции команды mode, чей синтаксис описан на страницах, описывающих telnet(TC):

mode [ line | character ]

line Удаленная машина запрашивает разрешения перейти в режим построчного считывания.

character Удаленная машина запрашивает разрешения перейти в режим посимвольного считывания.

display Эта команда отображает на экране все или некоторые из значений, установленные или измененные по set или toggle. (Смотри команды set и toggle далее).

send Эта команда задает одну или несколько специальных последовательностей символов для удаленной главной машины. Подкоманды и опции этой команды описаны полностью на страницах, описывающих telnet(TC):

send [ ao | ayt | bkr | ... ]

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

ayt Эта команда побуждает telnet послать запрос к удаленной машине о ее готовности к работе. Если она активна, то она сообщает об этом вам. Это сообщение может быть просто сигналом или текстом, который появляется на вашем экране. Это сообщение полезно, если удаленная машина занята и не может принять ваше сообщение, а вам нужно узнать, когда она освободится.

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

ec Эта команда, которую посылает telnet, удаляет символьное сообщение в удаленной машине. Эта команда имеет тоже действие, что и команда erase(BKSP) оперативной системы на вшей локальной машине. Т.к. на машинах используются разные операционные системы, вам следует использовать при связи с удаленной машиной команду ec, а не команду операционной системы. Вы можете использовать команду операционной системы, когда работаете в командном режиме, т.к. при этом нет связи с удаленной машиной.

el Эта команда посылает команду удаления строки к удаленной машине. Эта команда имеет тоже самое значение, что и команда операционной системы erase line. Т.к. на машинах используются разные операционные системы, вам следует использовать при связи с удаленной машиной манду el, а не команду операционной системы. Вы можете использовать команду операционной системы, когда работаете в командном режиме, т.к. при этом нет связи с удаленной машиной.

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

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

escape Эта команда посылает telnet спецсимвол.

nop Эта команда посылает команду telnet НОП для упорядочивания.

toggle Эта команда переключает различные признаки, которые управляют процессом. Признаки переключаются между TRUE и FALSE. Подкоманды и опции toggle команды полностью описаны описании telnet(TC):

toggle [ localchars | autoflush | ... ]

set Эта команда разрешает вам изменить telnet значения переменных. Подкоманды и опции set команды полностью описаны в описании telnet(TC):

set [ echo | escape | interrupt | ... ]

status Эта команда показывает вам состояние связи с удаленной машиной также как текущие опции и управляющий символ.

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

Несколько примеров работы

Ниже показаны два примера связи с машиной с именем "there". Они иллюстрируют разнообразные способы использования telnet.

Описание первого примера

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

"Trying..."

Это сообщение о том, что telnet приступает к установлению связи. Следующее сообщение появится, когда установится связь. Программа telnet выдаст текущий управляющий символ (статус опций не изображается).

Это свидетельство того, установлена связь с удаленной машиной, и машина выдает свое сообщение (промпт). Пользователь затем регистрируется в машине, которая будет его терминалом, используя такую же процедуру. Пользователь получает список директория на удаленной машине. Если работа завершена, пользователь набирает управляющий символ, и telnet переходит в командный режим и выдает промпт командного режима. Пользователь вводит команду quit, и telnet прекращает связь с удаленной машиной и возвращается в операционную систему своей машины.

+--------------------------------------------------------------------------------+

| laiter$ telnet there |

| Trying 192.9.200.101 ... |

| Connected to there. |

| Escape character is ']'. |

| |

| System V.3.2 UNIX (there.Lachman.COM) |

| |

| login: stevea |

| Password: |

| UNIX System V/386 Release 3.2 |

| there |

| Copyright (C) 1984,1986,1987,1988 AT&T |

| Copyright (C) 1987,1988 Microsoft Corp. |

| All Rights Reserved |

| Login last used: Mon Feb 27 17:14:18 1989 |

| there$ ls -xF |

| bell/ blot/ connect.h connection.c dhry/ |

| hi* hi+.c hi.c hin* hin.c |

| hn* hn.c indent/ intel/ ip_icmp.h |

| maketd+/ linger* linger.c mailstats.c+ maketd/ |

| ot2.c maxmin ot* ot.c ot2* |

| ripsoak* ping+* ping.c profiler/ gt/ |

| t* ripsoak.c sr.sh* st.c sw/ |

| there$ t.c tcp/ tcp.sh* tcp0227/ |

| ^] |

| telnet>quit |

| Connection closed. |

| laiter$ |

+--------------------------------------------------------------------------------+

Описание примера 2

Этот пример иллюстрирует альтернативный способ регистрации в машине и выхода из связи с помощью telnet. Программа telnet вызывается без имени машины и входит в командный режим. Пользователь вводит опцию status и получает ответ, что связи с машиной нет. Затем пользователь использует команду telnet open и устанавливает связь в режиме ввода Пользователь получает сообщение о регистрации от удаленной машины. Затем пользователь регистрируется в удаленной машине, которая будет его терминалом, используя ту же процедуру.

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

+---------------------------------------------------------------------+

| # telnet |

| telnet> status |

| No Connection |

| Escape character is '^]'

| local echo is off |

| telnet> open there |

| Trying ... |

| Connected to there |

| Escape character is '^]' |

| System V3 UNIX (there) |

| login: mary |

| TERM = (ansi) |

| $ ls |

| passwd |

| volcopy |

| $ ^D |

| Connection closed by foreign host. |

| |

+---------------------------------------------------------------------+

КОМАНДА rlogin

Команда rlogin(TC) переносит вас в оболочку удаленной машины. Программа rlogin похожа на команду telnet, но она применима только для UNIX совместимых машин. Команда rlogin разрешает вам доступ к тем же самым командам UNIX на удаленной машине, что и telnet. Однако, команда rlogin удобнее, чем telnet, если вы однажды зарегистрировались на удаленной машине, вы будете иметь впечатление работы на своей собственной машине. Вам нет необходимости знать специальные команды, используемые в telnet. Переменная TERM в удаленной машине устанавливается в то значение, что установлено в вашей локальной машине. Однажды вызванная программа rlogin обрабатывает всей данные, что вы ввели в удаленную машину и все выходные данные той машины отображаются на вашем экране.

Вызов программы rlogin

Эта программа вызывается из UNIX оболочки. Вы должны определить имя удаленной машины, как показано в примере, который показывает регистрацию в машине admin:

rlogin admin

В некоторых случаях вы можете пропустить слово rlogin и просто написать имя удаленной машины. Например: admin. Это возможно, когда ваш системный администратор конфигурировал UNIX для доступа к удаленной машине без rlogin. Вы должны иметь файл /usr/hosts в вашем загрузочном файле. Системный администратор может подсказать, как конфигурирована система.

Выход из программы rlogin

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

Опции rlogin

Вы можете задавать три основные опции, когда вызываете rlogin. Эти опции следующие:

-ec Опция -e заставляет rlogin использовать символ "c" вместо управляющего символа (~.) для управлением выходом из rlogin. Например:

rlogin admin -e!

Восклицательный знак означает управляющий символ rlogin.

-8 Опция -8 вынуждает rlogin вернуть удаленную информацию и послать 8 бит символов в удаленный конец.

Когда вы используете свое пользовательское имя или другое пользовательское имя, вы должны установить эквивалент пользователя для себя на удаленной машине, на которой вы собираетесь регистрироваться. Системный администратор удаленной машины должен подсказать вам как конфигурирована машина. (Эквивалент пользователя описан в главе 2).

Использование tidle в тексте

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

ПЕРЕДАЧА ФАЙЛОВ

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

- Когда и зачем использовать эти команды

- Как вызывать и выходить из этих программ

- Как использовать опции этих команд

- Примеры

Команда ftp(TC) делает возможным передачу файла между вашей машиной и другими машинами глобальной сети. Это интерактивная программа, которая позволяет вам вводить различные команды для перемещения и получения файла. Кроме того, ftp позволяет вам проверять и модифицировать файловые системы машин глобальной сети. Когда вы вызовите ftp, вы будете находиться в интерактивном режиме, пока не выйдите из ftp и не вернетесь в программу, из которой вышли. Программа применяется ftp в широком диапазоне операционных систем. Когда вы работаете в операционной системе UNIX, то вместо ftp команды может быть использована rcp команда, которая работает только в этой операционной системе.

РАБОТА С ftp

. Эта программа позволяет вам иметь несколько связей одновременно, хотя вы можете давать команды, которые воздействуют только на одну связь. Многомашинная связь позволяет вам связаться с несколькими машинами за один сеанс работы ftp. Вам нет необходимости вновь регистрироваться на другой машине, когда вы хотите сменить машину для связи. Связь, которая используется в данный момент, называется текущей связью.

Виды записи файла для передачи в ftp

Программа ftp позволяет использовать два вида записи ASCII или двоичный файл. Используйте ASCII для текстовых файлов. Двоичный вид используется для двоичных данных, которые должны представлять собой непрерывную последовательность бит. Для связи между UNIX машинами в большинстве случаев может быть использован ASCII код (он задается по умолчанию). Двоичный вид может быть использован для некоторых специальных файлов, например программные объектные модули, если вы используете машины с операционной системой отличной от UNIX.

Условия присвоения имени файлу в ftp

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

"| ls -ls"

Символ (|) может быть внутри и вне кавычек.

Вызов ftp

Чтобы вызвать ftp из оболочки UNIX, введите команду ftp. Когда команда это выполнено, на вашем экране появится приглашение этой команды. Он выглядит следующим образом:

ftp>

Вы можете указать имя машины, с которой хотите связаться, хотя это необязательно. Следующий пример показывает как записывается имя машины admin:

$ ftp admin

Машинное имя устанавливается вашим системным администратором. До использования ftp вы можете проверить разрешено ли это имя для вас, распечатав файл /etc/hosts. Когда вы пишете имя машины во время вызова ftp, программа устанавливает машинную связь с этой машиной и разрешает вам передачу файлов. Это эквивалентно использованию команды ftp open для установления связи с машиной, которую вы назвали. Вы можете также вызвать ftp без имени машины, например:

$ ftp

Если вы не установили имя машины при вызове ftp, вы должны открыть связь с этой машиной в ftp. Это делается используя ftp open команду до того как вы начали передавать файлы.

Ограничение для ftp команд

В дополнение к командам, которые используют стандартные протокольные функции ftp. TCP/IP предоставляет несколько команд, которые используют функции опций ftp. Такие команды следует использовать только для связи с машинами, работающими в UNIX или UNIX совместимых системах. Команды, чье использование будет описано позже в этой главе, имеют определенные ограничения. Когда происходит коммуникация с удаленной машиной, которая не использует UNIX, вам следует спросить системного администратора поддерживается ли ftp в этой машине до ее использования. Некоторые ftp поддерживают не все опции команд. Программа ftp может предоставить список поддерживаемых команд. Для получения такой информации нужно использовать команду ftp remotehelp после установления связи с удаленной машиной. Описание команд ftp.

Описание команд ftp

Когда на экране появляется приглашение ftp, вы можете вводить одну из команд, описанных ниже. После выполнения команды снова появится приглашение ftp. В зависимости от того какой режим установлен - режим многословный или отладочный могут появится дополнительные сообщения. После каждой команды нужно нажимать Return. Выполнение команды не начнется, пока вы не нажмете Return. Если вы сделали ошибку при наборе команды, вы можете использовать системную команду построчного редактирования erase(BKSP) или команду символьного редактирования kill(Cancel).

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

!

Эта команда задерживает ftp и вызывает командный язык (shell) на локальной машине. Любой(ые) символ(ы) после восклицательного знака воспринимаются и выполняются как shell команды. Затем можно вернуться в ftp, выйдя из shell. Все ftp опции и связанные удаленные машины возвращаются в тоже самое состояние, которое было до появления этой команды. Если команда shell напечатана в той же строке, где и !, то выполняется только эта команда. После выполнения команды программа ftp возвращается в командный режим.

append

Команда append заставляет ftp добавлять содержимое локального файла в конец файла удаленной машины, скоторой вы соединены в данный момент. Когда вы вызываете эту команду, вы можете указать какой файл к какому добавить, например:

ftp> append имя локального файла имя файла удаленной машины

В другом случае вы можете использовать только имя команды ftp, а затем получить запрос об имени файлов, например:

ftp> append

(local-file) имя локального файла

(remote-file) имя файла удаленной машины

Эту команду можно использовать только с теми машинами, что используют UNIX систему или с UNIX совместимыми машинами.

ascii

Эта команда побуждает ftp преобразовывать файлы в ASCII код. (По умолчанию код всегда ASCII).

bell

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

binary

Эта команда побуждает ftp передавать файл в двоичном коде.

bye

По этой команде осуществляется выход из ftp. Эта команда закрывает все открытые связи.

cd

По этой команде имя директория на удаленной машине заменяется на новое. Вы можете записать новое имя, когда вызываете команду, как показано в примере:

ftp > cd /usr/bin

В противном случае вы можете использовать только имя команды ftp, тогда машина запросит имя нового директория, например:

ftp> cd

(remote-directory) /usr/bin

close

По этой команде закрывается текущая связь.

debug

Эта команда включает и выключает многословный режим. Если режим включается, то об этом появляется сообщение на вашем дисплее, при выключении сообщений нет.

delete

По этой команде удаляется файл в удаленной машине, к которой вы подключены в данный момент. Вы можете указать имя файла, который нужно удалить, при вызове ftp команды:

ftp> delete имя файла для удаления

Если вам больше нравится, то вы можете не указывать имя при вызове команды ftp. Тогда машина вас запросит об имени, например:

ftp> delete

(remote-file) имя файла для удаления

dir

Эта команда выдаст вам детальный список директория на удаленной машине, к которой вы подключены.(Сравните с опцией ls, данной ниже). Вы можете задать имя директория, который нужно распечатать, при вызове команды ftp. Например:

ftp> dir /usr/bin

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

ftp> dir /usr/bin printfile

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

ftp> dir . printfile

где "." означает текущий директорий.

form

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

get

Эта команда копирует файл из удаленной машины, к которой вы в данный момент подсоединены. Этот файл копируется в вашу машину (Используйте команду mget для копирования нескольких файлов одновременно). Когда вы вызываете эту команду, вы можете указать имя файла на удаленной машине и имя в вашей машине, в который вы скопируете файл. Например:

ftp> get имя файла удаленной машины имя файла вашей машины

Если вы просто укажете имя файла удаленной машины, который нужно скопировать, то файл на вашей машине будет иметь тоже самое имя. Пример:

ftp> get имя удаленной машины

Вы можете записать только команду ftp get. Тогда программа ftp запросит вас об имени файла,например:

ftp> get

(remote-file) имя файла удаленной машины

(local-file) имя файла вашей машины

glob

Эта команда заставляет ftp запрещать расширение имен файлов UNIX, такое универсальное, как '* '. Эта команда служит и для запрещения и для разрешения расширения таким образом что, если задать ее повторно, то расширение вновь разрешено. После разрешения расширения расширения ftp ко всем именам файлов добавит расширение при выводе списка файлов.

hash

Эта команда побуждает ftp выдавать на экране символ '# ' после каждого блока данных, который посылается удаленной машиной. Размер блоков данных может быть различным в зависимости от версии программного обеспечения. Для того, чтобы увидеть текущее значение, с командой ftp используйте многословный режим. Эта команда включает и выключает выдачу символа '#' на экран ее при повторном наборе.

help

Эта команда выдает на экран информацию о работе ftp. Если после help задать имя команды, то появится информация об этой команде. Если набрать просто help, то появится информация обо всех командах ftp.

lcd

Эта команда изменяет рабочий директорий, используемый ftp, на вашей машине. Вы можете задать имя директория, который вам нужен как рабочий, например:

ftp> lcd /ysr/deb

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

ls

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

ftp> ls /usr/bin

Если вы не задали имя, будет распечатан текущий директорий. Можно задать, чтобы результаты выполнения команды были помещены в файл до появления их на дисплее. Это делается ftp, если указать имя файла на вашей машине куда следует поместить листинг директория, например:

ftp> ls /usr/bin printfile

Имя директория нужно задать до вывода файла (здесь printfile). Например, если вы хотите распечатать текущий директорий в файл с именем printfile:

ftp> ls . printfile

где "." ставится, чтобы подчеркнуть, что директорий текущий.

mdelete

Эта команда удаляет список файлов на удаленной машине, с которой вы связаны в данный момент. Вы можете задать имена файлов для удаления при вызове команды. Например:

ftp> mdelete имя 1файла удаленной машины имя 2файла...

В противном случае вы можете просто использовать имя команды. Программа ftp запросит вас об имени(ах):

ftp> mdelete

(remote-files) имя 1файла 2файла...

mdir

По этой команде выдается список листинг директория удаленной машины и результат помещается в файл вашей машины. Вы можете задать список файлов удаленной машины и имя файла вашей машины, куда поместить результат при вызове команды. Например:

ftp> mdir имя 1файла удаленной машины... printfile

(Заметьте, что последее имя это имя файла вашей машины printfile). Возможно просто использовать имя команды. Тогда программа ftp запросит у вас имя файлов, например:

ftp> mdir

(remote-files) имя 1файла удаленной машины...printfile

local-file printfile?y

mget

Эта команда копирования одного или более файлов с удаленной машины, к которой вы подключены в данный момент на вашу машину. Файлы после копирования будут иметь теже имена. Вы можете указать список файлов для копирования:

ftp> mget имя 1файла удаленной машины имя 2файла...

Если вы не задали имена файлов при вызове команды, программа ftp запросит вас о них:

ftp> mget

(remote-files) имя 1файла удаленной машины имя 2файла ...

mkdir

Эта команда создает директорий на удаленной машине, к которой вы в данный момент подключаетесь. Вы можете задать им директория при вызове команды, например:

ftp> mkdir /u/mydir

Если вы не задали имя, ftp запросит вас о нем, например:

ftp> mkdir

(directory-name) имя директория

Эта команда поддерживается не всегда.

mls

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

ftp> mls имя 1файла удаленной машины ...printfile

Вы можете не указывать имена при вызове команды, и тогда прграмма запросит вас о них:

ftp> mls

(remote-files) имя 1файла удаленной машины...printfile

local-file printfile?y

mput

Эта команда копирует один или более файлов с вашей машины в удаленную машину, с которой вы связаны в данный момент. На удаленной машине файлы будут иметь теже имена. Вы можете задать список фалов при вызове команды,например:

ftp> mput 1файл вашей машины 2файл вашей машины...

Если вы не указали имена, программа ftp вас об этом запросит:

ftp> mput

(local-files) имя 1файла вашей машины имя 2файла...

nmap

Используйте эту команду для установки и отмены механизма преобразования имен файлов. Эта команда полезна при связи с UNIX несовместимыми машинами и в которых используется другой способ именования файлов. Переименовывание файлов локальной машины производится с помощью get и mget команд, а удаленной машины с помощью put и mput команд. Команда mput комплексная.

ntrans

Используйте эту команду для включения и выключения механизма трансляции символов имени файла. Эта команда полезна при связи с UNIX несовместимой удаленной машиной, где применяется другой способ именования файлов. Трансляция имен файлов локальной машины производится с помощью get и mget команд, а удаленной машины с помощью put и mput команд. Команда mtrans комплексная.

open

Эта команда устанавливает связь с удаленной машиной, которая предполагается для передачи файлов. При вызове команды вы можете указать имя машины, например:

ftp> open admin

Если имя не указано, программа запросит его:

ftp> open

(to) имя машины

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

prompt

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

put

Эта команда перемещает файл из вашей машины в удаленную машину, к которой вы в данный момент подключены.(Для передачи нескольких файлов одновременно используйте команду mput). Вы можете задать имя файла вашей машины и имя файла удаленной машины при вызове команды ftp,пример:

ftp> put имя вашего файла имя файла удаленной машины

или

ftp> put имя вашего файла


Если вы не указали имя файлов(а), то программа вас о них запросит, например:

ftp> put

(local-file) имя вашего файла

(remote-file) имя файла удаленной машины

Если вы не укажете имя файла удаленной машины, то команда put создаст файл на удаленной машине под тем же именем, что и на вашей машине.

pwd

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

quit

Команда аналогична команде bye, о которой говорилось выше.

quote

Команда заставляет ftp посылать параметры, которые вы вводите в машину, посылать к удаленной машине для выполнения. Параметры это ftp команды и другие параметры. Те команды, что ftp поддерживает, могут быть отображены на экране с помощью команды remotehelp. Вы можете ввести эту команду при вызове программы ftp, например:

ftp> quote NLST

Если вы указали только имя команды, ftp спросит вас о командной строке, которую нужно использовать, например:

ftp> quote

(command-line to send) NLST

Эту команду следует использовать только по совету вашего системного администратора.

recv

Эта команда аналогична команде get, описанной выше.

remotehelp

Эта команда запрашивает помощь ftp на удаленной машине, с которой вы связаны в данный момент. Эта информация сообщает о том какие команды поддерживает удаленная машина.

rename

Эта команда переиновывает файл на удаленной машине, с которой вы связаны в текущий момент. При вызове команды вы можете использовать имена файлов, напрмер:

ftp> rename имя 1файла имя 2файла

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

ftp> rename

(from-name) имя 1файла

(to-name) имя 2файла

mdir

Эта команда удаляет директорий на удаленной машине, с которой вы связаны в данный момент. Вы можете задать имя директория, который следует удалить, при вызове команды, например:

ftp> rmdir /u/mydir

или вы можете не задавать имя при вызове команды, и машина запросит вас о нем:

ftp> rmdir

(directory-name) /u/mydir

Эта команда не всегда поддерживается.

send

Эта команда аналогична команде put, описанной выше.

sendport

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

status

Это команда заставляет ftp изображать свой текущий статус на вашем терминале. Статус включает режимы, которые выбраны командами bell,form,hash,glob,port,type.

type

Эта команда устанавливает в каком виде передается файл. Допустимы коды ASCII и двоичный. Эта команда аналогична командам ascii и binary. Если вы не указали тип при вызове команды, то устанавливается ASCII.

trace

Эта команда заставляет ftp разрешать пакетную трассировку. Эта команда включается и отключается ее повторным набором. Эту команду следует использовать только по совету вашего системного администратора.

user

Эта команда позволяет вам идентифицировать самого себя на удаленной машине при установлении связи. Эта авторегистра- ция разрешена с опцией -n при вызове ftp. В этом случае данная команда не нужна.(Смотри раздел "Использование файла .netrc для автоматической регистрации" ранее в этой главе). Если автоматическая регистрация запрещена, то используйте эту команду для собственной регистрации и идентификации на удаленной машине. Удаленной машине нужно сообщить три вида информации кто вы: регистрационное имя, пароль и имя ресурса. Имя пользователя требуется для всех машин, пароль и имя ресурса требуются только для некоторых систем. Ваш системный администратор должен сказать что требуется для ваших машин. Он же должен подсказать вам правильное имя, пароль и имя ресурса, который вы хотите использовать. Вы можете ввести всю эту информацию при вызове команды user, например:

ftp> user mike cat myaccount

Вы можете не указывать всю эту информацию при вызове команды. Тогда программа вас о ней запросит, например:

ftp> user

(usename) mike(имя пользователя)

password:

Account: myaccount(имя ресурса)

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

verbose

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

?

Другое название команды help.

Примеры работы ftp

Ниже даны три примера. В этих примерах используются три машины, локальная машина с именем HERE и удаленная машина с именем THERE.

Описание 1 примера

Этот пример показывает использование ftp для посылки и приема файлов. Команда ftp вызывается с именем главной машины и происходит автоматическая регистрация пользователя на другой машине, т.к. не используется опция -n.

Многословный режим запрещен использованием команды verbose. Пользователь затем изменяет рабочий директорий на удаленной машине на /etc директорий. Т.к. нет опции -d и есть команда verbose, многословный режим запрещен и никаких сообщений, кроме промпта ftp, не появляется.

Пользователь, используя команду ls, получает абревиатурный листинг директория /etc машины THERE. команда ftp выдает три файла в каталоге /etc. Команда get passwd затем копирует файл passwd с машины THERE в машину HERE. Файл по имени passwd создается в машине HERE, если было указано имя машины.

Команда put используется, чтобы скопировать файл по имени wall из текущего рабочего директория локальной машины(HERE) в директорий удаленной машины (THERE) /etc. Этот файл копируется стем же именем, т.к. свое имя не было указано. После окончания передачи, появляется листинг /etc, в котором уже четыре файла, включая wall, который был только что скопирован с машины HERE.

Затем используется команда bye, чтобы вернуться в оболочку операционной системы на локальной машине HERE.

$ ftp THERE

Connected to THERE

220 THERE FTP server (Version 4.160 #1) ready

Name (THERE:stevea):

Password (THERE:stevea):

331 Password required for stevea.

230 User stevea logged in.

ftp> verbose

Verbose mode off.

ftp> cd /etc

ftp> ls

passwd

volcopy

whodo

ftp> get paswd

ftp>put wall

ftp> ls

passwd

volcopy

wall

whodo

ftp> bye

$

Описание 2 примера

Этот пример иллюстрирует экранные изображения, которые можно получить, используя несколько опций ftp. После вызова ftp c именем удаленной главной машины, пользователь вызывает команду, которая позволит вернуть режим отладки. После этого команда ftp выдает сообщения на экран, что свидетельствует о разрешении данной опции. Пользователь затем заменяет рабочий директорий на удаленной машине на /etc. Т.к. присутствуют отладочный и многословный режимы, на экране будут появляться сообщения о посылке команд к удаленной машине (--> CWD/etc) и ответы, полученные с удаленной машины (250 CWD command successful - команда прошла успешно). Заметьте, что cd команда, которая имеет такуюже форму, как команда изменения директория в UNIX, посылается в виде CDW команды (изменение рабочего директория на удаленной машине). Эта команда применяется ftp вместо cd, чтобы она работала независимо от системной команды.

Следом за cd командой пользователь ставит pwd команду, чтобы подтвердить изменение рабочего директория. Команды ftp будут изображать на вашем экране сообщения, посылаемые между вашей (локальной) и удаленной машиной, а затем появится текущий рабочий директорий на удаленной машине. Затем пользователь набирает hash опцию, на что появляется сообщение, что данная опция разрешена. Команда get wall myfile приказывает ftp восстановить файл wall и поместить его в файл myfile в текущем рабочем директории на вашей машине. Команда ftp выдаст сообщения, посылаемые между локальной и удаленной машинами о начале передачи и затем печатает hash метку для каждого блока, полученной информации. После завершения передачи на экране появляется статистика, в которой время, потребовавшееся для передачи, и дата передачи файла. После получения файла пользователь закрывает связь командой close и выходит из ftp командой bye.

$ ftp THERE

Connected to THERE

220 THERE FTP server (Version 4.160 #1) ready

Name (THERE:stevea):

Password (THERE:stevea):

331 Password required for stevea.

ftp> debug

Debugging on (debug = 1)

ftp> cd /etc

---> CDW /etc

200 CDW command okay.

ftp> pwd

---> PWD

251

ftp> hash

Hash mark printing on (1024 bytes/hash mark).

ftp> get wall mefile

---> PORT 3,20,0,2,4,51

200 PORT command okay.

---> RETR wall

150 Opening data connection for wall (3.20.0.2.1075)(24384bytes

#######################.

226 Transfer complete.

24550 bytes received in 12.00 seconds (2 Kbytes/s)

ftp> close

---> QUIT

221 Goodbye.

ftp> bye

$

КОМАНДА rcp

Другая команда, позволяющая вам копировать файлы между двумя UNIX совместимыми машинами в глобальной сети - это rcp. Эта команда аналогична ftp, но имеет синтаксис более похожий на команду UNIX cp. Эту команду можно использовать только с машинами, имеющими операционную систему UNIX или совместимую с UNIX.

Вызов rcp

Программа rcp вызывается из оболочки UNIX. Вы должны указать имя файла для копирования и куда его нужно скопировать. Заметьте, что rcp аналогична cp. Вы можете использовать эту программу для копирования файла из своей машины в удаленную или наоборот. Следующий пример показывает как файл по имени remotefile c машины admit был скопирован в файл localfile на вашей машине (локальной машине). Как показано имена файлов соответствуют условностям UNIX. Имена файлов могут иметь одну из трех форм, где имя файла означает файл или директорий. Эти формы следующие:

- user@machine:filename

- machine:filename

- filename

где:

machine имя машины, которая содержит или будет содержать файл. Если имя файла не определено, то ваша локальная машина присваивает его себе.

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

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

Если вы указали только имя директория, доступного rcp командам, то файл(ы), который(е) вы указали для копирования, то файл(ы) копируется в этот директорий с тем же именем.

Опции rcp

При вызове команды вы можете указать следующие опции:

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

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

Примеры

В следующих примерах используются две удаленные машины сети по имени THERE-C и THERE-C1.

Первый пример показывает копирование файла по имени list из текущего директория пользователя в домашний директорий пользователя на машине THERE-C:

$ rcp list THERE-C:list

Во втором примере копируется директорий c иерархией /net/src на локальной машине в дерево корневого каталога src в домашнем директории на THERE-C:

$ rcp -r /net/src THERE-C:src

В третьем примере показано как пользователь копирует файл list из домашнего директория пользователя по имени mike на THERE-C в директорий /usr/tmp на THERE-C1. Копия на THERE-C1 принадлежит пользователю по имени deb.

$ rcp mike@THERE-C:list deb@THERE-C1:/usr/tmp

РЕАЛИЗАЦИЯ ПРОТОКОЛА TCP/IP В ОС UNIX