Оцените этот текст:


     Origin: http://www.linux.org.ru/books/
 From: Ultracom 
====================================================================
                                                           1992-1994

   Олаф Кирч (Olaf Kirch)





.
                                - 2 -



     1. Предисловие

     В  последнее  время  Internet  очень  часто  оказывается в центре
внимания,  и серьезные люди часто болтаются по этому " Информационному
супершоссе". Компьютерные сети становятся такими же обыденными вещами,
как  телевизоры  и  микроволновые  печи.  Inetrnet  получает  необычно
широкое  освещение  в  печати, а ученые обсуждают в Usenet возможность
проведения   исследований   "Internet  культуры."  Различные  компании
работают над новыми методами передачи данных, например ATM, которые во
многих  случаях  позволяют  получить  большую  скорость  передачи, чем
сейчас.

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

     Разговор  о  компьютерных  сетях  очень часто означает разговор о
UNIX.  Конечно,  UNIX - не единственная сетевая операционная система и
не  всегда  она  будет  лидером,  но умрет она очень не скоро. Поэтому
особенно  интересным  для пользователя становится появление бесплатных
UNIXоидных  операционных  систем  для  PC  (386BSD,  FreeBSD и Linux).
Однако, Linux - не UNIX. Unix - зарегистрированная торговая марка, кто
бы  в  настоящее время не держал права на него, в то время как Linux -
oперационная  система, которая стремится предложить все функциональные
возможности,  требующие POSIX-стандарты для UNIX-подобных операционных
систем.

     Ядро  Linux  было написано в значительной степени Linus Torvalds,
человеком,  который  начал это проект, чтобы понять как работает Intel
i386  и  MINIX. MINIX -- другая, популярная тогда операционная система

                                - 3 -

для   PC,   предлагающая  многие  функциональные  возможности  Unix, и
написанная профессором A.С.Танненбаумом.

     Linux  попадает  под  GNU  Лицензию,  которая  позволяет свободно
распространять  код  (пожалуйста  читайте  GPL  в  приложении 20.3,где
написано,    что    значит    "свободнораспространяемое    программное
обеспечение").  Понемногу оставляющая трудности, связанные с маленьким
возрастом,   и   привлекающая  большой  и  все  возрастастающей  базой
бесплатных  прикладных  программ,  эта операционная система становится
все более распространенной. Ядро и C библиотека становятся так хороши,
что  большинство стандартного программного обеспечения компилируется с
тем  же  успехом,  что  и  на  любой  другой  Unix  системe, а широкий
ассортимент различных Linux позволяет Вам просто переписать его на ваш
жесткий диск и начинать работать.


     1.1. Документация о Linux

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

     Так  в  1992,  Lars  Wirzenius  и  Michael  K. Johnson предложили
организовать   проект   документации   для   Linux,   или  LDP  (Linux
Documentation  Project),  который стремится к обеспечению пользователя
полным набором документации. Коротко останавливаясь на вопросах типа "
Как?  ",  "Почему?",  или  "Что  -  значит  жизнь,  вселенная,  и  все
остальное?",   эти   руководства   пытаются   охватить   все   аспекты
управления  и  использования  Linux  пользователем,  не требуя от него
предварительного  знания  Unix.  Среди достижений LDP - Руководство по
установке, написанное Matt Welsh, Руководство по взлому ядера, Michael
K.  Johnson,  и  проект  создания  man-страниц,  скоординированный Rik
Faith,  который  пока  снабдил  Linux  450  страницами руководства для
большого  количества системных вызовов и Cи библиотек. Руководство для

                                - 4 -

администраторов  системы, написанное Lars Wirzenius, находится все еще
на стадии разработки. Руководство пользователя уже подготовлено.

     Однако,  книги LDP - не единственный источник информации о Linux.
В   настоящее   время,  имеются  больше  чем  дюжина  HOWTOs,  которые
отправлены  по почте к comp.os.linux.announce и регулярно архивируются
на различных FTP серверах.

     HOWTOs  -  короткие  документы,  состоящие из нескольких страниц,
которые  дают  Вам  краткое  представление  по  темам  типа  поддержки
Ethernet  под Linux, или конфигурации Usenet программного обеспечения,
а  также  ответы  на часто задаваемые вопросы. Они обычно обеспечивают
наиболее  точную  и современную информацию, доступную по даннной теме.
Список  доступных  HOWTO  приводится  в  "Аннотируемой Библиографии" в
конце этой книги.

     1.2. Об этой книге

     Когда я присоединился к LDP в 1992, я написал две маленькие главы
об  UUCP  и  smail,  которые  я  хотел  добавить  к  "Руководству  для
администратора  системы".  Разработка TCP/IP сети только начиналась, и
когда  те  "маленькие главы" начали расти, я решил, что было бы хорошо
иметь  Руководство  для  администратора  сети,  пошел и написал первую
версию Руководства Сети, которую и выпустил в сентябре 1993.

     Новое  Руководство  для  администратора  сети,  которое Вы сейчас
читаете,   описывает   несколько   новых   приложений,  которые  стали
доступными Linux пользователям после первого выпуска.

     Книга  организована  как  последовательность  шагов,  которые  Вы
должны  сделать,  чтобы  отконфигурировать  вашу  систему для работы в
сети.  Все  начинается с обсуждения основных концепции сетей вообще, и
сетей,  основанных на TCP/IP, в частности. Мы медленно пройдем путь от
конфигурирования  TCP/IP  на  уровне устройств к установке стандартных
приложений   типа  rlogin  и  подобных,  сетевой  файловой  системы, и
информационной  системы  сети.  К  этому  прилагается глава о том, как
сделать  вашу  машину  UUCP-узлом. Остаток книги посвящен двум главным
приложениям,  которые  запускаются  как  над  TCP/IP,  так и над UUCP:

                                - 5 -

электронная почта и новости.

     Email  часть  более  широко описывает механизмы транспортировки и
маршрутизации  почты, и множество схем адресации, с которыми вы можете
столкнутся.  Там  же  описывается конфигурирование и управление smail,
агента транспортировки почты, обычно используемого на меньших почтовых
центрах,  и  sendmail, который преддлагается для людей, которые должны
заниматся  сложной  маршрутизацией  или работать с большим количеством
почты. Глава Sendmail была написана Vince Skahan.

     Часть   News  пытается  дать  Вам  краткий  обзор  работы  Usenet
новостей,  наиболее  широко используемое в настоящее время программное
обеспечение  для  транспортировки  новостей  и  использование NNTP для
обеспечения  доступа  newsreader  к  местной сети. Книга заканчивается
короткой главой о наиболее популярных newsreaders для Linux.


     1.3. Официально Напечатанная Версия

     Осенью 1993, Andy Oram, человек который был в списке рассылки LDP
почти с самого начала, спросил меня относительно публикации моей книги
в  фирме O'Reilly и Партнеры. Я был воодушевлен этим; Я никогда не мог
вообразить,  что  моя  книга  пользуется  успехом.  Мы согласились что
O'Reilly  будет  печатать "Официальную печатную версию руководства для
администратора  сети",  в  то  время  как  Я  сохранил  первоначальные
авторские  права  так,  чтобы  книга  свободно  распространялась.  Это
означает    что    Вы    можете    выбрать:   получить   LaTeX   текст
распространяемый  по  сети ( DVI или PostScript версии), и распечатать
их.  Или  Вы  можете купить официально напечатанную версию у O'Reilly,
которая будет доступна несколько позже в этом году.

     Непонятно,  почему  Вам захочется заплатить деньги за что-то, что
Вы  можете  достать  бесплатно?  Не  сошел  ли Tim O'Reilly с ума, раз
пытается  продавать  то  что каждый может напечатать и даже продавать?
Или есть некое различие между этими версиями?

     Ответ  --  "это  зависит",  "нет,  определенно не," и "да и нет."
O'Reilly  и  Партнеры  рискует, публикуя это руководство, но Я надеюсь

                                - 6 -

что  это  окупится.  Если  это  произойдет, Я полагаю, что этот проект
сможет  послужить  как  пример  того  как мир бесплатного программного
обеспечения и компании могут сотрудничать, чтобы произвести что-нибудь
полезное и тем и другим. На мой взгляд, O'Reilly делает большую услугу
Linux  сообществу  (кроме  книге  доступной  в  вашем  местном книжном
магазине)  и тем, что это может помочь всем посмотреть на Linux как на
что-то  серьезное,  как  на  жизнеспособную  и  полезную  альтернативу
коммерческим UNIX операционным системам для PC.

     Так  что  же  относительно  различай между напечатанной версией и
электронной?  Andy  Oram  провел большую работу по преобразованию моей
ранней  версии  в  то, что можно печать. (Он просмотрел также и другие
книги  созданные  под  эгидой  LDP, и повышал как мог профессиональный
уровень нашей документации).

     С   тех   пор   Andy   начал   просматривать   это  Руководство и
редактировать  копии,  которые  Я  послал ему, книга стала значительно
лучше,  чем  еще  пол  года  назад.  И  если бы не он то книга была бы
гораздо  хуже  чем  есть сейчас Все его изменения тут же вставлялись в
электронную версию, и все последующие изменения, которые будут сделаны
к  Руководству  для  администратора  сети  во  время редактирования их
O'Reilly  так  же  будут  вставлены.  Таким  образом  не будет никаких
различай   между   этими  версиями.  Все  же,  версия  O'Reilly  будет
несколько  отличатся: С одной стороны, люди O'Reilly проделывают массу
работы  над  внешним видом книги на таком уровне который вы никогда не
получите  от  стандартного  TEXа  С  другой  стороны, там будет больше
картинок, и улучшенный алфавитный указатель.

     1.4. Дополнительная Информация

     Если  Вы  следуете  инструкциями  этой  книги,  и  что-нибудь  не
работает,  пожалуйста  будьте  терпеливы.  Некоторые  из ваших проблем
могут возникнуть из-за моих глупых ошибок, но могут также быть вызваны
изменениями  в  программном  обеспечении.  Лучше спросить относительно
своих  проблем  на comp.os.linux.help. Есть большая вероятность что Вы
не  единственный  кто  столкнулся  с  подобными вашим проблемами, и ее
решение   известно.  Если  Вы  имеете  возможность,  Вы  должны  также
попробовать   получить   самую   последнюю   версию  ядра  и  сетевого

                                - 7 -

программного  обеспечения  на  одном  из  Linux  FTP  серверах, или на
ближайшей от вас BBS.

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

     Другое  хорошее  место,  где  можно узнать о процессе разработки
организация   сети   HOWTO.  Ее  поддерживается  Terry  Dawson  HOWTOs
отсылаются  по  почте  на  comp.os.linux.announce  один раз в месяц, и
содержат  наиболее  современную  информацию. Текущая версия может быть
также получена на tsx-11.mit.edu, в /pub/linux/doc. Если свои проблемы
Вы  не  можете  решить другим путем, Вы можете также войти в контакт с
автором  этой  книги  по  адресу  данному  в  ведении. Но, пожалуйста,
воздержитесь  от  обращения  за  помощью  к  разработчикам.  Они и так
посвящают основную часть свободного времени Linux.

     1.5. Об Авторах

     1.  Olaf  был  UNIX пользователем и администратором пару лет пока
изучал  математику. В настоящее время он работает UNIX программистом и
пишет  книгу.  Одно  из его любимых спортивных состязаний делать такие
вещи  с  помощью  sed для которых другие люди использовали бы perl. Он
получает  от этого такое же удовольствие как другие люди от лазанья по
горам с палаткой и рюкзаком.

      2.
с  1987  и  в настоящее время управляет sendmail+IDA на приблизительно
300  UNIX  машинах для более чем 2000 пользователей. Он признался, что
провел  много бессонных ночей за редактированием sendmail.cf файлов до
открытия  sendmail+IDA  в  1990.  Он  также  признает,  что с тревогой
ожидает  поставки  первой perl версии sendmail, для неясных пока забав
(см. 4).

      3.     Terry    Dawson    может    быть    найден    по    адресу
terryd@extro.ucc.su.oz.au.

      4. Вы думаете что Вы могли бы сделать это в sed, Vince?

                                - 8 -


     Olaf может быть найден по следующему адресу:

     Olaf Kirch
     Kattreinstr. 38 64295 Darmstadt Германия
     okir@monad.swb.de

     Vince может быть найден на:

     Vince Skahan
     vince@victrola.wa.com

     Мы  открыты  для  ваших вопросов, комментариев, открыток, и т.д..
Однако, мы просим Вас писать нам только если это действительно важно.

     1.6. Благодарности

     Olaf благодарит всех людей, которые профессионально прочитали эту
книгу, и потратили свое время на исправление ошибок как грамматических
так и технических. Наиболее энергичный среди них был Andy Oram.

     Я  очень признателен Andres Seplveda, Wolfgang Michaelis, Michael
K.  Johnson,  и  всем  разработчикам  кто  потратил  свое  время чтобы
проверить  информацию,  находящуюся в данном Руководстве. Я также хочу
поблагодарить   всех  тех  кто  читал  первую  версию  Руководства  за
посланные  меня  исправления  и  предложения.  Вы  можете найти полный
список помощников в файле Thanks. И Наконец, эта книга не появилась бы
без поддержки Holger Grothe.

     Я  также  хотел  бы  поблагодарить  следующие  группы и компании,
которые  напечатали  первое  издание Руководства и пожертвовали деньги
или мне, или LDP в целом.

        + Linux Бригада Поддержки, Erlangen, Германия

        + S.u. S.E. GmbH, Fuerth, Германия

        + Linux Лаборатории Системы, Компания, Соединенные Штаты

                                - 9 -


     Vince благодарит Neil Rickert и Paul Pomes за большую помощь во время
работы с sendmail+IDA и Rich Braun за перевод sendmail+IDA на Linux.
Самая большая благодарность моей жене Susan за  всю поддержку в этом и других
проектах.

     1.7. Условные Обозначения

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

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

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

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

     Typewriter    Slanted    шрифт    используется   чтобы   отметить
meta-переменные  в  тексте, особенно в представление командной строки.
Например:

               $ Ls -l foo

               Где foo -- имя файла, типа /tmp.

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

                Press 'return' to continue.

     <>  -  алмаз  с  краю, подобно черному алмазу на a лыжном склоне,
отмечает   "опасность"   или   "предостережение."   Читайте  параграфы

                                - 10 -

отмеченные этим значком более тщательно.


     $  И  # предшествует команде оболочки которую нужно выполнит. "$"
символ   используется  когда  команда  может  быть  выполнена  простым
пользователем;   "#"   означает  что  команда  требует  пользователя с
привилегией root.


     1.8. Проект linux документации

     Проект  linux  документации, или LDP, является свободной бригадой
авторов  и  редакторов,  которые  работают  вместе,  чтобы  обеспечить
завершенную  документацию  для  Linux  операционной  системы.  Главный
координатор  проекта  -  Matt  Welsh,  ему  помогает  Lars Wirzenius и
Michael K. Johnson.

     Это  руководство распространяется как часть LDP, который включает
в себя "Linux Руководство Пользователей", "Руководство Администраторов
Системы",  "Руководство  Администраторов Сети", и "Руководство хакеров
ядра".  Эти руководства доступны в формате LaTeX, .dvi и Postscript на
анонимном FTP ic.funet.fi, в каталоге /pub/OS/Linux/doc/doc-project, и
на tsx-11.mit.edu, в каталоге /pub/linux/docs/guides.

     Мы  поощряем  любого  кто  пожелает  помогать  нам улучшать Linux
документацию.  Если  Вы  имеете  доступ к электронной почте, Вы можете
присоединяться  к  DOC каналу списка рассылки linux-активистов посылая
почту на linux-activists-request@niksula.hut.fi

Со строкой:
  X-Mn-Admin:  join DOC

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

   X-Mn-Admin: leave DOC

                                - 11 -


     1.9. Стандартная организация файлов системы

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

     Чтобы  улучшить  эту  ситуацию,  в  августе  1993 несколько людей
сформировали  Группу  Стандартов  Системы  Файлов в Linux, или коротко
FSSTND  После  шести  месяцев  обсуждения,  группа представила проект,
который   представляет   структуру   системных   файлов  и  определяет
местоположение наиболее необходимых программ и файлов конфигурации.

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

     Стандарт  системы  файлов  в  Linux  может  быть  получен на всех
основных  Linux  FTP серверах и их зеркалах; например, Вы можете найти
его  на sunsite.unc.edu в /pub/linux/docs. Daniel Quinlan, координатор
группы FSSTND, может быть найден по адресу quinlan@bucknell.edu.lex
.
                                - 12 -



     2. Общие сведения о сетях.

     2.1. Введение.

     Идея  сетей  также  стара,  как  и  вообще идея телекоммуникаций.
Рассмотрим людей, живших в каменном веке, когда для обмена сообщениями
между  людьми  использовались барабаны. Предположим пещерный человек А
хочет  пригласить  пещерного человека Б поиграть, но тот живет слишком
далеко и не может услышать барабана, в который бьет А. Каковы же могут
быть  действия  А? Он может а) пешком добраться до Б, б) взять барабан
побольше , или в) попросить В живущего на полпути между А и Б передать
сообщение. Позже это стали называть сетями.

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

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

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

     Хост  --  это  чаще всего компьютер, но не обязательно, это может
