Сетевая поддержка в Линуксе, Linux NET-3-HOWTO.: Общая информация о сетевых средствах Линукса.

Previous Next Table of Contents

## 4. Общая информация о сетевых средствах Линукса.

## 4.1 Краткая история разработки сетевой подсистемы Линукса.

Разработка совершенно новой реализации стека tcp/ip, сравнимого по возможностям и производительности с существующими реализациями была нелегкой задачей. Отказ от переноса существующей реализации был сделан в тот момент, когда существовала некоторая неясность, не станут ли существующие реализации отягощены ограничениями авторских прав в связи с судебным делом, начатым U.S.L. Кроме того, существовал значительный энтузиазм сделать все по-своему и лучше, чем делалось ранее.

Первым добровольцем, возглавившим разработку сетевой подсистемы был Росс Биро (Ross Biro `<biro@yggdrasil.com>`). Росс написал простую и неполную, но уже пригодную к использованию систему, дополненную драйвером для сетевой карты ethernet WD-8003. Этого было достаточно, чтобы многие могли экспериментировать и тестировать новую систему, а некоторые даже смогли с ее помощью подключить свои машины к интернету. Давление, которое сообщество разработчиков Линукса, оказывало на разработчиков сетевой подсистемы было весьма большим и в определенный момент вынудило Росса отказаться от руководства проектом. Но его усилия по начальной организации проекта и взятая ответственность за создание чего-либо работоспособного в сложных условиях стали катализатором для всех дальнейших работ и заложили основы современного успеха.

Орест Збровски (Orest Zborowski `<obz@Kodak.COM>`) написал первый вариант интерфейса BSD sockets. Это был значительный шаг вперед, так как это позволило переносить многие существовавшие сетевые приложения без серьезных модификаций.

Примерно в это-же время Лоуренс Калхейн (Laurence Culhane `<loz@holmes.demon.co.uk>`) разработал первый драйвер поддержки протокола SLIP. Это позволило многим, не имеющим доступа к локальным ethernet-сетям, экспериментировать с новым программным обеспечением. И снова, некоторым удалось с помощью этого драйвера подключить свои машины к интернету. Это дало многим ощущение возможностей, которые будет иметь Линукс с полной сетевой поддержкой и увеличило число людей, экспериментирующих с сетевой подсистемой.

Еще одним из активных разработчиков был Фред ван Кемпен (Fred van Kempen `<waltje@uwalt.nl.mugnet.org>`). После краткого периода неопределенности, последовавшего за уходом Росса, Фред принял на себя руководство проектом, без особой конкуренции. У Фреда были свои планы развития сетевой подсистемы Линукса, и он направил основную работу именно в этих направлениях. Под его руководством были написаны программы, названные NET-2 (в отличие от NET -- программ, написанных Россом), которые многие смогли продуктивно использовать. Кроме того, Фред внес много предложений по новым разработкам, таким как динамический интерфейс устройства, поддержка протокола Amateur Radio AX.25 и модульная структура сетевой подсистемы. NET-2 использовался большим количеством людей, которое постоянно увеличивалось по мере того, как распространялась информация о работоспособности этой системы. В тот момент новая реализация все еще выпускалась как набор исправлений к обычному ядру и не включалось в основное выпускаемое ядро. NET-FAQ и NET-2-HOWTO описывали достаточно сложную процедуру, которая требовалась, чтобы заставить сетевую подсистему работать. Фред уделял основное внимание новым разработкам, что отнимало основную часть времени. В то же время пользователям требовалась надежная система, которая устроила бы по крайней мере 80% пользователей. Так же, как и в случае с Россом, пользователи стали оказывать на разработчиков давление.

Алан Кокс (Alan Cox `<iialan@www.uk.linux.org>`) предложил решить возникшие проблемы следующим образом. Он предложил взять на себя отладку кода NET-2 до состояния стабильной и надежной работы, которая бы устроила большинство пользователей. При этом давление на Фреда уменьшилось бы и позволило бы ему продолжить свою работу. Алан взялся за работу и через некоторое время выпустил первую версию сетевой подсистемы NET-2D (от NET-2-Debugged). Она устойчиво работала на большинстве машин, и удовлетворяла большинство пользователей. У Алана были свои взгляды на то, как должен развиваться проект и это привело к большому количеству дискуссий о том, как развивать NET-2. В результате сложилось два подхода среди разработчиков сетевой подсистемы -- первый -- "сперва работоспособность, затем доводка" и второй -- "доводка в процессе разработки". Линус Торвальдс (Linus Torvalds) выступил в качестве арбитра и поддержал Алана, включив его код в стандартное выпускаемое ядро. Фред оказался в сложной ситуации. Все его дальнейшие разработки лишались большого количества тестеров, а это означало замедление прогресса. Фред работал еще некоторое время, а затем Алан стал новым лидером команды разработчиков сетевой подсистемы.

