На следующей конференции, проходившей в Гатлинберге, штат Теннесси, в октябре 1967 года, Робертс представил пересмотренный план сети. Он также дал ей имя: ARPA Net, трансформировавшееся затем в ARPANET. Однако один вопрос оставался нерешенным: потребуется ли для связи двух узлов сети выделенная телефонная линия наподобие той, которая нужна для телефонных звонков? Или есть какой-то практический способ, позволяющий разнородным потокам данных использовать линии совместно, как в системах с разделением времени для обычных телефонных линий? Раньше в том же месяце один из комитетов Пентагона выработал технические характеристики для такой сети передачи данных.
Именно тогда молодой инженер из Англии Роджер Скентле-бери представил доклад, описывающий исследования его руководителя Дональда Дэвиса из Britain’s National Physical Laboratory. В нем содержался ответ: метод деления сообщений на маленькие порции, которые Дэвис окрестил «пакетами». Скентлебери добавлял, что независимо та же идея разрабатывалась еще одним ученым Полем Бэраном из RAND. После доклада Ларри Робертс и некоторые другие слушатели столпились вокруг Скентлебери. Затем все отправились в бар, где разговор затянулся до позднего вечера.
Коммутация пакетов: Пол Бэран, Дональд Дэвис и Леонард Клейнрок
Есть много способов передачи данных по сети. Самый простой, известный как коммутация каналов, это способ, которым работает телефонная сеть: с помощью коммутаторов создается специальный канал, по которому все время разговора туда и обратно курсирует сигнал. Соединение при этом сохраняется даже во время длительных пауз. Другой метод — это коммутация сообщений, или, как его называют телеграфисты, коммутация с промежуточным хранением. В такой системе исходящее сообщение отправляется в сеть по адресу, указанному в заголовке, и последовательно передается от узла к узлу, двигаясь к месту назначения.
Еще эффективнее метод коммутации пакетов — специальный способ коммутации с промежуточным хранением, при котором сообщения разбиваются на небольшие кусочки строго одинакового размера. Эти кусочки, их называют пакетами, снабжены адресом — заголовком, указывающим, куда ему следует двигаться. Затем пакеты отправляются в путь по сети к своему месту назначения, перескакивая с узла на узел. При этом они используют те связи, которые в данный момент наиболее доступны. Если какая-то связь слишком забита данными, некоторые из пакетов отправляются по альтернативным маршрутам. Когда все пакеты добираются до нужного узла, их опять собирают вместе, используя инструкции, записанные в заголовке. «Это напоминает длинное письмо, написанное на десятках открыток. Все открытки пронумерованы и отправлены по одному и тому же адресу, — объясняет Винт Серф, один из основоположников интернета. — Каждая открытка, чтобы попасть в пункт назначения, может выбрать свой маршрут, после чего они опять собираются вместе»[494].
Как объяснил Скентлебери в Гатлинберге, первым, кто до конца разобрался в том, что из себя представляет сеть с коммутацией пакетов, был инженер Пол Бэран. Семья Бэрана иммигрировала из Польши, когда ему было два года. Они поселились в Филадельфии, где отец Пола открыл небольшую бакалейную лавку. Окончив в 1949 году Дрексельский университет, Бэран поступил в компьютерную компанию Преспера Эккерта и Джона Мокли, где занимался тестированием программ для UNIVAC. Он перебрался в Лос-Анжелес, прослушал вечерние курсы в Калифорнийском университете, а затем получил работу в RAND Corporation.
Когда в 1955 году русские успешно испытали водородную бомбу, Бэран осознал, что дело его жизни — помочь предотвратить ядерный холокост. Однажды в RAND он просматривал список исследовательских тем, интересующих штаб военно-воздушных сил, который рассылали еженедельно. Его взгляд остановился на одной из них, относившейся к разработке военной системы связи, способной пережить атаку врага. Он знал, что подобная система может помочь предотвратить обмен ядерными ударами: если одна из сторон боится, что ее система связи выйдет из строя, более вероятно, что при нарастании напряжения она попробует нанести упреждающий удар. При надежных системах связи государству ни к чему вести себя столь необдуманно агрессивно.
Бэран сформулировал две ключевые идеи, о которых написал в 1960 году. Во-первых, утверждал он, сеть не должна быть централизованной: не должно быть главного аппаратного узла, контролирующего все коммутации и маршрутизацию. Не должна она быть и просто децентрализованной, такой, которая контролируется большим числом региональных аппаратных узлов наподобие телефонной сети AT&T или карты маршрутов большой авиакомпании. Если враг захватит несколько таких пунктов, система выйдет из строя. Напротив, контроль надо полностью рассредоточить. Другими словами, каждый из узлов должен иметь равную возможность коммутировать и направлять поток данных. Именно это стало наиболее важной отличительной чертой интернета, его неотъемлемым признаком, наделяющим правами отдельного человека и ограждающим сеть от централизованного контроля.
В его представлении сеть напоминала рыбацкий невод. Все узлы наделены способностью маршрутизировать трафик, каждый из них связан с несколькими другими узлами. Если один из узлов испортить, трафик просто будет перенаправлен по другим путям. Бэран объяснял: «Централизованного контроля нет. Каждый из узлов выбирает свою простую стратегию маршрутизации». Он подчеркивал, что даже если у каждого из узлов есть только три или четыре связи, система абсолютно устойчива по отношению к ошибкам и может функционировать в любых условиях. «Достаточно трехкратного или четырехкратного дублирования, чтобы надежность сети фактически соответствовала ее теоретически предсказанным возможностям»[495].
«После того как я понял, что гарантирует надежность, следовало решить проблему прохождения сигнала через такую, похожую на невод, сеть», — рассказывает дальше Бэран[496]. Отсюда появилась его вторая идея: данные надо разбить на небольшие блоки стандартного размера. Сообщение разбивается на большое число таких блоков, каждый из которых будет быстро продвигаться от узла к узлу по своему собственному пути, а затем, достигнув пункта назначения, они будут собраны вместе. «Универсальный стандартизованный блок сообщения можно положить равным 1024 битам, — писал он. — Основная часть блоков, на которые разбивается сообщение, резервируется за передаваемыми данными, тогда как в оставшейся части должна содержаться служебная информация, необходимая для обнаружения ошибки, и данные о маршруте».
(adsbygoogle = window.adsbygoogle || []).push({});