быть и Х-терминал, и сетевой интеллектуальный принтер. Небольшой набор
хостов можно называть участок(site).

     Связь  невозможна  без какого либо языка или кода. В компьютерных

                                - 13 -

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

     2.2. UUCP сети.

     UUCP   (Unix-to-Unix  copy)  начинался  как  пакет  программ  для
пересылки   файлов   через  последовательные  линии,  управления  этой
пересылкой  и  выполнения  программ  на удаленной машине. Он претерпел
большие  изменения  с  тех  пор  как  был  впервые  предложен  в конце
семидесятых,  но  до  сих  пор  по спартански простой по. Его основные
приложения до сих пор базируются на телефонных линиях.

     UUCP  впервые  был  предложен  Bell лабораториями в 1977 году для
связи  между их Unix участками. В середине 1978 г. эта сеть объединяла
уже 80 машин. Она позволяла использовать электронную почту и удаленную
печать. Сегодня UUCP не ограничивается только Unix средами. Существует
масса как коммерческих так и бесплатных переносов данного протокола на
другие платформы, включая AmigoOS, DOS, Atari's TOS, и другие.

     Один  из  главных  недостатков UUCP сетей -- их низкая пропускная
способность.  С  одной  стороны, телефонное оборудование устанавливает
жесткий  предел  на  максимальную скорость передачи. С другой стороны,
UUCP  соединение -- редко постоянная связь; где хосты соединяются друг
с   другом  через  определенный  интервал.  Следовательно,  наибольшее
количество  времени  при передаче почты через UUCP она просто лежит на
диске  некоторого  хоста,  обживающего  установления следующего сеанса
связи.

     Несмотря  на  эти  ограничения,  имеется  большое количество UUCP
сетей,  работающих  во  всем  мире  главным  образом  под  управлением
энтузиастов,  которые  предлагают  частный  доступ  к сети за разумные
цены. Главная причина популярности UUCP в том, что это очень дешево по
сравнению  с наличием компьютера, связанного кабелем с Intеrnet. Чтобы

                                - 14 -

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


     2.2.1. Как Использовать UUCP

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

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

     $ Uux -r swim! Lpr! Netguide.dvi

     Uux,  команда  из  UUCP  набора, передает работу swim. Эта работа
состоит  из входного файла, netguide.dvi, и запроса передать этот файл
команде  lpr.  -r  флаг  просит  uux  не  вызывать  отдаленную систему
немедленно,  а  сохранить  работу  до  установления  связи  с ней. Это
названо spooling (спулинг).

     Другое  свойство  UUCP, позволяет передавать задачи и файлы через
несколько  хостов.  Предположим swim, упомянутый в предыдущем примере,
связан  UUCP  с  groucho,  который  поддерживает  большой  архив  Unix
приложений.  Чтобы  загрузить файл tripwire-1.0.tar.gz на вашу машину,
Вы могли бы ввести

   $  uucp  -mr  swim!groucho!~/security/tripwire-1.0.tar.gz trip.tgz

     Эта  команда  попросит swim скачать файл с groucho, и послать его
вашей машине, где UUCP сохранит его в trip.tgz и уведомит Вас по почте
о получение этого файла. Все выполняется в три шага. Сначала, ваш хост
посылает  задачу  swim.  Когда  swim устанавливает контакт с groucho в
следующий  раз, он загружает файл. Заключительный шаг - передача файла
от swim вашему хосту.

                                - 15 -


     Наиболее  важная  услуга, предоставляемая UUCP сетями в наши дни,
--  электронная  почта  и  новости. Мы вернемся к этому позже, так что
здесь мы дадим только краткое описание.

     Электронная  почта (email) позволяет Вам обмениваться сообщениями
с  пользователями  на отдаленных хостах без необходимости иметь доступ
на  эти  хосты.  Задача  направления  сообщения  от  вашего участка до
участка  места  назначения  полностью  выполняется  системой обработки
почты.  В  UUCP среде, почта обычно транспортируется с помощью команды
rmail,   передовая   ей  адрес  получателя  и  само  сообщение.  Rmail
отправляет  сообщение  соседнему  хосту,  и  так  далее,  пока  оно не
достигнет  места  назначения.  Мы  будем  рассматривать это подробно в
главе 14 ..

     Новости(News)  могут  лучше всего быть описаны как распределенная
система информационного табло. Наиболее часто, этот термин относится к
Usenet  Новостям,  которые  являются  наиболее  широко известной сетью
обмена   новостями  с  приблизительно  120,000  участвующими  хостами.
Появление Usenet относятся к 1979 г, когда, после выпуска UUCP с новым
Unix  V7,  три  студента предложили идею всеобщего обмена информации в
пределах  Unix  сообщества.  Они  создали  несколько скриптов, которые
стали  первой  news  системой.  В 1980, эта сеть связывала duke, unc и
phs,  в  двух  Университетах  на  Севере Каролины. И Usenet в конечном
счете  рос  и рос. Хотя она появилась как uucp-основанная сеть, она не
могла ограничиваться только одним типом сети.

     Основная  единица  информации  -  статья (article), которая может
быть   отправлена  по  почте  к  иерархии  newsgroup(группе  новостей)
посвященных  определенным  темам. Большинство участков получают только
некий  набор  newsgroup,  чей  общий объем статей за день составляет в
среднем 60 МБ.

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


                                - 16 -

     Наконец,   UUCP   предоставляет   доступ  к  большому  количеству
участков,  которые  предлагают  свободный доступ. Вы можете попасть на
них  дозвонившись  до  них  и  соединившись с ними с помощью UUCP, как
гость,  и  скачивать с них файлы расположенные в общедоступной области
архива.  Пользователь  с  правами  гостя часто имеет имя и пароль типа
uucp/nuucp.

     2.3. TCP/IP Сети

     Хотя  UUCP может быть и разумный выбор для дешевых сетей связи по
телефону,  но существует большое количество ситуаций в которых техника
сохранил-передал  оказывается  слишком  негибкой, например в локальных
сетях   (LANs).   Они   обычно   состоят  из  маленького  числа  машин
расположенных  в одном здании или даже на одном этаже, которые связаны
для создания однородной рабочей среды. И Вы хотели бы разбросать файлы
между  этими  хостами,  или  запускать  одно  приложение  на различных
машинах.

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

     Решение,  которое  Unix  системы  и  большинство не-Unix участков
приняли известно как TCP/IP. В этой секции, мы будем рассматривать его
основные концепции.

     2.3.1. Введение в TCP/IP-сети.

     TCP/IP происходит от проекта, финансируемого американским DARPA (
Оборонное   Агентство  Продвинутых  Исследований)  в  1969.  Это  была
экспериментальная   сеть,   ARPANET,   которая   была  преобразована в
эксплуатационную в 1975, после того, как была доказана ее полезность.

     В  1983,  новый  протокол TCP/IP был принят как стандарт и от все

                                - 17 -

хостов  в  сети  требовалось  его использование. Когда ARPANET наконец
вырос в Inetrnet (ARPANET непосредственно окончил свое существования в
1990),  использование  TCP/IP распространилось и на сети вне Inetrnet.
Наиболее известные -- Unix локальные сети, но из-за появлении быстрого
цифрового  телефонного оборудования, типа ISDN, он также имеет большой
шанс стать протоколом транспортировки для телефонных сетей.

     Для  более  конкретного  рассмотрения  TCP/IP повсюду в следующих
секциях, мы будем пользоваться как примером Groucho Marx Университетом
(GMU),который   расположен  где-нибудь  в  Fredland,  большинство  его
отделов  используют  собственную  локальную  сеть, а другие используют
несколько  из  них.  Они  все  связаны,  и подключены к Inetrnet через
единственную быстродействующую линию.

     Предположите  что ваш Linux связан с сетью из Unix машин в Отделе
Математики,  и  имя  вашей  машины erdos. Для доступа к хосту в Отделе
Физики, называемого quark, вводите следующую команду:

     $ rlogin quark.physics
     Welcome to the Physics Department at GMU
     (ttyq2) login:

     В  приглашении  Вы вводите ваше имя, скажем andres, и ваш пароль.
Вам  дают shell(оболочку) на quark, к которой Вы можете обращаться как
будто  Вы  сидите  за  системной  консолью  quark.  После  того как Вы
покинете  оболочку,  Вы  возвращаетесь к приглашению вашей собственной
машины.  Сейчас  Вы использовали только одно из диалоговых приложение,
которые предлагает TCP/IP: remote login.

     Пока  вы  находитесь  на  quark, Вы можете захотеть управлять Х11
приложением.  Чтобы сказать этому приложению что Вы хотите видеть окна
на экране вашего хоста, Вы должны отрегулировать среду:

     $ export DISPLAY=erdos.maths: 0.0

     Если  Вы  теперь  запускаете ваше приложение, оно будет входить в
контакт  с  вашим  X-сервером  вместо  quark, и отображать все окна на
вашем экране. Конечно, это требует наличия у вас X11. TCP/IP позволяет

                                - 18 -

quark  и  erdos  послать  X11  пакеты  туда  и  обратно создавая у вас
иллюзию,  что  вы  находитесь  на  удаленной системе. Сеть здесь почти
прозрачна.

     Другое   очень   важное   приложение   в   TCP/IP  сетях  -  NFS,
расшифровывается  как сетевая операционная система. Это - другая форма
создания  прозрачной  сети, она позволяет Вам установить директории от
других  хостов,  так,  чтобы  они  рассматривались  подобно  локальным
файловым  системам.  Например,  домашние директории всех пользователей
могут  быть  на  центральной  машине,  от  которой  все другие хосты в
локальной   сети  устанавливают  требуемые  директории.  В  результате
пользователи  могут  войти  в любую машину и находиться в той же самой
домашней директории.

     Так,  можно  устанавливать  приложения  которые  требуют большого
количества  места  на  диске  (  типа  TeX ) только на одной машине, а
остальные  будут  лишь  экспортировать директории. Мы вернемся к NFS в
главе 12 ..

     Конечно,  это  не единственные примеры того, что Вы можете делать
по TCP/IP сетям. Ваши возможности почти безграничны.

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

     2.3.2. Ethernet

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

     Присоединяемый  к  нему  через  connector,  tap или transceivers.
Простой  Ethernet  весьма  недорог,  хотя,  вместе  с сетью предлагает
скорость в 10 Мегабитов в секунду.

     Ethernet  бывает  трех видов: толстый и тонкий, соответственно, и

                                - 19 -

витая  пара. Тонкий и толстый Ethernet использует коаксиальный кабель,
отличающейся  по  ширине и способу подключения машины к кабелю. Тонкий
Ethernet  использует  "BNC"  connector  в  форме буквы Т, в который Вы
вставляете  кабель  и  вкручиваете  сзади  вашего  компьютера в гнездо
сетевой  платы. Толстый Ethernet требует, чтобы ВЫ проделали маленькую
дырку  в  кабеле,  и  воткнули transceiver "методом вампира". Один или
больше  хостов  может быть присоединено к одному transceiver. Тонкий и
толстый  кабель  Ethernet  может  иметь  длину  не  больше  200  и 500
метров,  соответственно,  и поэтому также названы 10base-2 и 10base-5.
Витая пара использует кабель сделанный из двух медных проводов которые
используются  в телефонии, но обычно требует дополнительных аппаратных
средств. Он также известен как 10base-T.

     Добавление  хоста к толстому Ethernet не слишком сложно, оно даже