Дональд Беккер (Donald Becker `<becker@cesdis.gsfc.nasa.gov>`) занялся программированием нижнего уровня сетевой подсистемы и написал огромное количество драйверов ethernet-карт. Почти все драйвера, включенные в текущие версии ядра написаны Дональдом. В написании драйверов участвовали и другие, но работа Дональда была столь продуктивной, что заслуживает особого упоминания.

Алан продолжал улучшать NET-2D, параллельно занимаясь проблемами, не указанными явно в списке первоочередных. К тому моменту, когда версии основного ядра `1.3.*` достигли состояния зрелости, сетевая подсистема переросла в версию 3 -- NET-3, на базе которой основана текущая реализация сетевой поддержки в Линуксе. Алан работал над многими частями сетевой подсистемы и с помощью многих других развивал ее по многим направлениям. Алан разработал динамические сетевые устройства и первые реализации протоколов AX.25 и IPX. Параллельно Алан продолжал дорабатывать остальной код и продолжает заниматься этим и сейчас.

Поддержка PPP была написана Майклом Коллахэном (Michael Callahan `<callahan@maths.ox.ac.uk>`) и Элом Лонгйиаром (Al Longyear `<longyear@netcom.com>`). Это также имело огромное значение, так как значительно увеличило число пользователей Линукса.

Джонатан Нейлор (Jonathon Naylor `<jsn@cs.nott.ac.uk>`) значительно улучшил поддержку AX.25, добавив поддержку протоколов NetRom и Rose. Поддержка AX.25/NetRom/Rose имела очень большое значение, поскольку ни одна операционная система кроме Линукса не имела встроенной поддержки этих протоколов.

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

## 4.2 Источники информации о сетевой подсистеме Линукса.

Информацию о работе с сетью в Линуксе Вы можете почерпнуть из множества источников.

Алан Кокс, нынешний ведущий разработчик сетевой подсистемы Линукса сопровождает web-страницу, на которой содержатся все последние новости, касающиеся сетевой поддержки в Линуксе. Эта страничка находится по адресу www.uk.linux.org.

Другой полезный источник -- книга Олафа Кирха (Olaf Kirch) `"Network Administrator Guide"` (`"Руководство сетевого администратора"`). Она является частью Проекта по Документации Линукса ( Linux Documentation Project) и вы можете прочесть ее (на английском языке) HTML-версию по адресу Network Administrators Guide HTML version либо получить ее в других форматах по ftp с сайта sunsite.unc.edu sunsite.unc.edu LDP ftp archive. Книга Олафа -- весьма полное руководство по настройке сетевой поддержки под Линуксом.

Существует news-группа в иерархии news-групп, посвященных Линуксу, в которой обсуждаются вопросы, посвященные сетевой подсистеме -- comp.os.linux.networking

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

> `

>     To: majordomo@vger.rutgers.edu

>     Subject: <любой>

>     В теле письма напишите:

>     subscribe linux-net

> `

В различных IRC-сетях часто есть каналы `#linux` в которых Вы можете получит ответы на многие вопросы.

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

## 4.3 Источники информации о сетях, не связанные непосредственно с Линуксом

Для получения базовой информации о работе tcp/ip сетей советуем Вам обратиться к следующим документам:

tcp/ip introduction

  этот документ можно получить как в текстовом виде, так и в виде pstscript.

tcp/ip administration

  этот документ можно получить как в текстовом виде, так и в виде postscript.

За более подробной информацией Вы можете обратиться к книге

> Douglas E. Comer Internetworking with TCP/IP, Volume 1: principles, protocols and architecture, ISBN 0-13-227836-7 Prentice Hall publications, Third Edition, 1995.

Если Вы хотите писать сетевое программное обеспечение в Unix-подобных средах, очень рекомендуем Вам прочесть книгу

> W. Richard Stevens Unix Network Programming ISBN 0-13-949876-1, Prentice Hall publications, 1990.

Ожидается к выходу второе издание этой книги, в новом издании она разбита на три тома, подробности на Web-сайте фирмы Prentice-Hall.

Кроме того, можете обратиться к news-группе comp.protocols.tcp-ip.

Важным источником информации и протоколах семейства tcp-ip и интернете являются документы RFC. RFC расшифровывается как "Request For Comment" (Запрос для Обсуждения). RFC -- способ описания стандартов Интернет. Набор документов RFC можно получить из многих мест, по протоколу ftp или через WWW. Многие сайты обеспечивают доступ к RFC с возможностью поиска по ключевым словам. Один из таких сайтов находится по адресу: Nextor RFC database.

Previous Next Table of Contents