Хабрахабр

[Перевод] История интернета: ARPANET — пакет


Схема компьютерной сети ARPA на июнь 1967. Пустой кружок – компьютер с разделением доступа, кружок с чертой – терминал на одного пользователя

Другие статьи цикла:

  • История реле
  • История электронных компьютеров
  • История транзистора
  • История интернета

К концу 1966 года Роберт Тейлор на деньги ARPA запустил проект связи многих компьютеров в единую систему, вдохновившись идеей "межгалактической сети" Джозефа Карла Робнетта Ликлайдера.

В последовавшем году Робертс принял несколько критически важных решений, которые впоследствии будут отзываться в технической архитектуре и культуре ARPANET и её последователей, в некоторых случаях – даже в течение нескольких десятилетий. Ответственность за исполнение проекта Тейлор передал в умелые руки Ларри Робертса. Первым решением по важности, хотя и не по хронологии, было определение механизма маршрутизации сообщений от одного компьютера к другому.

Проблема

Если компьютер А хочет отправить сообщение компьютеру В, как этому сообщению найти путь от одного к другому? В теории, можно позволить каждому узлу сети связи общаться со всеми остальными, связав физическими кабелями каждый узел с каждым. Для связи с В компьютер А просто отправит сообщение по исходящему кабелю, соединяющему его с В. Такую сеть называют полносвязной. Однако при любом значительном размере сети такой подход быстро превращается в непрактичный, поскольку количество соединений увеличивается, как квадрат количества узлов (если быть точным, то как (n2 + n) / 2).

В начале 1960-х было известно два базовых подхода к решению этой задачи. Поэтому требуется некий способ построения маршрута сообщения, который бы по прибытию сообщения на промежуточный узел отправлял бы его дальше к цели. Этот подход использовался телеграфной системой. Первый – метод коммутации сообщений через «хранение и передачу». Когда сообщение прибывало на промежуточный узел, его временно сохраняли там (обычно в виде бумажной ленты), пока не появлялась возможность передать его далее к цели, или в ещё один промежуточный центр, находящийся ближе к цели.

Задержка в несколько минут после каждого высказывания, сделанного по телефону, которое необходимо было расшифровать и передать к месту назначения, давала бы ощущение разговора с собеседником, находящимся на Марсе. Потом появился телефон, и потребовался новый подход. Звонивший начинал каждый вызов с отправки особого сообщения, обозначающего, кому он хочет позвонить. Вместо этого телефон использовал коммутацию каналов. Оператор или оборудование устанавливали выделенное электрическое соединение между звонившим и вызываемым абонентами. Сначала это делали, беседуя с оператором, а потом набирая номер, обрабатывавшейся автоматическим оборудованием на коммутаторе. После установления связи мог начаться сам разговор, и связь сохранялась, пока одна из сторон не прерывала её, вешая трубку. В случае междугородных звонков для этого могло потребоваться несколько итераций, соединявших звонок через несколько коммутаторов.

С одной стороны, сообщения с данными передавались в отдельных пакетах, как на телеграфе, а не в виде непрерывных разговоров на телефоне. Цифровая связь, которую было решено использовать в ARPANET для соединения компьютеров, работавших по схеме разделения времени, использовала особенности как телеграфа, так и телефона. Если файлы задерживались в пути, никто на это не жаловался. Однако эти сообщения могли быть разного размера для разных целей, от консольных команд длиной в несколько символов, до больших файлов с данными, передаваемых от одного компьютера к другому. Но удалённая интерактивность требовала быстрой реакции, как при телефонном звонке.

Изменение или потеря при передаче одного символа в телеграмме, или пропадание части слова в телефонном разговоре вряд ли могли серьёзно нарушить общение двух людей. Одним важным отличием между компьютерными сетями данных с одной стороны, и телефоном с телеграфом с другой, была чувствительность к ошибкам в данных, обрабатываемых машинами. Поэтому каждое сообщение нужно было проверить на наличие ошибок, и повторно отправить в случае их обнаружения. Но если шум на линии переключал единственный бит с 0 на 1 в команде, отправляемой на удалённый компьютер, это могло полностью поменять смысл команды. Такие повторы были бы слишком затратными для крупных сообщений, а вероятность возникновения ошибок в них была больше, поскольку они дольше передавались.