не  вырубает  сеть. Чтобы добавлять машину к сети с тонким Ethernet Вы
должны  прервать работу сети по крайней мере на несколько минут потому
что Вы должны разрезать кабель чтобы вставить Т-connector.

     Большинство  людей  предпочитают  тонкой Ethernet, потому что это
очень дешево: карты PC стоят всего $50, а кабель находится в диапазоне
нескольких  центов  за  метр.  Однако, для больших сооружений, толстый
Ethernet  подходит  лучше  Например,  в  отделе  математики используют
толстый Ethernet, так что у них работа сети не будет прерваться каждый
раз, когда к сети добавляется новый хост.

     Один  из  недостатков  Ethernet технологии -- ограниченная длинна
кабеля, который позволяет использовать его только для локальных сетей.
Однако, несколько Ethernet сегментов могут быть связан друг с другом с
помощью   repeaters   (повторителей),  bridges  (мостов)  или  routers
(маршрутизаторов).  Repeaters  просто копируют сигналы между двумя или
больше сегментами так, что все сегменты вместе действуют как будто это
один  Ethernet.  Но  между  двумя  любыми  машинами сети не может быть
больше  четырех  repeaters.  Bridges  и  Routers  более  сложные.  Они
анализируют  поступающие  данные  и  отправляют их только тогда, когда
хоста получателя нет на местном Ethernet.

     Ethernet  работает подобно системной шине, где хост может послать
пакеты  до  1500  байтов  другому хосту на том же самом Ethernet. Хост

                                - 20 -

идентифицируется  адресом, состоящем из шести байт зашитыми в Ethernet
плату   при   ее   создании.   Эти   адреса  обычно  записываются  как
последовательность шестнадцатиричных чисел с двумя цифрами отделяемыми
двоеточиями, на пример aa: bb: cc: dd: ee: ff.

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

     2.3.3. Другие типы аппаратных средств

     В  больших  сооружениях,  типа Groucho Marx Университет, Ethernet
обычно  не единственный тип используемого оборудования. В Groucho Marx
Университет,  локальная  сеть каждого отдела связана с университетской
магистралью, которая является оптическим кабелем FDDI. FDDI использует
совершенно  другой  подход  к передаче данных, который основывается на
рассылке  определенных  символов,  и только если станция получает этот
символ, она может послать некий кусок информации. Главное преимущество
FDDI  - скорость, достигающая 100 Mbps, и максимальная длина кабеля до
200 км.

     Для дальней связи часто используются различные типы оборудования,
которые   основаны   на  стандарте  названном  X.25.  Большинство  так
называемых  "Общественных  Сетей  Данных",  подобно  Tymnet в США, или
Datex-P в Германии, предлагают свои услуги, основываясь именно на нем.
X.25   требует   специальных   аппаратных   средств,  а  именно  пакет
Assembler/Disassembler  или  PAD.  X.25  определяет  собственный набор
протоколов,  но часто используется чтобы соединить сети работающие под
TCP/IP  и  другими  протоколами. Так как IP пакеты не могут быть прямо
отображены  на  X.25  (  и  наоборот  ), они просто вставляются в X.25
пакеты и посылаются по сети.

     Часто,  радио  любители используют свое оборудование для создания
сети  из  своих  компьютеров;  это  называется  пакетное радио или ham
радио.  Протокол  используемый  ham  радио назван AX.25 (он получен из
X.25).

                                - 21 -


     Есть  методы,  которые  используют  специально  для медленных, но
дешевых  телефонных  линий. Они требуют других протоколов для передачи
пакетов, типа SLIP или PPP, которые будут описаны ниже.

     2.3.4. Internet Протокол(IP)

     Конечно,  Вы  не  хотели бы чтобы ваша сеть ограничивалась только
Ethernet. Идеально, Вы хотели бы использовать сеть независимо от того,
какими аппаратными средствами это достигается.

     На  Пример,  в больших сооружениях типа Groucho Marx Университет,
Вы обычно имеете набор отдельных Ethernet, которые должны быть связаны
некоторым  образом.  В  GMU,  в математическом отделе используются два
Ethernets:  одна  сеть  быстрых  машин  для  профессоров  и  студентов
последних  курсов,  и  другая с медленными машинами для студентов (обе
связаны с FDDI).

     Эта связь управляется специальным хостом, так называемым gateway,
который  направляет  поступающие  и  уходящие  пакеты копируя их между
двумя Ethernets и FDDI. Например, если Вы - в математическом отделе, и
хотите  получить  доступ  к quark в локальной сети физического отдела,
сетевое   программное   обеспечение  не  может  послать  пакеты  quark
непосредственно, потому что он находится на другом Ethernet.

     Поэтому,  этим  занимается  gateway. Gateway (назовем его sophus)
посылает  эти пакеты другому gateway (niels) в Отделе Физики, niels же
отправляет  их  на  требуемую машину. Поток Данных между erdos и quark
показывается на картинке 2.3.4 (с извинениями парню L. Steele).

     Эта   схема   направления  данных  отдаленному  хосту  называется
routing(маршрутизация),  а пакеты часто называют datagram(дэйтограмы).
Для   простоты,   обмен   дэйтаграмами  управляется  в  соответствии c
отдельным  протоколом,  который  является  независимым от используемых
аппаратных  средств:  IP,  или  Internet Протокол. В главе 3. мы будем
рассматривать IP и routing более подробно.

     Основная  польза IP в том, что он преобразует физически несходные

                                - 22 -

сети  в одну с виду однородную сеть. Это называется internetworking, в
результате получаем "мета-сеть" называемую intеrnet. Обратите Внимание
на   различие  между  inetrnet  и  Inetrnet  здесь.  Последнее  -  это
официальное название одного специфического глобального inetrnet.

     Конечно,  IP  также  требует машинонезависимой схемы адресования.
Это  достигается  с  помощью  назначая каждому хост уникального номера
размером в 32 бита, названного IP адресом. IP адрес обычно пишется как
четыре  десятичных  номера,  для  каждой  8-битовой части, разделенных
точками.  Например,  quark  мог  бы иметь IP адрес 0x954C0C04, который
будет  записан  как  149.76.12.4. Этот формат также назван dotted quad
notation.

     Теперь  мы  имеем  три  различных  типа  адресов: имя хоста, типа
quark,  IP  адрес,  и наконец, имеются адреса аппаратных средств, типа
адреса  Ethernet с 6 байтами. Все они так или иначе соответствуют друг
другу,  так,  когда  Вы  пишете  rlogin quark, программное обеспечение
находит  его  IP адрес; И когда IP пересылает данные в Ethernet Отдела
Физики, так или иначе по IP адресу выясняется Ethernet адрес.

     Мы  не  будем  здесь  вдаваться  в  подробности этого процесса, а
сделаем это в главе 3. Пока достаточно помнить что эти шаги называются
hostname  resolution,  поиск  IP  адреса  по  имени  хоста,  и address
resolution, поиск физического адреса по IP.

     2.3.5. IP на последовательных линий

     Для  последовательных  линий, стандартом "de facto" является SLIP
или IP для последовательных линий. Есть модификация SLIP -- CSLIP, или
сжимаемый   SLIP,   который  использует  сжатие  IP  заголовков  чтобы
оптимизировать  IP  для  относительно  низкой  пропускной  способности
последовательной  связи.  PPP, или Point-to-Point протокол -- еще один
протокол  для  последовательных  линий.  PPP  имеет  еще большее число
особенностей  чем SLIP, включая стадии переговоров о начале связи. Его
главное  преимущество  по  сравнению SLIP, то что он не ограничивается
только  транспортировкой  IP  дэйтаграм,  а  предназначен для передачи
любого типа дэйтаграм.


                                - 23 -

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

     Но  конечно,  посылка  дэйтаграм от одного хоста к другому это не
все если Вы вошли на quark, Вы хотите иметь надежную связь между вашим
процессом rlogin на erdos и процессе оболочки на quark. Таким образом,
информация  посылаемая  туда  и  обратно должна быть разбита на пакеты
отправителем,  и  повторно  собираться  в  поток  приемником. Хотя это
кажется  тривиальным,  здесь  появляется  несколько достаточно сложных
задач.

     Очень  важно  знать  об  IP,  что  он не надежен. Предположим что
десять людей на вашем Ethernet начали загружать самый последний выпуск
XFree86  с  GMU  FTP сервера. Такая активность может оказаться слишком
большой  для  того  чтобы  gateway переварил ее, потому что он слишком
медленен, и ограничен количеством памяти. Теперь если Вы пошлете пакет
от  quark,  у  sophus  может не хватить места в буфере и поэтому он не
сможет отправить этот пакет. IP решает эту проблему просто забывая про
данный    пакет.    Пакет    безвозвратно   потерян.   Таким   образом
ответственность    за    целостность    данных    перекладывается   на
поддерживающие связь хосты.

     Это  происходит  в  соответствии  c  другим  протоколом, TCP, или
Протоколом  Контроля  Передачи,  который  надстраивается  над  IP  для
создания  связи  с проверкой целостности данных. Существенный плюс TCP
то,  что  он  использует  IP,  что создает иллюзию простой связи между
двумя  процессами  на  вашем хосте и отдаленной машине, так, что Вы не
заботитесь  о  том  как  и  по которому маршрут ваши данные фактически
путешествуют. A TCP создает дуплексную связь, позволяющую одновременно
как посылать так и получать информацию. Представте телефонную беседу.

     В  TCP  точки  связи определяются IP адресами хостов , и номерами
так   называемых   портов  на  каждом  из  хостов.  Порты  служат  для
определения  процесса  с  которым  устанавливается  связь.  Если опять
обратится  к  примеру  с  телефоном,  то  IP адрес соответствует кодам
городов,  а  номер порта местному номеру телефона. В примере с rlogin,
приложение-клиент  (rlogin)  открывает  порт на erdos, и соединяется с
портом  513  на  quark,  который  прослушивает  rlogind  сервер. Таким
образом  и  устанавливает  TCP  связь.  Используя  эту  связь, rlogind

                                - 24 -

выполняет  процедуру  определения  прав доступа, и запускает оболочку.
Стандартный  ввод/вывод  этой  оболочки перенаправляются на TCP связь,
таким  образом  все,  набранное  вами  в  rlogin на вашей машине будет
передано через TCP поток на стандартный ввод оболочки.

     2.3.7. Пользовательский протокол дэйтаграм(UDP)

     Конечно,  TCP  не  единственный  протокол  пользователя  в TCP/IP
сетях.  Хоть  он  и  подходит  для  приложений  подобных rlogin, но он
излишне надежен и не нужен для приложений типа NFS. Вместо, него в них
использует  UDP, или протокол пользовательских дэйтаграм. Подобно TCP,
UDP   также  позволяет  приложению  войти  в  контакт  с  приложением,
обслуживающим  определенный  порт  на  отдаленной  машине,  но  он  не
устанавливает  связь  для  этого. Вместо этого, Вы можете использовать
его чтобы посылать отдельные пакеты к месту назначения.

     Предположим,  что Вы установили директорию TeX с центрального NFS
сервера,  galois,  и  Вы  хотите просмотреть документ, описывающий как
использовать LaTeX. Вы запускаете ваш редактор, который сначала читает
указанный   файл.   Однако,  требуется  слишком  много  времени  чтобы
установить  TCP  связь с galois, послать файл , и повторять это снова.
Вместо  этого,  на запрос посланный к galois, тот посылает файл в паре
UDP   пакетов,   что   происходит  гораздо  быстрее.  Однако,  UDP  не
приспособлен  для борьбы с потерей пакетов. Этим приходится заниматься
NFS.

     2.3.8. Дополнительно о портах

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

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

несколько параллельных отдаленных входов на один и тот же хост, причем
все  используют  один самый 513 порт. TCP способен отличать этим связи
друг  от  друга,  потому что они все прибывают от различных портов или
хостов.  Например,  если  Вы  дважды  войдете на quark от erdos, тогда
первый  rlogin  клиент  будет использовать местный порт 1023, а второй
будет использовать порт 1022. Однако, будут соединяться с тем же самым
портом 513 на quark.

     Этот  пример  показывает  использование  портов  как  пункты, где
клиент   входит   в  контакт  с  определенным  портом  чтобы  получить
определенное  обслуживание.  Клиенту необходимо знать надлежащий номер
порта,  соглашение  о  назначении  этих номеров должно быть достигнуто
между   администраторами   обеих  систем.  Для  услуг  которые  широко
используются,   типа   rlogin,   эти   номера  должны  устанавливаться
централизованно.   Этим  занимается  IETF  (или  Проектирующая  задачи
Internet сила), которая регулярно выпускает RFC статьи. Которые, среди
прочего,  назначают  номера  портов  для  общеизвестных  услуг.  Linux
использует  файл,  в  котором  регистрируют названия доступного другим
сервеса  и  номера  портов,  к которым определенный сервес прикреплен,
называется он /etc/services. Он описан в секции 10.3.

     Стоит  заметить,  что  хотя  и TCP и UDP полагаются на порты, эти
номера  не  находятся  в  противоречии. Это означает что TCP порт 513,
например,  отличается  от  UDP порта 513. Фактически, эти порты служат
как  точки  доступа  для двух различных услуг, а именно rlogin (TCP) и
rwho (UDP).

     2.3.9. Библиотека гнезд(socket)

     В   Unixоидных  операционных  системах  программное  обеспечение,
выполняющее  все  задачи  и  протоколы описанные выше, обычно является
частью ядра, аналогично и в Linux. Интерфейс программирования наиболее
общий  для  мира  Unix  - Библиотека Гнезд Berkeley. Свое название она
получила  из-за  популярной  аналогии  которая рассматривает порты как
гнезда(розетки). Она обеспечивает (bind(2)) запрос, который определяет
отдаленный хост, транспортный протокол, и сервис, к которому программа
может  присоединится или слушать (используя connect(2), listen(2), and
accept(2)).

                                - 26 -


     Библиотека  гнезд  однако несколько более общая, она обеспечивает
