Google
 
Web avtobazar.com.ua

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 -- другая, популярная тогда операционная система для 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и библиотек. Руководство для администраторов системы, написанное 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: электронная почта и новости. 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 и Партнеры рискует, публикуя это руководство, но Я надеюсь что это окупится. Если это произойдет, Я полагаю, что этот проект сможет послужить как пример того как мир бесплатного программного обеспечения и компании могут сотрудничать, чтобы произвести что-нибудь полезное и тем и другим. На мой взгляд, O'Reilly делает большую услугу Linux сообществу (кроме книге доступной в вашем местном книжном магазине) и тем, что это может помочь всем посмотреть на Linux как на что-то серьезное, как на жизнеспособную и полезную альтернативу коммерческим UNIX операционным системам для PC. Так что же относительно различай между напечатанной версией и электронной? Andy Oram провел большую работу по преобразованию моей ранней версии в то, что можно печать. (Он просмотрел также и другие книги созданные под эгидой LDP, и повышал как мог профессиональный уровень нашей документации). С тех пор Andy начал просматривать это Руководство и редактировать копии, которые Я послал ему, книга стала значительно лучше, чем еще пол года назад. И если бы не он то книга была бы гораздо хуже чем есть сейчас Все его изменения тут же вставлялись в электронную версию, и все последующие изменения, которые будут сделаны к Руководству для администратора сети во время редактирования их O'Reilly так же будут вставлены. Таким образом не будет никаких различай между этими версиями. Все же, версия O'Reilly будет несколько отличатся: С одной стороны, люди O'Reilly проделывают массу работы над внешним видом книги на таком уровне который вы никогда не получите от стандартного TEXа С другой стороны, там будет больше картинок, и улучшенный алфавитный указатель. 

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

Если Вы следуете инструкциями этой книги, и что-нибудь не работает, пожалуйста будьте терпеливы. Некоторые из ваших проблем могут возникнуть из-за моих глупых ошибок, но могут также быть вызваны изменениями в программном обеспечении. Лучше спросить относительно своих проблем на comp.os.linux.help. Есть большая вероятность что Вы не единственный кто столкнулся с подобными вашим проблемами, и ее решение известно. Если Вы имеете возможность, Вы должны также попробовать получить самую последнюю версию ядра и сетевого программного обеспечения на одном из 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? 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 Лаборатории Системы, Компания, Соединенные Штаты 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 лыжном склоне, отмечает "опасность" или "предостережение." Читайте параграфы отмеченные этим значком более тщательно. $ И # предшествует команде оболочки которую нужно выполнит. "$" символ используется когда команда может быть выполнена простым пользователем; "#" означает что команда требует пользователя с привилегией 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 

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

В прошлом, одна из проблем которые сокрушили Linux а также отдельные пакеты было то, что в нем не был принят единый стандарт расположения системных файлов. Это приводило к несовместимости между различными пакетами и ставило перед пользователями и администраторами задачу расположения различных файлов и программ в нужном порядке. Чтобы улучшить эту ситуацию, в августе 1993 несколько людей сформировали Группу Стандартов Системы Файлов в Linux, или коротко FSSTND После шести месяцев обсуждения, группа представила проект, который представляет структуру системных файлов и определяет местоположение наиболее необходимых программ и файлов конфигурации. Этот стандарт, как предполагается, будет поддержан в основных Linux дистрибуциях и пакетах. По этому в этой книге, мы будем предполагать что любые обсуждаемые файлы находятся в местах указанных стандартом; только там где есть традиционное расположение находится в противоречии с этой спецификацией будет упомянуты альтернативные местоположения. Стандарт системы файлов в Linux может быть получен на всех основных Linux FTP серверах и их зеркалах; например, Вы можете найти его на sunsite.unc.edu в /pub/linux/docs. Daniel Quinlan, координатор группы FSSTND, может быть найден по адресу quinlan@bucknell.edu.lex 

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

2.1. Введение.

