Разработка совершенно новой реализации стека 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 имела очень большое значение, поскольку ни одна
операционная система кроме Линукса не имела встроенной поддержки этих
протоколов.
Конечно, многие сотни людей участвовали в разработке сетевой подсистемы Линукса. Многие из них будут упоминаться в специальных разделах, многие обеспечили написание модулей и драйверов, высказывали пожелания, присылали сообщения об ошибках и оказывали моральную поддержку. Все они сыграли свою роль в разработке. Сетевая подсистема Линукса -- отличный пример результата, достигнутого "анархической" разработкой, о она продолжает развиваться по многим направлениям и сейчас.
Информацию о работе с сетью в Линуксе Вы можете почерпнуть из множества источников.
Алан Кокс, нынешний ведущий разработчик сетевой подсистемы Линукса сопровождает 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, и суть возникшей проблемы. Обращайте особое внимание на все получаемые сообщения об ошибках и точно упомяните все вводимые Вами команды.
Для получения базовой информации о работе tcp/ip сетей советуем Вам обратиться к следующим документам:
этот документ можно получить как в текстовом виде, так и в виде pstscript.
этот документ можно получить как в текстовом виде, так и в виде 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.