не  только  класс  TCP/IPоснованных  гнезд  (AF INET гнезда), но также
класс,  который  управляется  локальной связью машины (AF UNIX класс).
Некоторые  версии  могут также управляться другими классами типа XNS (
Система Организации Сети Ксерокса ) протокол, или X.25.

     В Linux, библиотека гнезд -- часть стандартной libc C библиотеки.
В  настоящее  время, она поддерживает только AF INET и AF UNIX гнезда,
но ведется работа над включением поддержки для Novell протоколов, так,
чтобы  в конечном счете один или больше классов гнезд для него были бы
добавлены.

     2.4. Linux сети

     Будучи  результатом концентрации усилие программистов всего мира,
Linux  не был бы возможен без глобальной сети. Так что не удивительно,
что  уже на ранних стадиях разработки, несколько людей начали работать
над  сетевыми  возможностями.  UUCP  появился  в  Linux почти с самого
начала,  а работа над tcp/ip-основанной сетью была начата осенью 1992,
когда  Ross  Biro  и другие создали то, что теперь стало известным как
Net-1.

     Ross  прекратил  активную  разработку в Мае 1993, Fred van Kempen
начал  работать над новой версией, переделывая главные части кода. Это
усилие  известно  как  Net-2.  Первый  общественный релиз, Net-2d, был
сделан  летом 1992 (как часть 0.99.10 ядра), и с тех пор поддерживался
и  расширялся  несколькими  людьми,  наиболее  сильно  Alan  Cox,  как
Net-2Debugged.     После     тяжелой    отладки    и    многочисленных
усовершенствований  кода, он сменил название на Net-3. Эта версия кода
в настоящее время включена в официальные выпуски ядра.

     Net-3  предлагает драйвера устройств для разнообразного Ethernet,
а  также для SLIP (для работы сети по последовательным линиям), и PLIP
(  для  параллельных линий). С Net-3, Linux получил TCP/IP приложения,
которые  очень  хорошо  ведут  себя  в локальной сети и часто работают
быстрее   некоторых   коммерческих.   Существует  несколько  проектов,
развитие которых будет увеличивать многосторонность Linux. Драйвер для

                                - 27 -

PPP    (    протокол   point-to-point,   другой   способ   работы   по
последовательным  линиям),  является  в стадии Beta версии в настоящее
время,  а  AX.25  драйвер  для радио - в Alpha версии. Alan Cox создал
драйвер для Novell's IPX протокола, но завершающие усилия для создания
сети  совместимой  с  Novell  были  отложены  из-за  нежелания  Novell
обеспечить   необходимую   документацию.  Еще  один  проект  -  samba,
свободный NetBIOS сервер, написанный Andrew Tridgell.

     2.4.1.  Другие пути развития

     В  это  время,  продолжая  разработку,  Fred  предложил Net-2e, в
которой  сильно  пересмотрено вся структура организации сети. Во время
написания  этой  книги,  Net-2e  все еще Beta программное обеспечение.
Наиболее  интересен  в  Net-2e  - объединение DDI, Интерфейса Драйвера
Устройства.  DDI предлагает однотипный доступ и метод конфигурации для
всех устройств сети и протоколов.

     Пока   используется  TCP/IP  сеть  написанная  Matthias  Urlichs,
написавшего  ISDN  драйвер  для Linux и FreeBSD. Для этого, он встроил
BSD сетевой код в ядро Linux.

     В течение обозримого будущего, Net-3 скорее всего останется. Alan
в   настоящее  время  работает  над  AX.25  протоколом,  используемого
любителями  радио.  Несомненно,  скоро  будет  разработан "модуль" для
ядра,   который   позволит   Вам   добавлять   драйвера   к   ядру  не
переустанавливая систему.

     Хотя  эти различные реализации сети борются за обеспечение одного
и  того  же  сервеса,  основные их различия находятся на уровне ядре и
устройств.  Поэтому, Вы не сможете отконфигурировать систему используя
Net-2e ядро с утилитами от Net-2d или Net-3, и наоборот. Это относится
только  к  командам,  которые  имеют  дело с ядром; приложения и общие
сетевые команды типа rlogin или telnet пойдут на любом из них.

     Однако,  все  эти  различные версии сети не должны волновать Вас.
Если  Вы не участвуете в активной разработке, Вы не должны волноваться
относительно версии сода TCP/IP. Официальные выпуски ядра будут всегда
сопровождаться   набором   сетевых   инструментов,   которые  являются

                                - 28 -

совместимыми с кодом представленным в ядре.

     2.4.2. Где получить код

     Самая  последняя  версия  сетевого  кода  может  быть получена на
различных   анонимным   FTP.   Официальный  FTP  участок  для  Net-3 -
sunacm.swan.ac.uk, отражаемый sunsite.unc.edu в system/Network/sunacm.
Самый  последний  комплект  Net-2e  доступен на ftp.aris.com. Matthias
Urlichs'    bsd    код    может    быть   взят   на   ftp.ira.uka.de в
/pub/system/linux/netbsd.

     Самые   последние  ядра  могут  быть  найдены  на  nic.funet.fi в
/pub/OS/Linux/PEOPLE/Linus;  sunsite  и  tsx-11.mit.edu  отражают  эту
дерикторию.

     2.5. Поддержка Вашей системы

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

     Абсолютный  минимум в обслуживании -- регулярная проверка системы
и  просмотр  log  файлов  на  ошибки  и  необычные  случаи. Вы конечно
захотите  сделать  это с помощью написания административных скриптов и
периодически  запуская  их.  Исходная  дистрибуция  некоторых основных
приложений,  типа  smail или C news, содержат такие скрипты. Вы должны
только попросить их удовлетворить ваши потребности.

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


                                - 29 -

     Однако  как  бы  тщательно  Вы не конфигурировали ваш участок, по
закону  Мерфи проблемы обязательно появятся. Поэтому, при обслуживании
системы   от   жалоб   не   отвертеться.   Обычно,  люди  ожидают  что
администратор  системы  может  по крайней мере быть найден через email
как  root, но имеются также другие адреса, которые обычно используются
чтобы  найти  лицо  ответственное  за  определенный аспект управления.
Например,   жалобы  относительно  сбоев  в  конфигурации  почты  будут
обычно  адресованы  postmaster,  а  проблемы с системой новостей могут
быть  сообщены  newsmaster  или  usenet. Обращения к hostmaster должны
быть  перенаправлены лицу отвечающему за основные услуги сети и службу
имен DNS.

     2.5.1. Безопасность системы

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

     Здесь  мы  будет  обсуждать несколько примеров и основных методов
обеспечения  безопасности  системы.  Конечно, охваченные темы не могут
решить  всех  проблем  безопасности,  с  которыми  вы столкнетесь; они
просто служат иллюстрацией проблем, которые могут возникнуть. Поэтому,
необходимо   прочитать   хорошую   книгу   по  безопасности,  особенно
администратору  сетевой  системы.  Simon  Garfinkel "Практическая UNIX
Безопасность" ( см. [ GETST "безопасность"]) -- очень рекомендую.

     Безопасность  системы  начинается  с  хорошего  администрирования
системы.  Это включает в себя проверку собственности и разрешений всех
жизненено   важных   файлов   и   каталогов,   контроль  использования
привилигерованных  прав,  и  т.д..  COPS  программа,  например,  будет
проверять   вашу  файловую  систему  и  общие  файлы  конфигурации  на
необычных   разрешения   и   другие  аномалии.  Также  следует  ввести
определенные  правила  по  созданию  пользовательских паролей, которые
позволяли  бы  уменьшить вероятность их подбора. Например, потребовать
чтобы  пароль  имел  по крайней мере пять букв, и содержал как верхние

                                - 30 -

так и низкие регистры и цифры.

     При  создании  сервиса  доступного по сети, постарайтесь дать ему
"наименьшие привилегии," удастовертесь что Вы не разрешаете ему делать
вещи,  которые не требуются для его работы. Например, Вы должны делать
программы  с привилегии root только, когда они действительно нуждаются
в   этом.  Например,  если  Вы  хотите  разрешить  бездисковым  хостам
загружаться  от  вашей  машины, Вы должны обеспечить TFTP (тривиальный
сервис  передачи  файла)  так,  чтобы  они  загружали  основные  файлы
конфигурации   из   дириктории   /boot.   Однако,  когда  используется
неограниченный  TFTP,  это  позволяет  любому  прочитать общедоступные
файлы  с  вашей  машины.  Если  это не то, что Вы хотите, почему бы не
ограничить TFTP сервис дирикторией /boot?

     По той же самой причине, Вы могли бы захотеть ограничить доступ к
определенным услугам пользователям с определенных хостов. В главе 10.,
мы  представляем  tcpd,  который  делает это для разнообразных сетевых
приложений.

     Другой   важный   пункт   --  избегайте  "опасного"  программного
обеспечения.   Конечно,  любое  программное  обеспечение,  которое  Вы
используете  может  быть  опасно,  потому  что программное обеспечение
может  иметь ошибки, так что умные люди могли бы использовать их чтобы
получить доступ к вашей системе. Подобные вещи случаются и нет никакой
полной защиты против этого. Эта проблема касается как бесплатного, так
и  коммерческого  программного обеспечения. Однако, программы, которые
требуют специальных привилегий несоизмеримо опаснее чем другие, потому
что  любая  лазейка  может  иметь  непоправимые  последствия.  Если Вы
устанавливаете  сетевую  программу будте вдвойне осторожны и ничего не
пропускаете  в  документации,  чтобы случайно не нарушить безопасность
системы.  Вы не можете исключить того, что ваши предосторожности могут
потерпеть  неудачу,  независимо  от того насколько осторожный Вы были.
Поэтому  Вы  должны  удостовериться, что Вы обнаружите злоумышленников
сразу  же  после  их  появления. Хорошее начало -- проверка log файлов
системы,  но  злоумышленник  вероятно  умный  человек, и будет удалять
любые  очевидные  следы  перед  уходом.  Однако,  имеются  инструменты
подобно  tripwire,  которые  позволяют  Вам  проверять жизненно важные
системные  файлы и регистрировать были ли их содержание или разрешения

                                - 31 -

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

     2.6. Обзор следующих глав

     Следующие  несколько  глав  будут  иметь дело с конфигурированием
Linux   для   TCP/IP   сети,   и  с  управлением  некоторыми  главными
приложениями.  Прежде  чем  пачкать наши руки редактированием файлов и
подобными вещами мы немного исследуем IP в 3 главе. Если Вы уже знаете
относительно  IP  маршрутизации, и как выполняется address resolution,
Вы можете пропустить эту главу.

     Глава 4. Обсуждение основных проблем конфигурации, типа установка
ядра   и   введения   вашей   Ethernet   карты.   Конфигурация   ваших
последовательных  портов  охвачена  в  отдельной  главе, потому что их
обсуждение не относится только к TCP/IP сети, но и к UUCP.

     Глава  6.  Помогает Вам отконфигурировать вашу машину для TCP/IP.
Она также описывает несколько полезных инструментов, которые Вы можете
использовать  для  проверки  и отладки ваших установок Следующая глава
рассказывает  как  конфигурировать hostname resolution и объясняет как
установить сервер имен.

     Это сопровождается двумя главами показывающими конфигурирование и
использование SLIP и PPP. Глава 8. Объясняет как установить SLIP связь
и  дает  детальные рекомендации по запуску программ, которые позволяют
автоматизировать  большинство  необходимых  шагов. Глава 9. охватывает
PPP и pppd.

     Глава  10.  Дает  короткое  представление о некоторых из наиболее
важных  сетевых  приложений,  типа  rlogin,  rcp,  и  т.д.,  Она также
охватывает   услуги   inetd  и  описывает  как  Вы  можете  ограничить
определенные услуги для набора каких-либо хостов.

     Следующие   две   главы  обсуждают  NIS,  Сетевую  Информационную
Систему,  и  NFS,  Сетевую Файловую Систему. NIS - полезный инструмент

                                - 32 -

для   распространения   административной   информации   типа   паролей
пользователя  в  локальной  сети. NFS позволяет Вам распределить файлы
между несколькими хостами в вашей сети.

     Глава  13.  Дает  Вам  представление  об администрированию Taylor
UUCP, бесплатного UUCP пакета.

     Остаток  книги  посвящен  детальному  путешествию  по электронной
почте   и   Usenet  Новостям.  Глава  14.  представляет  Вам  основные
концепциям электронной почты, типа того как выглядит адрес электронной
почты и как система обработки почты получает ваше сообщение

     Главы 15. И 16. Охватывают установку smail и sendmail, два агента
транспортировки  почты,  которых  Вы  можете использовать в Linux. Эта
книга  описывает  оба  из  них,  потому  что  smail  более  легкий для
установки (для начинающих), в то время как sendmail более гибок.

     Главы  17.  И  18. Объясняют пути управления новостями в Usenet и
как  установить  и  использовать C news, популярный пакет программ для
управления Usenet новостями.

     Глава  19. Кратко охватывает запуск NNTP daemon, чтобы обеспечить
доступ к новостям для вашей локальной сети.

     Глава   20.   Наконец   показывает   Вам   как  конфигурировать и
обслуживать различные newsreader.
.
                                - 33 -


     3. Проблемы TCP/IP сети

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


     3.1. Сетевой интерфейс

     Чтобы    скрыть   разнообразное   оборудование,   которое   может
использоваться   в   сетевой   среде,  TCP/IP  определяет  абстрактный
интерфейс,  через который можно обращаться к аппаратным средствам ЭВМ.
Этот  интерфейс  предлагает набор действий который является одинаковым
для всех типов аппаратных средств и в основном имеет дело с посылкой и
получением пакетов.

     Для   каждого   переферийного   устройства,   которое  Вы  хотите
использовать, в ядре должен быть представлен соответствующий интерфейс
Например,   Ethernet   интерфейсы  в  Linux  названы  eth0  и  eth1, а
интерфейсы   SLIP  --  sl0,  sl1,  и  т.д..  Эти  названия  интерфейса
используются  при  конфигурировании,  когда  Вы хотите определить ядру
специфическое   физическое   устройство.   Они   не   имеют   никакого
назначения кроме этого.

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

     Конечно,  имеются  другие параметры устройства которые необходимо