Решение этой проблемы пришло благодаря двум независимым событиям, случившимся в 1960, однако то из них, что появилось позднее, было замечено первым Ларри Робертсом и ARPA.

Встреча

Осенью 1967 года Робертс прибыл в Гатлинбург, Теннеси, из-за покрытых лесами вершин Грейт-Смоки-Маунтинс, чтобы доставить документ, повествующий о планах ARPA по развёртыванию сети. Он уже почти год работал в бюро технологий обработки информации (Information Processing Technology Office, IPTO), но многие подробности проекта сети были ещё весьма туманными, включая и решение проблемы маршрутизации. Кроме размытых упоминаний о блоках и их размерах, единственной отсылкой к ней в работе Робертса было краткое и уклончивое замечание в самом конце: «Кажется необходимым удерживать периодически используемую линию связи для получения откликов за время от одной десятой до одной секунды, необходимых для интерактивной работы. Это весьма затратно с точки зрения ресурсов сети, и если только у нас не появится возможность звонить быстрее, коммутация сообщений и концентрация станут очень важными для участников сети». Очевидно, к тому моменту Робертс ещё не решил, отказываться ли от использованного им совместно с Томом Марриллом в 1965-м году подхода, то есть, соединения компьютеров через коммутируемую телефонную сеть посредством автонабора.

Роджер Скантлбери пересёк Атлантику, прибыв из Британской национальной физической лаборатории British National Physical Laboratory (NPL) с докладом. По совпадению на том же симпозиуме присутствовал и другой человек, с куда как лучше продуманной идеей решения проблемы маршрутизации в сетях данных. Эту технологию разработал его руководитель в NPL, Дональд Дэйвис. Скантлбери отвёл Робертса в сторонку после его доклада, и рассказал ему о своей идее коммутации пакетов. В США достижения и история Дэйвиса известны плохо, хотя осенью 1967 группа Дэйвиса из NPL, по меньшей мере, на год опережала ARPA со своими идеями.

Он выпустился из Имперского колледжа в Лондоне в 1943 в 19 лет, и его сразу же приняли в секретную программу разработки ядерного оружия под кодовым названием Tube Alloys. Дэйвис, как и многие ранние пионеры электронных компьютеров, по образованию был физиком. После войны от математика Джона Вомерсли он услышал о проекте, которым тот руководил в NPL – это было создание электронного компьютера, который должен был выполнять всё те же вычисления с гораздо большей скоростью. Там он руководил группой людей-вычислителей, использовавших механические и электрические калькуляторы для быстрой выдачи численных решений задач, связанных с ядерным синтезом (его руководителем был Эмиль Юлиус Клаус Фукс, немецкий физик-экспатриат, который к тому времени уже начал передавать секреты ядерного оружия в СССР). Разработанный Аланом Тьюрингом компьютер назвали ACE, «автоматической вычислительной машиной».

Внеся вклад в подробный проект и создание компьютера ACE, он так и остался глубоко вовлечённым в область вычислительных машин в качестве лидера исследований в NPL. Дэвис ухватился за эту идею, и нанялся в NPL так быстро, как только мог. В британской вычислительной среде разделение времени в американском смысле интерактивного совместного использования компьютера несколькими пользователями не было известно. В 1965 году случилось так, что он был в США на профессиональной встрече, связанной с его работой, и использовал эту возможность, чтобы побывать на нескольких крупных местах базирования компьютеров с разделением времени, чтобы посмотреть, о чём весь сыр-бор. Потом этот вариант назовут мультипрограммированием. Вместо этого у них разделение времени означало распределение загрузки компьютера между несколькими программами пакетной обработки данных (чтобы, например, одна программа работала, пока другая занята чтением с плёнки).

По дороге домой один из его коллег предложил провести семинар по совместному использованию, чтобы рассказать британскому сообществу о новых технологиях, о которых они узнали в США. Странствия Дэйвиса привели его к Project MAC в MIT, JOSS Project от RAND Corporation в Калифорнии, и к Дартмутской системе разделения времени в Нью-Гемпшире. Дэйвис согласился, и принял у себя в гостях многих главных фигур американской вычислительной области, включая Фернандо Хосе Корбато (создателя «совместимой системы разделения времени» в MIT) и самого Ларри Робертса.

