Разработка совершенно новой реализации стека tcp/ip, сравнимого по
возможностям и производительности с существующими реализациями была
нелегкой задачей. Отказ от переноса существующей реализации был сделан
в тот момент, когда существовала некоторая неясность, не станут ли
существующие реализации отягощены ограничениями авторских прав в связи
с судебным делом, начатым U.S.L. Кроме того, существовал значительный
энтузиазм сделать все по-своему и лучше, чем делалось ранее.
Первым добровольцем, возглавившим разработку сетевой подсистемы был
Росс Биро . Росс написал простую и
неполную, но уже пригодную к использованию систему, дополненную
драйвером для сетевой карты ethernet WD-8003. Этого было достаточно,
чтобы многие могли экспериментировать и тестировать новую систему, а
некоторые даже смогли с ее помощью подключить свои машины к интернету.
Давление, которое сообщество разработчиков Линукса, оказывало на
разработчиков сетевой подсистемы было весьма большим и в определенный
момент вынудило Росса отказаться от руководства проектом. Но его усилия
по начальной организации проекта и взятая ответственность за создание
чего-либо работоспособного в сложных условиях стали катализатором для
всех дальнейших работ и заложили основы современного успеха.
Орест Збровски написал первый
вариант интерфейса BSD sockets. Это был значительный шаг вперед, так как
это позволило переносить многие существовавшие сетевые приложения без
серьезных модификаций.
Примерно в это-же время Лоуренс Калхейн разработал первый драйвер поддержки
протокола SLIP. Это позволило многим, не имеющим доступа к локальным
ethernet-сетям, экспериментировать с новым программным обеспечением.
И снова, некоторым удалось с помощью этого драйвера подключить свои
машины к интернету. Это дало многим ощущение возможностей, которые
будет иметь Линукс с полной сетевой поддержкой и увеличило число людей,
экспериментирующих с сетевой подсистемой.
Еще одним из активных разработчиков был Фред ван Кемпен. После краткого периода неопределенности,
последовавшего за уходом Росса, Фред принял на себя руководство проектом,
без особой конкуренции. У Фреда были свои планы развития сетевой подсистемы
Линукса, и он направил основную работу именно в этих направлениях. Под его
руководством были написаны программы, названные NET-2 (в отличие от NET --
программ, написанных Россом), которые многие смогли продуктивно использовать.
Кроме того, Фред внес много предложений по новым разработкам, таким как
динамический интерфейс устройства, поддержка протокола Amateur Radio AX.25
и модульная структура сетевой подсистемы. NET-2 использовался большим
количеством людей, которое постоянно увеличивалось по мере того, как
распространялась информация о работоспособности этой системы. В тот момент
новая реализация все еще выпускалась как набор исправлений к обычному
ядру и не включалось в основное выпускаемое ядро. NET-FAQ и NET-2-HOWTO
описывали достаточно сложную процедуру, которая требовалась, чтобы заставить
сетевую подсистему работать. Фред уделял основное внимание новым разработкам,
что отнимало основную часть времени. В то же время пользователям требовалась
надежная система, которая устроила бы по крайней мере 80% пользователей.
Так же, как и в случае с Россом, пользователи стали оказывать на
разработчиков давление.
Алан Кокс предложил решить
возникшие проблемы следующим образом. Он предложил взять на себя отладку
кода NET-2 до состояния стабильной и надежной работы, которая бы устроила
большинство пользователей. При этом давление на Фреда уменьшилось бы и
позволило бы ему продолжить свою работу. Алан взялся за работу и через
некоторое время выпустил первую версию сетевой подсистемы NET-2D (от
NET-2-Debugged). Она устойчиво работала на большинстве машин, и
удовлетворяла большинство пользователей. У Алана были свои взгляды на
то, как должен развиваться проект и это привело к большому количеству
дискуссий о том, как развивать NET-2. В результате сложилось два подхода
среди разработчиков сетевой подсистемы -- первый -- "сперва
работоспособность, затем доводка" и второй -- "доводка в процессе
разработки". Линус Торвальдс (Linus Torvalds) выступил в качестве
арбитра и поддержал Алана, включив его код в стандартное выпускаемое
ядро. Фред оказался в сложной ситуации. Все его дальнейшие разработки
лишались большого количества тестеров, а это означало замедление
прогресса. Фред работал еще некоторое время, а затем Алан стал новым
лидером команды разработчиков сетевой подсистемы.
Дональд Беккер занялся
программированием нижнего уровня сетевой подсистемы и написал огромное
количество драйверов ethernet-карт. Почти все драйвера, включенные в
текущие версии ядра написаны Дональдом. В написании драйверов участвовали
и другие, но работа Дональда была столь продуктивной, что заслуживает
особого упоминания.
Алан продолжал улучшать NET-2D, параллельно занимаясь проблемами, не
указанными явно в списке первоочередных. К тому моменту, когда версии
основного ядра 1.3.* достигли состояния зрелости, сетевая подсистема
переросла в версию 3 -- NET-3, на базе которой основана текущая реализация
сетевой поддержки в Линуксе. Алан работал над многими частями сетевой
подсистемы и с помощью многих других развивал ее по многим направлениям.
Алан разработал динамические сетевые устройства и первые реализации
протоколов AX.25 и IPX. Параллельно Алан продолжал дорабатывать остальной
код и продолжает заниматься этим и сейчас.
Поддержка PPP была написана Майклом Коллахэном и Элом Лонгйиаром. Это также имело огромное значение, так
как значительно увеличило число пользователей Линукса.
Джонатан Нейлор значительно
улучшил поддержку 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 сетей советуем Вам
обратиться к следующим документам:
- 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.
|