Идея сетей также стара, как и вообще идея телекоммуникаций. Рассмотрим людей, живших в каменном веке, когда для обмена сообщениями между людьми использовались барабаны. Предположим пещерный человек А хочет пригласить пещерного человека Б поиграть, но тот живет слишком далеко и не может услышать барабана, в который бьет А. Каковы же могут быть действия А? Он может а) пешком добраться до Б, б) взять барабан побольше , или в) попросить В живущего на полпути между А и Б передать сообщение. Позже это стали называть сетями. Конечно мы далеко ушли от примитивных занятий и устройств наших предков. В наши дни мы пользуемся компьютерами которые общаются между собой по большому количеству проводов, оптиковолоконных кабелей, с помощью коротких волн, и т. д. , которые позволяют легко договорится о партии в сокер. Далее, мы будем обсуждать способы и пути, с помощью которых это можно сделать. Здесь будет описано два типа сетей: те что базируются на UUCP протоколе, и те что базируются на TCP/IP. Это комплект протоколов и программ, которые предоставляют различные способы передачи информации между компьютерами. В этой главе мы рассмотрим оба типа сетей и обсудим их основополагающие принципы. Мы определим сеть как набор из нескольких хостов, которые могу обмениваться информацией между собой, часто подразумевая набор специализированных хостов которые позволяют обмениваться информацией всем частям сети. Хост -- это чаще всего компьютер, но не обязательно, это может быть и Х-терминал, и сетевой интеллектуальный принтер. Небольшой набор хостов можно называть участок(site). Связь невозможна без какого либо языка или кода. В компьютерных сетях эти языки называют протоколами(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. Чтобы сделать ваш компьютер 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 вашему хосту. Наиболее важная услуга, предоставляемая 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 для распаковки и дальнейшей обработки. Наконец, 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 был принят как стандарт и от все хостов в сети требовалось его использование. Когда 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 позволяет quark и erdos послать X11 пакеты туда и обратно создавая у вас иллюзию, что вы находитесь на удаленной системе. Сеть здесь почти прозрачна. Другое очень важное приложение в TCP/IP сетях - NFS, расшифровывается как сетевая операционная система. Это - другая форма создания прозрачной сети, она позволяет Вам установить директории от других хостов, так, чтобы они рассматривались подобно локальным файловым системам. Например, домашние директории всех пользователей могут быть на центральной машине, от которой все другие хосты в локальной сети устанавливают требуемые директории. В результате пользователи могут войти в любую машину и находиться в той же самой домашней директории. Так, можно устанавливать приложения которые требуют большого количества места на диске ( типа TeX ) только на одной машине, а остальные будут лишь экспортировать директории. Мы вернемся к NFS в главе 12 .. Конечно, это не единственные примеры того, что Вы можете делать по TCP/IP сетям. Ваши возможности почти безграничны. Теперь мы поближе познакомимся с работой TCP/IP. Вы будете нуждаться в этом чтобы понять как и почему Вы должны конфигурировать вашу машину. Мы начнем с исследования аппаратных средств, и медленно пойдем дальше. 

2.3.2. Ethernet

Тип аппаратных средств наиболее широко используемый повсюду в локальных сетях обычно называют Ethernet. Он состоит из единственного кабеля с хостами Присоединяемый к нему через connector, tap или transceivers. Простой Ethernet весьма недорог, хотя, вместе с сетью предлагает скорость в 10 Мегабитов в секунду. Ethernet бывает трех видов: толстый и тонкий, соответственно, и витая пара. Тонкий и толстый 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. Хост идентифицируется адресом, состоящем из шести байт зашитыми в 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). Есть методы, которые используют специально для медленных, но дешевых телефонных линий. Они требуют других протоколов для передачи пакетов, типа 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 в том, что он преобразует физически несходные сети в одну с виду однородную сеть. Это называется 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 дэйтаграм, а предназначен для передачи любого типа дэйтаграм. 

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 выполняет процедуру определения прав доступа, и запускает оболочку. Стандартный ввод/вывод этой оболочки перенаправляются на 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. Дополнительно о портах

Порты могут рассматриваться как точки присоединения сетевых связей. Если приложение (сервер) хочет предложить некий сетевой сервис, оно ассоциирует себя с портом и ждет клиентов (это называется слушать порт). Клиент, который хочет использовать этот сервис получает порт на местном хосте и соединяется с портом сервера на отдаленном хосте. Важная особенность портов то, что пока существует связь между клиентом и сервером, другая копия сервера может присоединиться к тому же порту и ждать подключения других клиентов. Это разрешает, например, несколько параллельных отдаленных входов на один и тот же хост, причем все используют один самый 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)). Библиотека гнезд однако несколько более общая, она обеспечивает не только класс 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. Драйвер для 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. Официальные выпуски ядра будут всегда сопровождаться набором сетевых инструментов, которые являются совместимыми с кодом представленным в ядре. 

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