СЕТЕВЫЕ СЛУЖБЫ INTERNET

Крутиков М. П., Слок Е. А.


1 Имена и адреса машин в сети Internet

Для идентификации машин в сети Internet используются два способа:

  1. Доменное имя машины (хоста), например: vasya или vms.cuny.edu
  2. Интернетовский адрес машины ( IP-address ), например: 194.12.96.11

Первичным способом адресации является способ 2, причем IP-адрес машины является уникальным для всей глобальной сети Internet (они выдаются специальной службой сети, которая и обеспечивает уникальность). Далее, каждая машина имеет свое имя. Узнать имя вашей машины проще всего выдав команду hostname. Ответом будет имя машины. Имя представляет собой либо простое слово, состоящее из не более чем восьми букв (пример: vasya), или ``доменное" имя, состоящее из слов-доменов, разделенных точками (пример: vasya.cuny.edu).

Соответствие между доменным именем и интернетовским адресом машины задается в специальном файле /etc/hosts, который имеет примерно такую структуру:


# file: /etc/hosts

#

#

#

127.0.0.1 loopback   # local host

#

#

194.12.96.11  vasya   # local host

194.12.96.12  sasha   # remote host

194.12.96.13  hydra   # remote host

194.12.96.15  hy.cuny.edu   # remote host