Компьютеры с разделением времени дают каждому пользователю небольшой отрезок процессорного времени, а потом переключаются на другого, создавая для каждого пользователя иллюзию наличия у него собственного интерактивного компьютера. Во время семинара (или, возможно, сразу после) Дэйвиса поразила идея о том, что философию разделения времени можно применять и к линиям связи компьютеров, а не только к самим компьютерам. Более того, это решало бы все аспекты передачи данных, для которых телефонные и телеграфные коммутаторы были плохо приспособлены. Точно так же можно, разрезая каждое сообщение на кусочки стандартного размера, которые Дэйвис назвал «пакетами», один канал связи можно разделять между множеством компьютеров или пользователей одного компьютера. Любое повреждение в таких крупных сообщениях коснётся единственного пакета, который легко можно передать заново для завершения сообщения. Пользователь, работающий с интерактивным терминалом, отправляющий короткие команды и получающий короткие ответы, не будет блокирован передачей большого файла, поскольку эта передача будет разбита на множество пакетов.

В тот момент самые передовые телефонные сети были на грани компьютеризации коммутаторов, и Дэйвис предложил встроить коммутацию пакетов в телефонную сеть нового поколения, создав единую широкополосную сеть связи, способную обслуживать различные запросы, от простых телефонных звонков до удалённого доступа к компьютерам. Дэйвис описал свои идеи в неопубликованной работе от 1966 года, «Предложение для цифровой сети связи». К тому времени Дэйвиса повысили до управляющего NPL, и он сформировал группу по цифровой связи под руководством Скантлбери, чтобы реализовать его проект и создать рабочую демонстрационную версию.

Отказ одного узла можно было пережить при помощи адаптивной маршрутизации, способной работать с несколькими путями до места назначения, а отказ отдельного пакета можно было решить его повторной отправкой. За год, предшествовавший конференции в Гатлинбурге, команда Скантлбери проработала все детали создания сети с коммутацией пакетов. Симуляция и анализ говорили, что оптимальным размером пакета будет 1000 байт – если сделать его сильно меньше, то расходы пропускной способности линий на метаданные в заголовке будут слишком большими, сильно больше – и время отклика для интерактивных пользователей будет слишком часто увеличиваться из-за больших сообщений.


Работа Скантлбери содержала такие детали, как формат пакета…


…и анализ влияния размеров пакета на задержки в сети.

Но при этом Пол Бэран, инженер-электрик из RAND Corporation, вообще не задумывался о нуждах пользователей компьютеров с разделением времени. Тем временем поиски Дэйвиса и Скантлбери привели к раскрытию подробных исследовательских работ, сделанных другим американцем, пришедшим к похожей идее за несколько лет до них. Целью Бэрана было отдалить ядерную войну, создав очень надёжную военную сеть связи, способную пережить даже крупномасштабную ядерную атаку. RAND был аналитическим центром, работавшим на деньги министерства обороны США в Санта-Монике, Калифорния, созданным после Второй мировой войны для долгосрочного планирования и анализа стратегических проблем для военных нужд. Для этого Бэран предложил систему, разбивающую сообщения на то, что он назвал блоками сообщений, которые можно было бы независимо передавать по сети узлов связи с избыточным количеством соединений, и затем собирать воедино в конечной точке. Такая сеть сделала бы упреждающий удар со стороны СССР менее привлекательным, поскольку было бы очень тяжело разрушить возможность США в ответ ударить по нескольким чувствительным точкам.

Робертс и Тэйлор, судя по всему, так их и не заметили. У ARPA был доступ к объёмным отчётам Бэрана для RAND, однако поскольку они не были связаны с интерактивными компьютерами, их важность для ARPANET не была очевидной. Работа NPL тоже убедила Робертса в том, что для организации хорошей пропускной способности потребуются более высокие скорости, поэтому он обновил свои планы до линий связи на 50 Кбит/с. Вместо этого в результате одной случайной встречи Скантлбери преподнёс всё Робертсу на блюдечке: хорошо продуманный механизм коммутирования, применимость к задаче создания интерактивных компьютерных сетей, справочные материалы от RAND, и даже название «пакет». Для создания ARPANET фундаментальная часть проблемы маршрутизации была решена.

