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

d09d77848aa02d70723f3d41293ec496.png
Схема компьютерной сети 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, «автоматической вычислительной машиной».

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

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

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

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

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

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

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

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

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

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

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


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

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

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

Дэйвис в качестве руководителя NPL имел куда как большую власть, чем Бэран, но более ограниченный бюджет, чем у ARPA, и у него не было готовой социальной и технической сети из исследовательских компьютеров. Ему удалось создать прототип местной сети с коммутацией пакетов (там был всего один узел, но много терминалов) в NPL в конце 1960-х, со скромным бюджетом в £120 000 за три года. 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)

© Habrahabr.ru