Итак, если вам требуется указать адрес машины вы вольны оперировать любым из способов адресации. Если вы пользуетесь логическим именем, то машина автоматически преобразует его в IP-формат, пользуясь информацией из /etc/hosts. Отметим следующее важное различие между способами адресации: если вы знаете IP-адрес удаленной машины, то компьютер попытается установить соединение с этим компьютером независимо от того есть такой адрес в /etc/hosts или нет (технически это делается с помощью ``широковещательного" запроса по всей сети). Если вы пользуетесь логическим именем, то оно должно быть описано в /etc/hosts. Из этого правила есть одно исключение: если ваш компьютер обслуживается системой DNS (Domain Name Service), то запрос на ``расшифровку" адреса будет передан DNS-серверу (который, в свою очередь может передать запрос серверу высшего уровня). Для того, чтобы сработала служба DNS необходимо, чтобы логический адрес имел доменную форму (пример: hy.cuny.edu). Такая система адресации также является уникальной, поскольку полное логическое имя машины образуется из имени локального хоста и имени домена, в котором находится данный хост. Например hy.cuny.edu есть машина с именем hy в домене cuny.edu Нью-Йоркского университета. Таким образом, логическая доменная адресация образует иерархическую структуру, обеспечивающую уникальность каждого такого адреса.

Команды для работы в сети делятся на две группы: утилиты сети DARPA и Берклевские утилиты (которые также называют r -командами). Сие деление вызвано чисто историческими причинами и по функциональным возможностям обе группы команд примерно эквивалентны. Дело в том, что первая группа утилит была создана разработчиками американской военной сети DARPA (из которой со временем и образовалась глобальная сеть Internet). Впоследствии, когда сеть ARPA была передана университетским организациям США, эти утилиты вошли в стандартную поставку сетевого мат. обеспечения TCP/IP. Утилиты второй группы созданы разработчиками самой операционной системы в университете Беркли и могут отсутствовать в других версиях операционных систем.

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

2 Утилиты DARPA

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

2.1 telnet

Команда telnet позволяет вам ``войти" в терминальный сеанс работы с удаленным компьютером. Формат команды:

telnet [ remote_host ]

где remote_host представляет собой адрес удаленной машины. Пример:

telnet aries

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

Имя удаленной машины в командной строке telnet'а является необязательным параметром. Введя команду telnet без параметров вы немедленно получите приглашение telnet> и теперь, пользуясь командами самого telnet'а вы можете установить соединение с удаленной машиной или настроить параметры telnet'а. Наиболее полезной командой telnet'а для начинающих пользователей является команда ``?", выдающая краткую справку по командам telnet'а. Пример работы с командами telnet'а:


% telnet

telnet>  ?

Commands may be abbreviated.  Commands are:

close    close current connection

display  display operating parameters

mode     try to enter line-by-line or character-at-a-time mode

open     connect to a site

quit     exit telnet

send     transmit special characters ('send ?' for more)

set      set operating parameters ('set ?' for more)

unset    unset operating parameters ('unset ?' for more)

status   print status information

toggle   toggle operating parameters ('toggle ?' for more)

slc      change state of special charaters ('slc ?' for more)

z        suspend telnet

!        invoke a subshell

?        print help information

telnet>  quit

%

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

Более подробную информацию о формате и назначении команд telnet'а вы можете получить дав следующую команду на приглашение telnet'а:

telnet> ? command

где command - имя команды по которой вы хотите получить подробную справку.

2.2 ftp

Команда ftp позволяет переносить файлы с локального компьютера на удаленный и обратно. Формат команды:

ftp [ remote_host ]

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


ftp>  ?

Commands may be abbreviated.  Commands are:

!        delete     mdelete  proxy      runique

$        debug      mdir     sendport   send

account  dir        mget     put        size

append   disconnect mkdir    pwd        status

ascii    form       mls      quit       struct

bell     get        mode     quote      system

binary   glob       modtime  recv       sunique

bye      hash       mput     remotehelp tenex

case     help       nmap     rstatus    type

cd       image      nlist    rhelp      user

cdup     lcd        ntrans   rename     verbose

close    ls         open     reset      ?

cr       macdef     prompt   rmdir      bsize

ftp>  quit

%

3 Берклевские утилиты сетевой коммуникации

В данной главе будет кратко описаны команды, созданные для ``общения" между собой UNIX-машин. В их число входят: rlogin, rcp, rsh, rwho, rdist, ruptime.

3.1 rlogin

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

Формат команды:

rlogin hostname

где hostname это логическое имя удаленной машины.( Отметим, что ВСЕГДА вместо логических номеров машины вы можете использовать IP-адрес.) Например,

rlogin aries

Если вы имеете ``прозрачный" (т.е. не требующий пароля) доступ к машине aries с данной локальной машины, вы получите приглашение shell-оболочки. В противном случае, вам придется вводить пароль входа на машину aries . После получения приглашения вы работаете на удаленной машине. Полезно проверить текущее имя машины командой hostname .

Команда rlogin может применяться последовательно, что дает возможность входить на удаленную машину через ряд промежуточных. Так, предположим, что между вашей машиной и машиной aries нет прямого соединения. Тогда команда rlogin aries , естественно, не будет выполнена успешно. Однако если вы имеете соединение, скажем, с машиной hydra , и знаете, что эта с этой машины доступна aries , вы последовательно выполняете две команды rlogin :

rlogin hydra и

rlogin aries

(по ходу дела вводя пароли)

Выход из сетевого соединения с удаленной машиной осуществляется командой exit . Отметим, что в последнем примере после выполнения команды exit вы окажетесь в операционной среде машины hydra. И чтобы перейти на локальную машину вам придется ввести еще одну команду exit . Более простой способ закрыть все сетевые соединения и вернуться на локальную машину-это ввести последовательность `` ~. ''. Последовательность `` Ctrl-Z '' приостанавливает работу на удаленной машине и позволяет оказаться на командном уровне вашей локальной машины. Команда fg возобновляет работу на удаленной машине.

Если вы выполняете rlogin на удаленную машину, в которой у вас нет home -директории, то система выведет на экран сообщение об ошибке и назначит вам, по умолчанию, home-директорию " / ".

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

rlogin aries -l jones .

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

unknown host данная удаленная машина не определена в базе данных для имен host'ов

Connection refused удаленная машина существует в базе данных host имен, но она посылает сообщение, что отказывается от связи

Network unreachable нет маршрутной карты для данной удаленной машины

Connection timed out удаленная машина не отвечает на требование связаться, это сообщение обычно указывает на то, что удаленная машина выключена

3.2 rcp

Команда rcp копирует файлы в или из других систем, которые поддерживаются BSD-сетью. Доступ к файлам на удаленной системе контролируются тем же способом, что и при использовании команды rlogin . Использовать rcp вы сможете в том случае, если у вас есть разрешение использовать rlogin для связи с удаленной машиной без подтверждения пароля.

Чтобы скопировать файл groucho из вашей home -директории удаленной машины harpo в локальный файл chico , вы должны ввести следующую командную последовательность:

rcp harpo:groucho chico

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

rcp chico harpo:groucho

Можно скопировать сразу всю директорию, указав опцию -r . Команда

rcp -r tuna_fish harpo:big_store

скопирует содержимое локальной директории tuna_fish в директорию с именем big_store на удаленной машине harpo . При этом, если такой директории на удаленной машине не существует, то она создастся. Можно копировать файлы, используя шаблон. Например вы хотите скопировать все фортрановские программы из локальной директории в директорию на удаленной машине harpo :

rcp *.f harpo:fortran_dir

Чтобы скопировать все фортрановские программы из директории fortran_dir на удаленной машине harpo в локальную директорию local_dir , нужно ввести:

rcp harpo:fortran_dir/\*.f local_dir

Если же имя host а и имена файлов заключить в кавычки, то тогда не нужно использовать символа \\everb : \bverb rcp 'harpo:fortran_dir/*.f' local_dir

Если вы работаете на локальной машине aries под пользовательским именем jones и хотите скопировать файл chico в файл group на удаленной машине harpo , на которой вы работаете под именем boby (т.е. имена пользователей отличаются), то вам необходимо ввести следующую команду:

rcp chico boby@harpo:group

3.3 rsh

Команда rsh используется для выполнения команд через сеть. Например, вы хотите скомпилировать фортрановскую программу cad.f на удаленной машине gemini . Для этого введите

rsh gemini fc cad.f

Если вы используете другое login имя (например, boby ) на удаленной машине, то используйте опцию -l также, как в случае команды rlogin :

rsh gemini -l boby fc cad.f

Доступ к удаленным системам по команде rsh контролируется также, как для команды rlogin . Чтобы воспользоваться командой rsh , вам должно быть разрешено выполнять команду rlogin для доступа к удаленной системе без подтверждения пароля. Команда rsh не позволяет выполнять интерактивные команды.

3.4 ruptime

Команда ruptime используется для проверки статуса других машин в вашей локальной сети или в вашей локальной подсети, если ваша сеть разделена на подсети. Для использования ruptime введите

ruptime

Результат будет выведен на экран. Вывод команды ruptime сходен с выводом, получаемым в результате выполнения команды uptime , отличие состоит лишь в том, что для команды ruptime количество дней, в течение которых удаленная машина была включена, отделяется от количества часов знаком `` + ''. По выводу команды можно увидеть, как долго каждая система была включена, как много пользователей сделали login и какова загрузка удаленных машин.

3.5 rwho

Если ваша сеть имеет широковещательные возможности, то вы можете использовать команду rwho для определения, кто из удаленных пользователей сделал login и на каких машинах вашей локальной сети или локальной подсети, если ваша система использует подсети. Для использования команды введите

rwho

На экран выведется результат выполнения команды. Если вы зададите опцию `` ", то получите более детальную информацию, а если задать опцию `` -r ", то можно получить список удаленных пользователей в обратном алфавитном порядке. Замечание: rwho команда работает только на тех машинах, где запущена специальная системная задача rwho daemon .

3.6 rdist

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

Выполнить rdist команды можно из командной строки или из командного файла. По умолчанию, rdist будет искать командный файл под именем `` distfile ", затем под именем `` Distfile ".

Определить список файлов или машин в командном файле можно в одном из следующих форматов:

var_n = name_l

или

[label:] source_l -> dest_l

command_list

где

var_n - Имя переменной, которая будет использоваться в последующих ссылках.

name_l - Список файлов, директорий или машин.

label - Метка для дальнейших ссылок.

source_l - Список файлов или директорий на локальной машине, которые будут выступать как главные копии.

dest_l - Список машин, на которых главные копии будут устанавливаться.

command_list - Команды программы rdist.

Например, команда

FILES = (.login .cshrc .mailrc .logout .rhosts )

назначает переменной FILES список файлов, указанных в скобках. А команда

HOSTS = ( aries gemini libra pisces )

назначает переменной HOSTS список имен машин. А затем эти переменные можно использовать в подкомандах программы rdist. Последовательность команд:


dotfiles: ${FILES} ->  ${HOSTS}

       install -y;

установит копии, определенные переменной FILES на удаленные машины, заданные переменной HOSTS . Опция `` -y " предотвращает обновление удаленных файлов, которые модифицировались позднее, чем соответствующие исходные файлы на локальной машине.

Программа rdist может быть также использована для копирования файлов с одной системы на другие, причем ее использовать предпочтительнее, чем команду rcp , поскольку rdist сохраняет режимы доступа владельца и группы, а также время последней модификации. Для таких целей rdist используется с ключом -c . Например, скопировать содержимое директории tuna_fish в директорию big_store на удаленной машине с именем harpo:

rdist -c tuna_fish harpo:big_store