отрегулировать;  один  из  них - максимальный размер дэйтаграм который
может  быть  обработан  данной  частью  аппаратуры,  также  называемый
Maximum  Transfer  Unit,  или MTU. Другие параметры будут представлены

                                - 34 -

позже.

       3.2. IP адреса

     Kак   упоминается   в   предыдущей   главе,   адреса   понятные в
соответствии c IP -- это 32-битовые числа. Каждая машине в данной сети
должен быть назначена уникальный адрес.

     В  локальной  сети,  которая  не  использует  TCP/IP  для связи с
другими   сетями,   Вы  может  назначить  эти  номера  согласно  вашим
персональным  предпочтениям.  Однако,  для  участков  Inetrnet, номера
назначаются NIC.

     Для более легкого чтения, IP адреса разбивают на четыре 8 битовых
числа,  названных octets. Например, quark.physics.groucho.edu имеет IP
адрес  0x954C0C04,  который  записывается как 149.76.12.4. Этот формат
часто называют dotted quad notation.

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

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

Класс A включает сети от 1.0.0.0 до 127.0.0.0. Сетевой номер содержится в
          первом octet, что предусматривает 24 разрядную хост часть, сеть
          приблизительно из 1.6 миллион хостов.

Класс B содержит сети от 128.0.0.0 до 191.255.0.0; сетевой номер находится в
          первых двух octets. Это предполагает 16320 сетей с 65024 хостами
          каждый.

Класс C диапазон сетей от 192.0.0.0 до 223.255.255.0, с сетевой номер

                                - 35 -

          содержится в первых трех octets. Это предполагает почти 2 миллиона
          сетей по 254 хоста.

Классы D, E, и F Адреса попадающие в диапазон от 224.0.0.0 до 254.0.0.0
          являются или экспериментальным, или сохранены для будущего
          использования и не определяют какую-либо сеть.

     Если  мы  вернемся  к  примеру  в предыдущей главе, мы увидим что
149.76.12.4,  адрес  quark,  относится  к хосту 12.4 в сети 149.76.0.0
класса B.

     Вы можете заметить, что в вышеупомянутом списке для каждого octet
в части хоста возможны не все значения. Это потому что номера хоста со
всеми  octets равными 0 или 255 сохранены для специальных целей. Адрес
в  котором  все  биты хост части -- ноль относится ко всей сети, а где
все биты хост части 1 назван broadcast (широковещательным) адресом. Он
относится   ко   всем   хостам   из  указанной  сети.  Таким  образом,
149.76.255.255  не  существующий  адрес  хоста,  он  относится ко всем
хостам сети 149.76.0.0.

     Имеются  еще  два  зарезервированных адреса, 0.0.0.0 и 127.0.0.0.
Первый  назван  default  route(путь  по умолчанию), последний loopback
(кольцевым)  адресом.  default route используется при маршрутизации IP
дэйтаграм, с которыми мы будет иметь дело ниже.

     Сеть  127.0.0.0  сохранена  для  IP  работы внутри хоста. Обычно,
адрес 127.0.0.1 будет назначен специальному интерфейсу на вашем хосте,
так   называемому   интерфейсу  loopback,  который  действует  подобно
закрытому  кругообороту.  Любой IP пакет переданный ему от TCP или UDP
будет  возвращен  к  ним  как  будто он только что прибыл из некоторой
сети.  Это  позволяет  тестировать сетевое программное обеспечение без
использования  "реальной"  сети.  Также  он  полезен,  когда Вы хотите
использовать  сетевое  программное  обеспечение  на  автономном хосте.
Например,  большое  количество UUCP участков не имеют IP связи вообще,
но все же хотят управлять INN системой новостей. Однако для правильной
работы под Linux, INN требует интерфейса loopback.

       3.3. Address Resolution(поиск по адресу).

                                - 36 -


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

     Именно поэтому необходим механизм, переводящий IP адреса в адреса
Ethernet.  Это  так  называемый  Address Resolution Protocol (Протокол
Решения  Адреса),  или  ARP. Фактически, ARP не ограничен Ethernet, он
используется  и  на  сетях  других  типов.  Идея, лежащая в основе ARP
аналогична  способу  применяемому  большинством людей, когда они хотят
найти господина X. Они ходят по толпе и выкрикивают его имя. И если он
там, он откликнется.

     Когда  ARP  хочет выяснять Ethernet адрес соответствующий данному
IP   адрес,   он   использует   особенность   Ethernet  известную  как
"broadcast"(широковещательное),    когда   дэйтаграмы   адресовываются
одновременно   всем  станциям  в  сети.  Широковещательная  дэйтаграма
посланная ARP содержит запрос с IP адресом. Каждый хост сравнивает его
с  собственным  адресом, и если они совпадают, возвращает ARP-ответ на
спрашивающий  хост.  Спрашивающий  хост  может теперь извлечь Ethernet
адрес отправителя из этого ответа.

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

     Давайте  пока  еще поговорим об ARP. Если хост обнаружил Ethernet
адрес,  он  сохранит  его  в  ARP  кэше,  чтобы, когда в следующий раз
потребуется  послать дэйтаграму рассматриваемому хосту, не требовалось
тратить  время  на  его  поиск.  Однако,  он не знает сохранить ли эту
информацию  навсегда;  например,  на  удаленном  хосте  могут поменять
Ethernet  карту,  так  что хранимая информация окажется не верной. Что
потребует   через   некоторое   время   еще  раз  полностью  повторить
описанную процедуру.

                                - 37 -


     Иногда,  также  необходимо  выяснять  IP адрес связанный с данным
Ethernet  адресом.  Это  случается,  когда  бездисковая  машина  хочет
загрузится  с сервера по сети, что является весьма общей ситуацией для
локальных   сетей.   Бездисковый  клиент,  однако,  не  имеет  никакой
информацию  относительно  себя  кроме  Ethernet  адреса!  Он  посылает
широковещательное  сообщение содержащее просьбу к серверу сообщить ему
его  IP  адрес.  Для  этого  существует  другой  протокол,  называемый
Reverse  Address  Resolution  Protocol  (Реверсивный ARP), или RARP. А
также   BOOTP  протокол,  который  служит  для  определения  процедуры
загрузки бездисковых клиентов по сети.

     3.4. IP маршрутизация

     3.4.1. IP Сети

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

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

     3.4.2. Подсети

     Эта  структура  отражена  в разбиении IP адреса на хост и сетевую
части,   как  объяснено  выше.  ПО  умолчанию,  сеть  мест  назначения

                                - 38 -

получается   из  сетевой  части  IP  адреса.  Таким  образом,  хосты с
идентичными  IP  адресами  сети  должны располагаться в пределах одной
сети, и наоборот. (2)

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

     Подсеть  принимает  ответственность  за  доставку  дэйтаграм  для
определенного  диапазона  IP  адресов. Как с классами A, B, или C, она
идентифицируется  сетевой  частью  IP  адресов.  Однако, сетевая часть
теперь  расширена,  чтобы включить некоторые биты от хост части. Число
битов  которые  интерпритируются  как  номер  в  подсети  задается так
называемой  subnet(подсетевой) маской, или netmask. Это - 32 разрядное
число,  которое  определяет  разрядную  маску  для  сетевой  части  IP
адреса.

     Сеть  Groucho  Marx  Университета  - пример такой сети. Она имеет
класс  B  с  сетевым  номером  149.76.0.0,  и  netmask  поэтому  равен
255.255.0.0.

     Внутри,  сеть  GMU  состоит  из  нескольких  меньших  сетей, типа
локальных  сетей различных отделов. Так что диапазон IP адресов разбит
на  254  подсети,  от  149.76.1.0  до  149.76.254.0.  Например,  отдел
теоретической   физики   имеет   номер   149.76.12.0.  Университетский
оптиковолоконный  кабель  тоже  сеть с собственным номером 149.76.1.0.
Эти  подсети  имеют одинаковый сетевой IP адрес, в то время как третья
octet  используется,  чтобы  различать  их  между собой. Таким образом
они будут использовать подсетевую маску 255.255.255.0.

     Картинка   3.4.2   показывает   как   149.76.12.4,  адрес  quark,
интерпритируется  по-разному когда адрес принят как обычный адрес сети
класса B, и когда используется с подсетью.

     Стоит  заметить  что  subnetting  (так  названа  техника создания
подсетей)  --  чисто  внутреннее  дело сети. Подсети создаются сетевым
владельцем  (  или  администратором).  Часто,  подсети создаются чтобы

                                - 39 -

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

     3.4.3. Gateways

     Subnetting  -  не  только  организационная  деление,  но  часто и
естественное  следствие  границ  аппаратных  средств.  Знания  хоста о
строении   данной  физической  сети,  типа  Ethernet,  являются  очень
ограниченными:  Единственные  хосты,  с которыми они способны говорить
непосредственно,  те,  что  находятся  в  той  же сети. Ко всем другим
хостам  они  могут  обращаться  только  через так называемый gateways.
Gateway  --  хост который связан с двумя или больше физическими сетями
одновременно  и  конфигурирован  так,  чтобы перекачивать пакеты между
ними.

     IP  достаточно  легко  распознать  находится  ли  хост на местной
физической   сети,   различные  физические  сети  должны  принадлежать
различным  IP  сетям.  Например  сетевой номер 149.76.4.0 сохранен для
хостов  в  локальной  сети математиков. При посылке дэйтаграм к quark,
сетевое  программное  обеспечение  на  erdos  немедленно  видит  по IP
адресу,  149.76.12.4,  что  хост  места  назначения находится в другой
физической  сети,  и поэтому может быть достигнут только через gateway
(sophus по умолчанию).

     Sophus   непосредственно  связан  с  двумя  отличными  подсетями:
отделом  математики,  и университетской магистралью. Они доступы через
различные  интерфейсы (eth0 и fddi0 соответственно). Но какой IP адрес
мы ему назначаем? 149.76.1.0 или 149.76.4.0?

     Ответ:   оба.   При   разговоре   с  сервером  в  локальной  сети
математиков,  sophus использует IP адрес 149.76.4.1, а при разговоре с
хостом на магистраль, он должен использовать 149.76.1.4.

     Таким  образом,  gateway  получает  по одному IP адресу на каждую
сеть,  к которой он подключен. Эти адреса (вместе с netmask) привязаны
к   интерфейсу  через,  который  обращаются  подсети.  Таким  образом,

                                - 40 -

интерфейсы и адреса sophus связаны так:

----------------------------------------
+-------+-------------+----------------+
| Интерфейс| адрес       |        Netmask |
+-------+-------------+----------------+
+-------+-------------+----------------+
| Eth0  | 149.76.4.1  | 255.255.255.0  |
| fddi0 | 149.76.1.4  | 255.255.255.0  |
| Lo    | 127.0.0.1   | 255.0.0.0      |
+-------+-------------+----------------+
+-------+-------------+----------------+

Последняя запись описывает loopback интерфейс lo.

На картинке 3.4.3 изображена топология части сети  Groucho Marx Университета
(GMU). Хосты, находящиеся в двух подсетях в то же самое время  показываются с
обоими адресами.

     Вообще, Вы можете не обращать внимание на различия между адресами
хоста  и  интерфейса.  Относитесь  к  адресу  хоста, который находятся
только  в  одной сети, как к адресу того и другого, хотя строго говоря
это  Ethernet  интерфейс  имеет IP адрес. Однако, это различие ощутимо
только, когда Вы работаете с gateway.

     3.4.4. Таблица маршрутизации

     Теперь сосредоточим наше внимание на том, как IP выбирает gateway
при доставке дэйтаграм к определенной сети.

     Как мы видели раньше erdos, когда передавал дэйтаграмы для quark,
проверил место назначения и нашел, что его нет в местной сети. Поэтому
он  посылает  ее gateway, sophus, который теперь сталкивается с той же
самой  задачей.  Sophus  определяет, что quark не находится в сетях, с
которыми  он непосредственно связан, так что он передает эту дэйтаграм
другому gateway, чтобы он перенаправил ее дальше. Правильный выбор был
бы  niels  (gateway  Отдела  Физики).  Но sophus нуждается в некоторой
информации чтобы определить подходящий gateway.

                                - 41 -


     Для   этого   используется   таблица  IP  маршрутизации,  которая
определяет   какие   сети   присоединены  с  помощью  каких  gateways.
Обязательно  должен  быть  указан  маршрут  по  умолчанию (the default
route),  по  которому  будут  направляться  все  пакеты  с  адресами в
неизвестных  сетях.  Этот  gateway связан с сетью 0.0.0.0.. На sophus,
эта таблица могла бы напоминать эту:

-----------------------------------------
+------------+-------------+------------+
| Сеть       | Gateway     | Интерфейс  |
+------------+-------------+------------+
+------------+-------------+------------+
| 149.76.1.0 | -           | Fddi0      |
| 149.76.2.0 | 149.76.1.2  | fddi0      |
| 149.76.3.0 | 149.76.1.3  | fddi0      |
| 149.76.4.0 | -           | Eth0       |
| 149.76.5.0 | 149.76.1.5  | fddi0      |
|...         | ...         | ...        |
| 0.0.0.0    | 149.76.1.2  | fddi0      |
+------------+-------------+------------+
+------------+-------------+------------+

     Маршруты  к  сетям,  с  которыми  sophus  связан  непосредственно
обозначаются "-" в столбце gateway.

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

     В  зависимости  от  размера сети используются различные протоколы
маршрутизации.   Для   маршрутизации   в   автономной   системе  (типа
университетского  городка),  лучше  подходит  RIP, Routing Information
Protocol  (протокол  маршрутной  информации),  который предложен в BSD

                                - 42 -

демоне.  Для  маршрутизации  между  автономными системами используются
внешние  протоколы  маршрутизации типа EGP (Внешний Gateway Протокол),
или  BGP  (  Пограничный  Gateway  Протокол);  они ( а также RIP) были
предложены в gated демоне( University of Cornell's).

     3.4.5. Метрические значения

     Динамическая  маршрутизация  основанная  на  RIP  выбирает  самый
лучший  маршрут  к  некоторому  хосту  или сети, основываясь на наборе
"hops"(перелетов),  то  есть  gateways  дэйтаграм,  рассылаемых  перед
передачей  основной  информации. Чем более короткий маршрут, тем лучше
RIP  его  оценивает.  Очень длинные маршруты с 16 или больше перелетов
рассматриваются как неподходящие и отвергаются.

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

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

     3.5. The Internet Control Message Protocol
       (Межсетевой протокол контрольных сообщений)

     IP  имеет протокол-компаньон, что ж мы до сих пор не поговорили о

                                - 43 -

нем.   Это   межсетевой   протокол   контрольных   сообщений  (ICMP) и
используется  он  сетевым  кодом  ядра,  чтобы передавать сообщения об
ошибках   и  т.  п.  другим  хостам.  Например,  предположите  что  Вы
находитесь  на  erdos и хотите использовать telnet через 12345 порт на
quark,  но на этом порте отсутствует слушающий процесс. Когда приходит
первый  TCP  пакет  на  этот  порт,  ядро определит это и отошлет ICMP
сообщение.

     Имеются  множество  ICMP сообщений, большинство из них сообщают о
каких-либо   ошибках.   Однако,  имеется  очень  интересное  сообщение
названное   Перенаправляющим   сообщением   (Redirect   message).  Оно
генирируется  модулем  маршрутизации, когда он обнаруживает что другой
хост  использует его как gateway, хотя имеется более короткий маршрут.
Например,  после  загрузки  таблицы маршрутизации на sophus может быть
неполной: она содержит маршруты к сети математиков, к FDDI магистрали,
а по умолчанию указан gateway Groucho Вычислительного центра (gcc1).

     Поэтому,  любые  пакеты  для  quark  посылаются  через gcc1, хотя
быстрее  было  бы через niels (gateway в отделе физики). При получении
таких  дэйтаграм,  gcc1  будет  извещать  что это -- плохой маршрут, и
будет  отправлять  пакет  к  niels, в то же самое время возвращая ICMP
сообщение к sophus, показывая ему лучший маршрут.

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

     3.6. Система  имен областей (Domain Name System)

     3.6.1 Поиск по имени (Hostname Resolution)

< >   Как описано выше, адресация в TCP/IP сети крутится вокруг 32
      разрядных номеров. Однако, Вам будет трудно запомнить даже некоторые из

                                - 44 -

      них.  Поэтому, хосты чаще известны под "обычными", имена типа gauss или
      strange. Поэтому требуются программы для получения IP адреса по имени
      машины Этот процесс назван Hostname resolution.

     Приложение,  которое хочет найти IP адрес по данному имени хоста,
не  должен  пытаться сделать это собственными силами Вместо этого, оно
обращается  к библиотечным функциям, которые для этого и написаны, они
называются  gethostbyname  (3) и gethostbyaddr (3). Традиционно, эти и
ряд   других   процедур  были  сгруппированы  в  отдельной  библиотеке
названной resolver; в Linux, это часть стандартной libc.

     На  маленькой сети, подобной Ethernet, или даже на нескольких, не
очень  трудно  поддерживать  таблицу,  сопоставляющую имена хоста к IP
адресам.  Эта  информация  обычно  хранится  в  файле  /etc/hosts. При
добавлении  или перемещении хоста, или при переназначении адресов, все
что  Вы  должны  сделать  --  это  изменить файл hosts на всех хостах.
Очевидно,   что   это  будет  достаточно  трудно  в  сетях  с  большим
количеством машин.

     Одно  из  решений  этой  проблемы  -- NIS, Сетевая Информационная
Система  разработанная  Sun  Microsystems,  названное  YP, или Желтыми
Страницами.  NIS хранит hosts файл (и другую информацию) в базе данных
на  главном  хосте,  от которого клиенты могут восстановить свои файлы
если  это  необходимо.  Все еще, Этот способ подходит только для сетей
среднего  размера,  потому  что  он  требует  поддерживать полную базу
данных как на центральной машине, так и на всех остальных.

     В  Internet,  первоначально  информация  об  адресах  хранилась в
единственном  файле HOSTS.TXT. Этот файл поддерживался в NIC, и должен
был  загружаться  всеми  участвующими  участками.  Когда сеть выросла,
возникло   несколько   проблем.  Постоянное  обновление  и  постоянная
перекачка  файла  HOSTS.TXT  регулярно  требовали все больше ресурсов,
нагрузка  на  сервер,  который этим занимался стала слишком высока. Но
еще  большей  проблемой  стало  придумывание  новых  (не совпадающих с
преждними) имен.

     Вот  почему,  в 1984 г, введена новая схема -- DNS, разработанная
Paul Mockapetris и решившая обе проблемы одновременно.

                                - 45 -


       3.6.2.  О  DNS

     DNS  организовывает  имена хостов по областям(domain). Область --
набор  как-то связанных участков, это могут быть машины одной сети (на
пример все машины в университетском городке, или всех хосты в BITNET),
все    они   могут   принадлежать   определенной   организации   (типа
американского  правительства),  или  они  просто географически близки.
Например,   университеты   сгруппированы   в  edu  области,  с  каждым
Университетом   или  Коледжом,  использующим  отдельную  подобласть, в
которой  и  находятся  все  его хосты. Groucho Marx Университету можно
давать  groucho.edu  область,  Отделу математики -- maths.groucho.edu.
Хост на данной сети к имени области добавляет свое имя и таким образом
получает  свое  полное  имя  в  Internet  erdos  был  бы  известен как
erdos.maths.groucho.edu.

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

     В  зависимости  от местоположения в иерархии имени, область может
быть     названа     top-level,    second-level,    или    third-level
(верхнеуровневой,   второго   уровня,  или  третьего  уровня).  Больше
количество  уровней встречается редко. Вот несколько верхних областей,
которые Вы можете часто увидеть:

      edu ( Главным образом США ) образовательные учреждения подобно
           университетам, и т.д..

      com Коммерческие организации, компании.

      org некоммерческие организации. Часто частные UUCP сети находятся в этой
          области.

      net Gateways и другие административные хосты в сети.

                                - 46 -


      mil американские военные учреждения.

      gov американские правительственные учреждения.

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

     Технически,  первый  четыре из них принадлежат американской части
Internet,  но  там встречаются и не американские участки. Это особенно
верно  для net области. Однако, mil и gov используются исключительно в
США.

     Вне  США,  каждая  страна  вообще использует собственную область,
названую  по  имени  страны  и  состоящая  из двух букв определенных в
ISO-3166.  Финляндия, например, использует fi область, fr используется
Францией,   de   Германией,   au   Австралией   и   т.д..   Ниже  этой
высокопоставленной области, NIC каждой страны может свободно раздавать
имена  хостам.  Австралия,  например,  имеет  области  второго  уровня
подобные  международным  высшим  областям, названным com.au, edu.au, и
так   далее.   Другие,   подобно   Германии,   не   используйте   этот
дополнительный  уровень,  но  используют слегка длинные имена, которые
непосредственно  относятся  к  организациям  управляющих специфической
областью. Например, на пример ftp.informatik.uni-erlangen.de.

     чонечно,  эти  национальные  области  не  подразумевают  что хост
расположенный  ниже  фактически расположен в той же стране; это только
сигнализирует  что  хост  регистрировался в NIC этой страны . Шведский
изготовитель   мог   бы   иметь   отделение  в  Австралии,  и  все  же
регистрировать все хосты в se области.

     Теперь,  организация  пространства  имен в иерархии имен областей
приятно  решает  проблему  уникальности  имен; с DNS, имя хоста должно
быть  уникально  только в пределах одной области Кроме того, полностью
квалифицированные  имена  весьма  легко  запомнить.  Но  DNS делает не
только  это:  он  позволяет Вам передать работу с подобластями местным
администраторам.  Например,  администратор  в  Groucho  Вычислительном
Центре   мог   бы  создать  подобласть  для  каждого  отдела;  мы  уже

                                - 47 -

столкнулись  с подобластями физиков и математиков. Когда он решит, что
сеть  в  Отделе Физики слишком большая и хаотичная, чтобы справиться с
ней из вне , он может просто передать контроль над physics.groucho.edu
областью  администраторам  этой сети. Тогда они свободны использовать,
любые  имена  хостов  и  назначать их IP адреса в пределах подсети без
вмешательства сверху.

     Так,  пространство имени раздроблено на зоны, которая управляется
своей  областью. Обратите Внимание На различие между зоной и областью:
область   groucho.edu   затрагивает   все   машины   в   Groucho  Marx
Университете,  в  то время как зона groucho.edu включает только хостов
которые  работают  в  компьютерном  центре непосредственно, например в
отделе  математики.  Хост  в  отделе физики принадлежат другой зоне, а
именно  physics.groucho.edu.  На  картинке 3.6.2, начало зоны отмечено
маленьким кружочком справа от имени области.

     3.6.3 Поиск имени с помощью DNS

     На  первый  взгляд,  все  эти  суета с областями и зонами кажется
делает  поиск  адреса  ужасно  сложным делом. В конце концов, если нет
центрального  органа  контролируещего  какие  имена  связаны  с  каким
адресом, тогда как - скромное приложение должно его узнавать?!

     Теперь  начинается  действительно техническая часть описания DNS.
Если  Вы  хотите  выяснять  IP  адрес erdos, тогда, DNS говорит, иди и
спроси людей, которые управляют им, и они ответят Вам.

     Фактически,  DNS  -  гигантская  распределенная  база данных. Это
осуществлено  посредством  так  называемых серверов имен(name server),
которые  снабжают  всех  информацией  о  данной области или нескольких
областях  сразу.  Для  каждой зоны имеются по крайней мере два сервера
имен, которые содержат всю информацию относительно хостов в этой зоне.
Чтобы  получить IP адрес erdos, все что Вы должны сделать -- обратится
к  серверу  имен  зоны  groucho.edu,  который и передаст Вам требуемые
данные.

     Легко  сказать,  а  как  это  сделать, подумали вы. Так как найти
сервер имен в Groucho Marx Университет? В случае если ваш компьютер не

                                - 48 -

оборудован address-resolving oracle, DNS также обеспечивает это. Когда
ваше  приложение хочет найти информацию относительно erdos, оно входит
в  контакт  с  местным  сервером имен, который проводит так называемый
итерационный опрос. Сначала он посылает запрос серверу имен об области
корня,  спрашивая  о адресе erdos.maths.groucho.edu. Сервер имен корня
сообщает,  что  это  имя не принадлежит зоне его полномочий, но вместо
этого отсылает к edu области. Таким образом, он предлагает Вам войти в
контакт  с  сервером  имен  зоны edu для получения большего количества
информации,  и  прилагает  список  всех  серверов имен edu вместе с их
адресами.  Ваш  местный  сервер  имен  пошлет  запрос  одному  из них,
например  a.isi.edu. Также как серверу имен корня, a.isi.edu знает что
люди  groucho.edu  управляют  свей  зоной  сами,  и направит Вас на их
сервера.  Местный  сервер имен запросит одного из них, который наконец
распознает имя, как принадлежащее к его зоне, и вернет IP адрес.

     Кажется,  что  для поиска одного IP адреса тратится слишком много
ресурсов.  но  это  не  сравнимо  меньше,  чем  при  преждней  схеме с
HOSTS.TXT.  Но  все  еще  имеются  места  для  усовершенствования этой
схемой.

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

     Конечно,  сервер  имен  не будет хранить эту информацию всегда, а
отбросит  ее  через некоторое время. Этот интервал времени назван time
to  live(временем жизни), или TTL. TTL задается администратором данной
зоны.

     3.6.4 Областные сервера имен (Domain Name Servers)

     Сервера имен, которые содержат всю информацию относительно хостов
в  пределах  данной  зоны названы авторитарными для этой зоны и иногда
упоминаются как master name servers. Любой запрос относительно хоста в
пределах  этой  зоны  будет  в  конце  концов  передан  одному из этих
серверов.

                                - 49 -


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

     Одна из причин иметь несколько серверов имен состoит в том, чтобы
распределять  груз  работы,  другая -- надежность. Когда одна машина с
сервером  имен ломается, все запросы будут посылаться другим серверам.
Конечно,  эта  схема  не защищает Вас от сбоев сервера, при которых он
отсылает  неправильные ответы на все запросы DNS, например от ошибок в
программе сервера.

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

     3.6.5 База данных DNS

     Мы  видели, что DNS имеет дело не только с IP адресами хостов, но
также  обменивается информацией относительно серверов имен. В DNS базе
данных фактически имеется целая куча различных типов записей.

     Единица  информации  в  DNS  базе  данных названа resource record
(записью  ресурса),  или  RR.  Каждая  запись  имеет определенный тип,
описывающий  тип  данных,  которые  в ней записаны, и определяющий тип
сети,   к   которой   она   применяется.  Последний  используется  при
определении схемы адресования, типа IP адресов (IN класс), или адресов
в  Hesiod  сетях (используемые в MIT), и др. Основной записью ресурсов
является запись, которая связывает полное имя области с IP адресом.

     Конечно,  хост  может  иметь больше чем одно имя. Однако, одно из
этих  имен  должно  быть определенно как официальное, или каноническое
имя  хоста, в то время как остальные просто псевдонимы. Различие между
ними в том, что каноническое имя хоста связано с А записью, в то время
как   другие  только  с  записью  типа  CNAME,  которая  указывает  на

                                - 50 -

каноническое имя хоста.

     Мы  не  будем  приводить  здесь  все  типы записей, а сделаем это
позже, в другой главе, здесь же ограничимся кратким примером. Картинка
3.6.5  показывает  часть  базы  данных  области  которая  загружена на
сервере имен для зоны physics.groucho.edu.

     Кроме  A и CNAME записи, Вы можете видеть специальную, занимающую
несколько  строк,  запись  сверху  файла.  Это  -  SOA запись ресурса,
расшифровывается  Start of Authority (Начало Власти), которая содержит
общую  информацию  относительно зоны, для которой этот сервер является
авторитарным. Она включает, например, время жизни для всех записей.

     Обратите  Внимание  что  все имена в файле с примером, которые не
заканчиваются   точкой   интерпретируются   относительно   groucho.edu
области.  Специальное имя "@", используемое в SOA записи при обращении
к имени данной области.

     Мы видели, что сервера имен для groucho.edu области так или иначе
должен   знать  хоть  что-то  относительно  зоны  физиков  так,  чтобы
направлять   запросы  серверам  имен.  Это  обычно  достигается  парой
записей: NS запись дается FQDN, и А запись, ассоциирующая его имя с IP
адресом.  Так  как  эти записи появляются вместе, они часто называются
склеенными  записями.  Это -- фактически единственный случаи записи, в
которой  родительская  зона  держит  информацию  относительно хостов в
зоне  подчиненного.  Склеенные  записи указывающие на сервера имен для
physics.groucho.edu показаны на рисунке 3.6.5.

      ;
       ; Authoritative Information on physics.groucho.edu
      @                     IN    SOA          {
                           niels.physics.groucho.edu.
                           hostmaster.niels.physics.groucho.edu.
                           1034             ; serial no
                           360000           ; refresh
                           3600             ; retry
                           3600000          ; expire
                           3600             ; default ttl

                                - 51 -

                         }
      ;
      ; Name servers
                            IN    NS       niels
                            IN    NS       gauss.maths.groucho.edu.
      gauss.maths.groucho.edu. IN A        149.76.4.23
      ;
      ; Theoretical Physics (subnet 12)
      niels                 IN    A        149.76.12.1
                            IN    A        149.76.1.12
      nameserver            IN    CNAME    niels
      otto                  IN    A        149.76.12.2
      quark                 IN    A        149.76.12.4
      down                  IN    A        149.76.12.5
      strange               IN    A        149.76.12.6
      ...
      ; Collider Lab. (subnet 14)
      boson                 IN    A        149.76.14.1

      muon                  IN    A        149.76.14.7
      bogon                 IN    A        149.76.14.12
      ...

Картинка 5. фрагмент файла amed.hosts для Отдела Физики.

     3.6.6. Обратный поиск.

     После   обнаружения   IP  адреса,  принадлежащего  хосту,  иногда
желательно  выяснять  каноническое  имя хоста, соответствующее данному
адресу.   Это   называется   reverse  mapping(обратное  отображение) и
используется   несколькими  сервесами,  чтобы  проверить  идентичность
клиента.  При  использовании единственного hosts файла, обратный поиск
заключается   просто  в  проверке  этого  файла.  В  DNS,  конечно  не
проводится просмотр всего адресного пространсва. Вместо этого, создана
специальная  область, inaddr.arpa, она содержит IP адреса всех хостов.
в  перевернутой  dotted-quad  записи  Например,  IP  адрес 149.76.12.4
соответствует  имени  4.12.76.149.in-addr.arpa.  Тип  записи  ресурса,
связывающий это имя с именем, называется PTR.

                                - 52 -


      ;
      ; Zone data for the groucho.edu zone.
      @                   IN       SOA          {
                           vax12.gcc.groucho.edu.
                           hostmaster.vax12.gcc.groucho.edu.
                           233              ; serial no
                           360000           ; refresh
                           3600             ; retry
                             3600000          ; expire
                           3600             ; default ttl
                         }
      ....
      ;
      ; Glue records for the physics.groucho.edu zone
      physics             IN     NS        niels.physics.groucho.edu.
                          IN     NS        gauss.maths.groucho.edu.
      niels.physics       IN     A         149.76.12.1
      gauss.maths         IN     A         149.76.4.23
      ...

Картинка 6. фрагмент файла named.hosts для GMU.

     Создание  зоны  полномочий обычно означает что ее администраторам
дают  полный контроль над тем как назначать адреса и имена хостов. Так
как они обычно управляют одной или более IP сетями или подсетями, одна
DNS  зона может охватывать несколько IP сетей. Отдел Физики, например,
включает подсети 149.76.8.0, 149.76.12.0, и 149.76.14.0.

     Как  следствие,  новые  зоны  должны быть записаны в in-addr.arpa
области:        8.76.149.in-addr.arpa,       12.76.149.in-addr.arpa, и
14.76.149.in-addr.arpa.  Иначе,  установка  нового  хоста  в  Collider
лаборатории  требовала  бы  обращения  к  родительской  области  чтобы
отметится  в  ее in-addr.arpa файле. Зональная база данных для подсети
12 показана на картинке 3.6.6. Соответствующие склеенные записи в базе
данных зоны родителя показывается на картинке 3.6.6.

      ;

                                - 53 -

      ; the 12.76.149.in-addr.arpa domain.
      @                IN     SOA   {
                           niels.physics.groucho.edu.
                           hostmaster.niels.physics.groucho.edu.
                           233 360000 3600 3600000 3600
                         }
      2                IN     PTR       otto.physics.groucho.edu.
      4                IN     PTR       quark.physics.groucho.edu.
      5                IN     PTR       down.physics.groucho.edu.
      6                IN     PTR       strange.physics.groucho.edu.

Картинка 7. фрагмент файла named.rev для подсети 12.

      ;
      ; the 76.149.in-addr.arpa domain.
      @                   IN       SOA          {
                           vax12.gcc.groucho.edu.
                           hostmaster.vax12.gcc.groucho.edu.
                           233 360000 3600 3600000 3600
                         }
      ...
      ; subnet 4: Mathematics Dept.
      1.4              IN     PTR      sophus.maths.groucho.edu.
      17.4             IN     PTR      erdos.maths.groucho.edu.
      23.4             IN     PTR      gauss.maths.groucho.edu.
      ...
      ; subnet 12: Physics Dept, separate zone
      12               IN     NS       niels.physics.groucho.edu.
                       IN     NS       gauss.maths.groucho.edu.
      niels.physics.groucho.edu. IN  A 149.76.12.1
      gauss.maths.groucho.edu. IN  A   149.76.4.23
      ...

Картинка 8. фрагмент файла named.rev  для сети

     Одно важное следствие этого то, что зоны могут создаваться только
как  наборы  IP  сетей,  и,  даже  круче,  количество  нулевых битов в
netmasks должно выть кратно 8. Все подсети в Groucho Marx Университете

                                - 54 -

имеют  netmask  255.255.255.0,  так  что  in-addr.arpa зона может быть
создана  для  каждой  подсети.  Однако,  если netmask 255.255.255.128,
создание  зон  для  подсети 149.76.12.128 будет невозможно, потому что
нет  никакой  возможности  сообщить  DNS,  что  12.76.149.in-addr.arpa
область   была   раздроблена   на   две   зоны,   с   именами   хостов
располагающимися от 1 до 127, и 128 до 255, соответственно.
.
                                - 55 -



     4. Конфигурирование сетевых аппаратных средств.

     4.1. Устройства, драйвера, и все это

     До  сих  пор,  мы  весьма  немного  говорили относительно сетевых
интерфейсов  и  общих  проблем  TCP/IP,  но  не  говорили  о  том, что
происходит,  когда  "сетевой  код"  в  ядре  обращается  к  аппаратным
средствам.  Для  этого,  мы  должны  немного  поговорить  о концепциях
интерфейсов и драйверов.

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

     Для   того   чтобы   использовать   Ethernet   карту,  необходимы
специальные  функции, расположенные в ядре вашего Linux, которые знают
как   работать   с  этим  устройством.  Это  так  называемые  драйвера
устройств.  Например,  Linux  имеет драйвера устройства для нескольких
марок  Ethernet плат которые очень похожи по выполняемым функциям. Они
известны  как  "Becker  Series  Drivers" ,и называются так по имени их
автора,  Donald  Becker.  Другой  пример  -  D-link  драйвер,  который
работает  с  адаптером  D-link пакетов, присоединяемым к параллельному
порту.

     Но,  что  мы подразумиваем, когда говорим что драйвер "управляет"
устройством?  Давайте  вернемся  к  Ethernet  плата,  которую  мы  уже
упоминали.  Драйвер  должен  быть  способен работать с переферией этой
платы: он должен посылать команды и данные плате, в то время как плата
должна передать полученные данные драйверу.

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

адреса Типичные основные адреса для Ethernet плат 0x300, или 0x360.

     Обычно,  Вы не должны волноваться относительно проблем аппаратных
средств,  типа  основного  адреса,  потому  что ядро делает попытку во
время   загрузки   обнаружить  местоположение  платы.  Это  называется
autoprobing(автоматический  поиск), который означает что ядро во время
загрузки  считывает  несколько  участков памяти и сравнивает считанные
данные  с  тем,  что  должны  быть, если установлена Ethernet. Однако,
существуют   Ethernet  платы,  которые  ядро  не  может  автоматически
обнаружить; это часто случается с дешевыми Ethernet картами.

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

     Другой  параметр,  который Вы могли бы сообщить ядру -- interrupt
request  channel  (канал  прерывания  запроса).  Компоненты аппаратных
средств  обычно  прерывают  ядро  когда  они  нуждаются  во  внимании,
например  когда  прибыли  данные,  или произошли другие события. В PC,
прерывание может происходить на одном из 15 каналов (0, 1, 3 и до 15).
Номер  прерывания назначенный компоненту аппаратных средств называется
interrupt request channel или IRQ.

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

     Интерфейсы   идентифицируются   посредством   имен.   Эти   имена
определенны  внутри  ядра,  это  не файлы устройств в директории /dev.
Типичные  имена  для  интерфейсов  Ethernet.  -  eth0,  eth1,  и  т.д.
Назначение  интерфейсов  для  определенных устройств обычно зависит от
способа,   которым   устройства   конфигурированы;   например   первая
установленная  Ethernet  плата  станет  eth0, следующая -- eth1, и так
далее.   Исключение  из  этого  правила  -  SLIP  интерфейсы,  которые
назначаются  динамически;  То  есть  всякий раз, когда устанавливается
SLIP связь, последовательному порту назначается интерфейс


                                - 57 -

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

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

     This processor honours the WP bit even when in supervisor mode. Good.
     Floppy drive(s): fd0 is 1.44M
     Swansea University Computer Society NET3.010
     IP Protocols: ICMP, UDP, TCP
     PPP: version 0.2.1 (4 channels) OPTIMIZE FLAGS
     TCP compression code copyright 1989 Regents of the University of California
     PPP line discipline registered.
     SLIP: version 0.7.5 (4 channels)
     CSLIP: code copyright 1989 Regents of the University of California
     dl0: D-Link DE-600 pocket adapter, Ethernet Address: 00:80:C8:71:76:95
     Checking 386/387 coupling... Ok, fpu using exception 16 error reporting.
     Linux version 1.1.11 (okir@monad) #3 Sat May 7 14:57:18 MET DST 1994

     Здесь  показано что ядро компилировалось с TCP/IP, и с драйверами
для  SLIP,  CSLIP,  и  PPP.  Третья  строка  c  низу сообщает, что был
обнаружен  адаптер d-link, и он установился как интерфейс dl0. Если Вы
имеете  Ethernet  карту,  ядро  обычно печатает строку, начинающуюся с
eth0,  и  сопровождаемую  типом  обнаруженной  карты.  Если  Вы имеете
Ethernet  карту,  но  не  увидели это сообщение, это означает что ядро
неспособно обнаружить вашу плату. Об этом мы поговорим позже.

     4.2. Конфигурирование ядра

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


                                - 58 -

     При   управлении  Linux  системой,  Вы  должны  быть  знакомы  со
строением  ядра.  Основы этого объясняются в "Installation and Getting
Started"  написанной Matt Welsh, который является также частью проекта
Linux документации. Потому, в этой секции мы будем обсуждать только те
стороны конфигурации Linux, которые относятся к сети.

     При  запуске  make  config,  сначала Вас спрашивают общие вопросы
конфигурации,  например  хотите  ли  Вы  в  ядре  иметь математический
эмулятор  или  нет,  и  т.д..  Один  из  этих вопросов -- хотите ли Вы
поддержку  TCP/IP  сети.  Вы  должны  ответить  y, чтобы получить ядро
способное работать с сетью.

     4.2.1. Опции ядра в Linux 1.0 и выше

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

     Последующий список вопросов относится к проблемам поддержки сети.
Точный    набор   опций   конфигурации   постоянно   меняется,   из-за
продолжающейся   разработки.   Типичный   список   опций  предлагаемых
большинством  версий  ядра  (в  основном  в 1.0 1.1) напоминает этот (
комментарии даются italics шрифтом):
     *
     * Network device support
     *
     Network device support? (CONFIG ETHERCARDS) [y]

     Несмотря  на  макро  название  указанное  в  скобках,  Вы  должны
ответить  на  этот  вопрос  y,  если  Вы хотите использовать любой тип
сетевых  устройств, независимо от того является ли оно Ethernet, SLIP,
или   PPP.   При  ответе  y,  поддержка  для  устройств  Ethernet-типа
разрешается   автоматически.   Поддержку   для  других  типов  сетевых
драйверов нужно разрешить отдельно:

     SLIP (serial line) support? (CONFIG SLIP) [y]
     SLIP compressed headers (SL COMPRESSED) [y]
     PPP (point-to-point) support (CONFIG PPP) [y]

                                - 59 -

     PLIP (parallel port) support (CONFIG PLIP) [n]

     Эти  вопросы  касаются  различных протоколов связи поддерживаемых
Linux.   SLIP  позволяет  Вам  транспортировать  IP  дэйтаграмы  через
последовательные линии. Опция сжатия заголовков обеспечивает поддержку
CSLIP,  позволяющий  сжимать  TCP/IP  заголовки  всего  в  три  байта.
Обратите  Внимание что эта опция ядра не включает CSLIP автоматически,
она просто обеспечивает необходимые функции для него.

     PPP  -  другой протокол для построения сетей на последовательными
линиях.  Он  еще  более  гибок  чем SLIP, и не ограничен только IP, но
также  поддерживает  IPX.  Так как поддержка PPP была закончена только
недавно, эта опция может быть не представлена в вашем ядре.

     PLIP обеспечивает пересылку IP дэйтаграм через параллельный порт.
Он  главным  образом  используется  для  того чтобы связаться с PC под
управлением DOS.

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

     NE2000/NE1000 support (CONFIG NE2000) [y]
     WD80*3 support (CONFIG WD80x3) [n]
     SMC Ultra support (CONFIG ULTRA) [n]
     3c501 support (CONFIG EL1) [n]
     3c503 support (CONFIG EL2) [n]
     3c509/3c579 support (CONFIG EL3) [n]
     HP PCLAN support (CONFIG HPLAN) [n]
     AT1500 and NE2100 (LANCE and PCnet-ISA) support (CONFIG LANCE) [n]
     AT1700 support (CONFIG AT1700) [n]
     DEPCA support (CONFIG DEPCA) [n]
     D-Link DE600 pocket adaptor support (CONFIG DE600) [y]
     AT-LAN-TEC/RealTek pocket adaptor support (CONFIG ATP) [n]
     *
     * CD-ROM drivers
     *

                                - 60 -

      ...

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

        NFS filesystem support (CONFIG NFS FS) [y]

     4.2.2. Опции ядра в Linux 1.1.14 и выше

     При  запуске  Linux  1.1.14,  в  который  добавили поддержку IPX,
процедура  конфигурации  слегка  изменена.  Общая  секция опций теперь
спросит   хотите   ли   Вы   поддержку  сети  вообще.  Что  немедленно
сопровождается парой вопросов о разных сетях.

     *
     * Networking options
     *
     TCP/IP networking (CONFIG INET) [y]

     Чтобы использовать TCP/IP сеть, Вы должны ответить на этот вопрос
y.  Если  Вы  отвечаете  n, Вы будете все еще способны собирать ядро с
поддержкой IPX.

    IP forwarding/gatewaying (CONFIG IP FORWARD) [n]

     Вы  должны  здесь  ответить  Y,  если  ваша система действует как
gateway  между двумя Ethernet, или между Ethernet и SLIP, и т.д.. Хотя
не   причинит   вреда   установить   ее   по   умолчанию,   но   чтобы
отконфигурировать хост как так называемый firewall, вы должны ответить
здесь  нет.  Firewalls  --  хосты  которые  связаны с двумя или больше
сетями,  но  не  позволяют  им общаться. Обычно они используются чтобы
обеспечить  пользователям сетей с доступом к Internet минимальный риск
проникновения  из вне. Пользователям позволяется входить на firewall и
работать с Internet, но машины компании будут защищены от нападений из
вне, потому что любые внешние хосты не могут пересечь firewall.
     *

                                - 61 -

     * (it is safe to leave these untouched)
     *
     PC/TCP compatibility mode (CONFIG INET PCTCP) [n]

     Эта  опция  работает  с  несовместимостью  с  некоторыми версиями
PC/TCP,  коммерческими TCP/IP выполненными для DOS. Если Вы разрешаете
эту  опцию,  Вы  все  еще  будете  способны общаться с нормальной Unix
машиной, но она вредна для медленных соединений.

     Reverse ARP (CONFIG INET RARP) [n]

     Эта   функция   включает  RARP.  RARP  используется  бездисковыми
клиентами  и  X-терминалами  во  время  загрузки для запроса своего IP
адрес.  RARP  необходим  только  для  работы  с этими клиентами. Самый
последний  пакет сетевых утилит (net-0.32d) содержит небольшую утилиту
rarp которая позволяет Вам добавлять системы в RARP кэш.

      Assume subnets are local (CONFIG INET SNARL) [y]

     При  посылки  данных  по  TCP ядро, перед передачей их IP, должно
разбивать  поток на несколько пакетов. Большие пакеты используются для
работы  в локальной сети типа Ethernet, меньшие в случае, когда данные
посылаются  куда-то  далеко.  Если  Вы  запрещаете  SNARL,  ядро будет
работать  только  с  локальными  сетями,  к которым он непосредственно
подключен.  Так,  если  Вы  посмотрите на сеть класса B в Groucho Marx
Университете,  там  большинство  хостов подключены к только одному или
двум  подсетям.  Если Вы разрешаете SNARL, ядро будет предполагать что
все  подсети местные и используют большие пакеты при разговоре с всеми
хостами в университетском городке.

     Если  Вы  хотите  использовать меньшие размеры пакетов для данных
посланных  определенным  хостам (потому что, например, данные проходят
через   SLIP  связь),  Вы  можете  cделать  это  используя  mtu  опции
маршрутизации, которые кратко обсуждены в конце этой главы.

      Disable NAGLE algorithm (normally enabled) (CONFIG TCP NAGLE OFF) [n]

     Правила  Nagle  используются  чтобы избежать посылки маленьких IP

                                - 62 -

пакетов,   также   названные  tinygrams.  Tinygrams  обычно  создаются
диалоговыми  сетевыми программами, которые передают отдельные символы,
типа  telnet  или  rsh.  Tinygrams может стать особенно неудобными при
связи  по  узкополосным  линиям.  Nagle  алгоритм пытается избегать их
сдерживая при некоторых обстоятельствах передачу TCP данных. Вам стоит
отключить  Nalge алгоритм, только если у вас есть серьезные проблемы с
получением пакетов.

     The IPX protocol (CONFIG IPX) [n]

     Это   опция   включает   поддержку   IPX,  транспортный  протокол
используемый  Novell  сетями.  Он  все  еще  в  разработке  и не очень
полезен.  Единственная  польза  -- обмен данными с IPX утилитами DOS и
передача  данных между вашими novell сетями через PPP связь. Поддержка
протоколов  высокого  уровня  для  Novell  сети в обозримом будущем не
будет, так как спецификации бесплатно не достать.

     В  ядре 1.1.16, Linux поддерживается еще один тип драйвера, dummy
driver  (фиктивный  драйвер).  Следующий  вопрос  появляется  в начале
секции драйверов устройств.

     Dummy net driver support (CONFIG DUMMY) [y]

     Фиктивный  драйвер  в  действительности делает немного, но весьма
полезен  на  автономном или SLIP хосте. Это в основном замаскированный
loopback интерфейс. Этот вид интерфейса нужен на хостах, которые имеют
SLIP но не имеют Ethernet, но хотят иметь интерфейс, который все время
держит ваш IP адрес. Чуть больше он обсуждается в секции 6.7.7 в главе
6 ..

     4.3. Путешествие по сетевым устройствам Linux

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

     В Linux имеются ряд стандартных имен интерфейсов, которые описаны
ниже.  Большинство  драйверов  поддерживают больше чем один интерфейс,

                                - 63 -

тогда интерфейсы перечисляются как в eth0, eth1, и т.д..

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

     ethn n-ая Ethernet карта. Это имя интерфейса генерируется для
          большенства Ethernet плат.

      dln Это интерфейс доступа к D-Link  DE-600 пакетному адаптеру (другое
          Ethernet устройство). Разница в том, что DE-600
          работает через параллельный порт.

      sln n-ый SLIP интерфейс. Первая последовательная линия отконфигурируемая под SLIP
          становится sl0, и т.д.. Ядро поддерживает  до четырех SLIP
          интерфейсов.

     pppn n-ый PPP интерфейс. Подобно SLIP интерфейсам, PPP интерфейс
          связан с последовательной линией, если только она отконфигурирована для
          PPP. В настоящее время поддерживается до четырех
          интерфейсов.

     plipn n-ый PLIP интерфейс. PLIP транспортирует IP дэйтаграмы по
          параллельным линиям. Поддерживается до трех PLIP интерфейсов.
          Они устанавливаются PLIP драйвером при загрузке системы,
          и отображают параллельные порты.

     Для  других  драйверов интерфейса, которые могут быть добавлены в
будущем, подобно ISDN или AX.25, будут предоставлены другие имена.

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


     4.4. Установка Ethernet


                                - 64 -

     Сейчас  Linux  поддерживает различные марки Ethernet карт. Больше
всего  драйверов  были  написаны  Donald Becker (becker@super.org). Он
автор   семейства   драйверов   для   карт   основанных   на  National
Semiconductor  8390  чипе;  они  стали  известными  как  серия  Becker
драйверов.  Имеются  также драйвера для пары изделий для D-Link, среди
них  D-Link  адаптер,  который  предлагает  доступ  к  Ethernet  через
паралельный   порт.   Драйвер   для   этот  был  написан  Bjrn  Ekwall
(bj0rn@blox.se).   DEPCA   драйвер   был   написан   David  C.  Davies
(davies@wanton.lkg.dec.com).

     4.4.1. Прокладка Ethernet кабеля.

     Если  вы устанавливаете Ethernet впервые в вашей жизни, несколько
сказанных  здесь  слов  могут  быть  вам  полезны.  Ethernet  -  очень
чувсвителен  к  правельности  прокладки  кабеля. Кабель должен с обоих
концов  закрыватся 50 Омным резистором и не каких ответвлений. Если Вы
используете  тонкий  кабель с T-образными BNC переходами, эти переходы
должны быть вкручены непосредственно в плату.

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

     4.4.2. Поддержка платы

     Полный  список  поддерживаемых  плат  доступен  в Ethernet HOWTOs
расположенных на comp.os.linux.announce Paul Gortmaker.

     Вот список наиболее широко известных платы, поддерживаемых Linux.
Полный  список в HOWTO приблизительно в три раза длиннее. Однако, даже
если  Вы  нашли  вашу  плату  в  этом списке, проверите сначала HOWTO;
иногда  существуют  важные  детали  относительно  работы этих карт. На
пример,  некоторые  DMA-основанные  Ethernet  платы  используют тот же
самый  DMA  канал  что  и  Adaptec  1542  SCSI  контролер.  Если Вы не
переместите  один из них на другой DMA канал, не удивляйтесь, что ваша
Ethernet  плата  пишет  данные  в  произвольные  места вашего жесткого
диска.


                                - 65 -

3Com EtherLink  поддерживаются и 3c503 и 3c503/16, как - 3c507 и 3c509. 3c501
          также поддерживается, но слишком медленна, чтобы ее покупать.

Novell Eagle NE1000 и NE2000, и разнообразные клоны. NE1500 и NE2100 также
          поддерживаются.

Western Digital/SMC WD8003 и WD8013 ( то же самое что  SMC Elite и SMC Elite
          Plus) поддержана также и более новая SMC Elite 16 Ultra.


Hewlett Packard HP 27252, HP 27247B и HP J2405A.


D-Link DE-600 pocket adaptor, DE-100, DE-200, и DE-220-T.. Имеется также
          комплект для DE-650-T, который является PCMCIA картой. (4)


DEC DE200 (32K/64K), DE202, DE100, и DEPCA rev E.


Allied Teliesis AT1500 and AT1700.

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


     4.4.3.  Автоматическое определение Ethernet

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

------------------------------------------------------
+--------------+-------------------------------------+
|карта         | адреса поиска                       |
+--------------+-------------------------------------+
|WD/SMC        | 0x300, 0x280, 0x380, 0x240          |

                                - 66 -

|SMC 16 Ultra  | 0x300, 0x280                        |
|3c501         | 0x280                               |
|3c503         | 0x300, 0x310, 0x330, 0x350, 0x250,  |
|              | 0x280, 0x2a0, 0x2e0                 |
|NEx000        | 0x300, 0x280, 0x320, 0x340, 0x360   |
|HP            | 0x300, 0x320, 0x340, 0x280, 0x2C0,  |
|              | 0x200, 0x240                        |
|DEPCA         | 0x300, 0x320, 0x340, 0x360          |
+--------------+-------------------------------------+
+--------------+-------------------------------------+

     Имеются  два  ограничения  autoprobing.  Во  первых,  он может не
распознавать   все   платы  должным  образом.  Это  особенно  касается
некоторых  из  дешевых  клонов  известных  плат, а также для некоторых
WD80x3 плат. Вторая проблема состoит в том, что ядро находит не больше
одной  платы.  Если  Вы  используете  больше  чем одну плату, или если
autoprobe  не  в  состоянии  обнаружить  вашу  плату,  Вы  должны явно
сообщить ядру основной адреса карты и имя.

     В Net-3, для этого Вы может использовать две различных схемы Один
путь  состoит  в  том,  чтобы  изменить или добавить информацию в файл
drivers/net/Space.c   в  исходном  коде  ядра,  который  содержит  всю
информацию  относительно  драйверов. Это рекомендуются только, если Вы
знакомы  с  сетевым кодом. Лучший путь состoит в том, чтобы обеспечить
ядро  этой  информацией  при  загрузке.  Если  Вы используете lilo для
загрузки вашей системы, Вы можете передавать параметры ядру, определяя
их   через   опцию   в  lilo.conf.  Чтобы  сообщить  ядру  о  Ethernet
устройстве, Вы можете передавать следующий параметр:

     ether=irq,base addr,param1,param2,name

     Первые  четыре параметра числовые, в то время как последний - имя
устройства. Все числовые значения необязательные; если они опущены или
равны  нолю,  ядро  будет  пробовать  само обнаружить эти значения или
использует значение установленное по умолчанию.

     Первый  параметр  устанавливает  IRQ  для  устройства. Если он не
указан,  ядро будет пробовать обнаружить IRQ канал само. 3c503 драйвер

                                - 67 -

имеет   специальную   особенность,   которая  позволяет  ему  выбирать
свободный   IRQ   (из   5,  9,  3,  4)  и  конфигурировать  плату  для
использования этой линии.

     addr  параметр задает основной адрес ввода-вывода платы; значение
ноль сообщает ядру исследовать адреса внесенные в следующий список.

     Следующие   два   параметра   могут   использоваться   по-разному
различными драйверами. Для плат с разделяемой памятью типа WD80x3, они
определяют  начальный  и  конечный  адреса разделенной области памяти.
Другие  карты  обычно  используют  param1  чтобы устанавливать уровень
отладочной  информации.  От  1  до 7 обозначают увеличивающиеся уровни
подробности,  в  то  время  как  8 выключает их; 0 обозначает значение
установленное  по  умолчанию.  3c503  драйвер  использует param2 чтобы
выбрать   внутренний  transceiver  (установленный  по  умолчанию)  или
внешний transceiver ( значение 1). Первый использует BNC; последний --
AUI порт.

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

     Например,  прося  Linux  установить вторую Ethernet плату в 0x300
как eth1, Вы бы передали следующие параметры к ядру:

    Reserve=0x300,32 ether=0,0x300, eth1

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

     Reserve=0x340,32 ether=0,0x340, eth0

     Чтобы  выключить  autoprobing вообще, Вы можете определить addr в
-1:

                                - 68 -


     Ether=0,-1, eth0

     4.5. PLIP Драйвер

     PLIP  основан  на  IP для параллельных линий и используется, если
необходимо  соединить  две  машины.  Он использует параллельный порт и
специальный  кабель  и  позволяет достигать скоростей от 10Кбит/cек до
20Кбит/сек.

     PLIP  был  первоначально  разработан  компанией  Crynwr. Довольно
оригинальный  проект: в течение длительного времени параллельные порты
в