Робертс позднее утверждал, что у него уже были подобные мысли в голове, благодаря работе его коллеги, Лена Кляйнрока, который якобы описал эту концепцию ещё в 1962 году, в своей докторской диссертации по сетям связи. Правда, есть и другая версия появления идеи коммутации пакетов. Однако из этой работы невероятно сложно извлечь подобную идею, и к тому же никаких других подтверждений этой версии я найти не смог.

Сети, которых не было

Как мы видим, целых две команды опередили ARPA в вопросе разработки коммутации пакетов, технологии, оказавшейся столь эффективной, что сейчас она лежит в основе практически всех коммуникаций. Почему же ARPANET стала первой значимой сетью, использовавшей её?

У ARPA не было официального разрешения на создание сети связи, однако было большое количество уже имеющихся исследовательских центров со своими компьютерами, культура «свободных» нравов, за которой практически никто не приглядывал, и целые горы денег. Всё дело в организационных тонкостях. При этом для ARPA такие деньги были мелочью, поэтому никто из его начальников не беспокоился о том, что Робертс с ними делает, пока это можно было хоть как-то притянуть к нуждам национальной обороны. Изначальный запрос Тэйлора от 1966 года на средства для создания ARPANET озвучил цифру в $1 миллион, и Робертс продолжал тратить по стольку каждый год с 1969 и далее для создания и работы этой сети.

Его работа была чисто исследовательской и аналитической, и её можно было при желании применить к обороне. У Бэрана в RAND не было ни возможностей, ни авторитета для того, чтобы что-то сделать. Но его реализация легла на плечи агентства оборонных коммуникаций, а там не особо разбирались в цифровой связи. В 1965 RAND и в самом деле порекомендовал его систему ВВС, и те согласились с жизнеспособностью проекта. Бэран убедил начальство в RAND, что это предложение лучше будет забрать, чем позволить реализовать его абы как, и загубить репутацию распределённой цифровой связи.

Ему удалось создать прототип местной сети с коммутацией пакетов (там был всего один узел, но много терминалов) в NPL в конце 1960-х, со скромным бюджетом в £120 000 за три года. Дэйвис в качестве руководителя NPL имел куда как большую власть, чем Бэран, но более ограниченный бюджет, чем у ARPA, и у него не было готовой социальной и технической сети из исследовательских компьютеров. Организацией, способной создать крупномасштабную британскую сеть с коммутацией пакетов, была британская почта, заведовавшая сетями телекоммуникаций в стране, кроме непосредственно почтовой связи. ARPANET тратила примерно половину этой суммы ежегодно на функционирование и обслуживания на каждом из множества узлов сети, исключая изначальные инвестиции в железо и софт. Дэйвису удалось заинтересовать несколько влиятельных чиновников своими идеями об объединённой цифровой сети национального масштаба, но изменить направление движения такой огромной системы было не в его силах.

При этом нельзя утверждать, что всё, кроме коммутации пакетов, упиралось в деньги. Ликлайдер же, комбинируя удачу и планирование, нашёл прекрасную теплицу, где могла бы расцвести его межгалактическая сеть. Более того, дух ARPANET определили и несколько других важных решений на стадии проектирования. Играло роль и исполнение идеи. Поэтому дальше мы рассмотрим, как ответственность распределялась между компьютерами, отправлявшими и принимавшими сообщения, и сетью, по которой они эти сообщения отправляли.

Что ещё почитать

  • Janet Abbate, Inventing the Internet (1999)
  • Katie Hafner and Matthew Lyon, Where Wizards Stay Up Late (1996)
  • Leonard Kleinrock, “An Early History of the Internet,” IEEE Communications Magazine (August 2010)
  • Arthur Norberg and Julie O’Neill, Transforming Computer Technology: Information Processing for the Pentagon, 1962-1986 (1996)
  • M. Mitchell Waldrop, The Dream Machine: J.C.R. Licklider and the Revolution That Made Computing Personal (2001)
Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть