История интернета. Глава 6 — ARPANET

Человек, который придумал интернет до интернета

1960 год. Джозеф Карл Робнетт Ликлайдер публикует статью в малоизвестном научном журнале. Называется она «Симбиоз человека и компьютера». Тираж — несколько сотен экземпляров. Читают её в основном коллеги по цеху.

Ликлайдер пишет о будущем, в котором компьютеры и люди работают вместе. Не человек обслуживает машину — а машина усиливает человека. Берёт на себя рутину, освобождает голову для настоящего мышления.

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

Результат его ошеломил.

Восемьдесят пять процентов времени — механика. Пятнадцать — мышление.

Ликлайдер был психологом по образованию. Он думал не о транзисторах и не о протоколах — он думал о том, как люди думают и что мешает им думать лучше. И он пришёл к выводу, который в 1960 году звучал фантастически: нужна сеть компьютеров, соединённых между собой, доступных любому учёному из любой точки страны.

Он называл это «межгалактической компьютерной сетью». Не из самомнения — из понимания масштаба.

Через два года Ликлайдер возглавил компьютерный отдел DARPA — исследовательского агентства Министерства обороны США. У него появились деньги. Он начал их раздавать — MIT, Stanford, UCLA, RAND Corporation. Не под конкретные продукты. Под людей и идеи.

Сам он ушёл из DARPA в 1964 году — до ARPANET оставалось пять лет. Но именно он собрал сообщество, которое его построит. Именно он сформулировал вопрос, на который ARPANET стал ответом.

Историки называют его «Ликом» и говорят, что без него интернет появился бы на десять лет позже. Может быть, на двадцать.

Роберт Тейлор и три терминала

1966 год. Роберт Тейлор сидит в своём кабинете в Пентагоне и смотрит на три терминала у стены.

Каждый терминал подключён к своему компьютеру — в разных университетах, на разных концах страны. Каждый компьютер работает по-своему, говорит на своём языке, требует отдельного входа. Чтобы получить данные из одного — надо сесть за один терминал. Из другого — встать, пересесть, заново войти в систему.

Тейлор смотрит на три терминала и думает: это абсурд.

Он военный бюрократ в хорошем смысле слова — человек, который умеет превращать идеи в финансирование. Он идёт к директору DARPA Чарльзу Херцфельду и объясняет ситуацию. Разговор занимает двадцать минут. Херцфельд выделяет миллион долларов из бюджета баллистических ракет — просто так, своей властью, без длинного согласования.

«Это было самое быстрое решение о финансировании крупного проекта, которое я видел в правительстве», — вспоминал Тейлор.

Тейлор нанимает Лоуренса Робертса — молодого инженера из MIT с репутацией человека, который умеет делать сложные вещи простыми. Ставит задачу: соединить компьютеры в сеть.

Робертс берётся за дело…

Пол Бэран и проблема ядерного удара

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

Пол Бэран работал в RAND Corporation — мозговом центре американских военных — в начале 1960-х. Его занимал один вопрос: как построить систему военной связи, которая выживет после ядерного удара?

Существующие телефонные сети были централизованными. Есть несколько главных узлов, через которые проходит весь трафик. Один прицельный удар по этим узлам — и армия глохнет. Связи нет. Координации нет. Хаос.

Бэран нарисовал три схемы.

Первая — централизованная сеть. Один главный узел, от него расходятся линии к остальным. Уязвима максимально: уничтожь центр — сеть мертва.

Вторая — децентрализованная. Несколько узлов вместо одного, каждый управляет своим районом. Лучше, но всё равно есть критические точки.

Третья — распределённая. Никаких главных узлов. Каждый узел соединён с несколькими соседями. Уничтожь любой узел — сообщение найдёт обходной путь. Уничтожь половину сети — оставшаяся половина продолжает работать.

Но как передавать сообщения по такой сети? Телефонная коммутация не подходит: она устанавливает выделенный канал между двумя точками на всё время разговора. Если канал прерван — связь теряется.

Бэран предложил другое. Разрезать сообщение на маленькие блоки — пакеты. Каждый пакет путешествует по сети самостоятельно, выбирает маршрут в зависимости от того, какие узлы доступны прямо сейчас. Добирается до получателя. Там пакеты собираются обратно в исходное сообщение.

Если часть пакетов потеряется — их запрашивают снова. Если часть сети уничтожена — пакеты идут в обход.

Пакетная коммутация.

Бэран написал одиннадцать томов с детальным описанием системы и принёс их в военные ведомства. Военные посмотрели, покачали головой: слишком сложно, AT&T говорит, что это не работает, давайте оставим как есть.

Проект положили на полку.

Параллельно — и совершенно независимо — к той же идее пришёл британский учёный Дональд Дэвис из Национальной физической лаборатории. Именно Дэвис придумал слово «пакет» в том значении, в котором мы его используем. Двое учёных в разных странах, не зная друг о друге, нашли одно и то же решение.

Хорошая идея возникает тогда, когда для неё созревает время.

Леонард Клейнрок и математика очередей

Лоуренс Робертс, взявшись за строительство ARPANET, знал про Бэрана. Знал про Дэвиса. Взял пакетную коммутацию как основу.

Но оставался открытый вопрос: а это вообще работает? Теоретически — красиво. А на практике — не превратится ли сеть в хаос, где пакеты теряются, застревают в очередях, приходят не в том порядке?

Ответ на этот вопрос за несколько лет до ARPANET дал Леонард Клейнрок — математик из MIT, написавший в 1961 году диссертацию о математической теории сетей с коммутацией пакетов.

Клейнрок доказал: пакетная сеть работает. Более того — она эффективнее использует пропускную способность каналов, чем традиционная коммутация. При коммутации каналов выделенная линия простаивает всё время, пока пользователь молчит или думает. При пакетной передаче линия занята только в момент реальной передачи данных. Остальное время она свободна для других пакетов.

Когда Робертс начал строить ARPANET, он пришёл к Клейнроку. Тот возглавил сетевую лабораторию в UCLA — один из четырёх первых узлов будущей сети.

Четыре компьютера и две буквы

К 1969 году у Робертса был план, финансирование и команда. ARPANET должен был соединить четыре узла.

UCLA в Лос-Анджелесе — лаборатория Клейнрока. Стэнфордский исследовательский институт в Менло-Парке. Калифорнийский университет в Санта-Барбаре. Университет Юты в Солт-Лейк-Сити.

Четыре компьютера. Четыре команды. Один протокол.

Физическим соединением занималась компания BBN — Bolt Beranek and Newman, кембриджская исследовательская фирма. Они построили специальные устройства — IMP, Interface Message Processors. По сути — первые маршрутизаторы в истории. Каждый IMP стоял рядом с университетским компьютером, принимал пакеты, определял маршрут, отправлял дальше.

Первый IMP доставили в UCLA 30 августа 1969 года. Второй — в SRI 1 октября.

29 октября 1969 года, в 22:30, студент UCLA Чарли Клайн сел за терминал и начал вводить команду входа в систему на компьютере в Стэнфорде. Команда называлась login.

Он набрал L. Позвонил в Стэнфорд — коллеги видят? Видят. Набрал O. Видят. Начал набирать G.

Система упала.

Первое сообщение в истории ARPANET состояло из двух букв: LO.

Программисты шутили потом, что это звучало как приветствие — lo, привет. Через час систему починили, логин прошёл полностью. Но в историю вошли именно эти две буквы.

К декабрю 1969 года все четыре узла работали. Пакеты путешествовали между Лос-Анджелесом, Менло-Парком, Санта-Барбарой и Солт-Лейк-Сити. Бэран оказался прав. Дэвис оказался прав. Клейнрок оказался прав.

Сеть работала.

Рэй Томлинсон и знак, изменивший переписку

В 1971 году сеть выросла до пятнадцати узлов. Люди начали использовать её не только для удалённого доступа к компьютерам, но и для общения между собой.

Инженер BBN Рэй Томлинсон написал программу, позволявшую отправлять текстовые сообщения с одного компьютера на другой. Нужен был разделитель между именем пользователя и именем компьютера — символ, который никогда не встречается в человеческих именах.

Томлинсон посмотрел на клавиатуру. Нашёл @.

Коммерческое «эт» — знак бухгалтеров и торговцев, обозначавший цену за единицу товара. В именах не встречается. Идеально.

Первое письмо Томлинсон отправил сам себе — тест системы. Что в нём было написано, он не помнил. Что-то вроде «qwertyuiop», говорил он в интервью. Неважно. Важен знак между именем и адресом.

Формат имя@компьютер стал стандартом электронной почты на полвека вперёд.

К 1973 году три четверти всего трафика ARPANET составляла электронная почта. Военная исследовательская сеть стала прежде всего инструментом общения. Никто этого не планировал.

Проблема, которую никто не решил

К началу 1970-х ARPANET работал. Но появилась новая проблема.

ARPANET был не единственной сетью. В Гавайях работала ALOHANET — радиосеть для связи между островами. В Великобритании — своя пакетная сеть. В Норвегии. Во Франции. Каждая сеть говорила на своём языке. Компьютер в ARPANET не мог напрямую общаться с компьютером в ALOHANET. Сети существовали как острова.

Нужен был способ соединить сети между собой. Не перестроить их — а научить разговаривать через границы.

Эту задачу в 1973 году взяли два человека.

Серф, Кан и конверт

Винтон Серф и Боб Кан познакомились в начале 1970-х. Серф — программист из Стэнфорда, работавший над программным обеспечением ARPANET ещё в UCLA при Клейнроке. Кан — инженер из BBN, один из людей, построивших первые IMP-маршрутизаторы.

Летом 1973 года они встретились на конференции в Сассексе. Кан изложил проблему. Серф предложил подход.

Следующие несколько месяцев они работали над протоколом, который позволял бы разным сетям обмениваться пакетами, не зная ничего о внутреннем устройстве друг друга.

Ключевая идея была в аналогии с почтой. Когда вы отправляете письмо, почте всё равно, что внутри конверта. Она видит только адрес на конверте и доставляет его по адресу. Что происходит внутри — дело получателя.

Серф и Кан придумали то же самое для пакетов данных. Каждый пакет упаковывается в стандартный «конверт» — заголовок с адресом отправителя, адресом получателя и служебной информацией. Промежуточные сети видят только заголовок. Им не нужно знать, что внутри, на каком языке написано, для какого компьютера предназначено. Они просто пересылают пакет по адресу.

Протокол назвали TCP — Transmission Control Protocol.

Первую версию описания Серф набросал на салфетке в вестибюле отеля. По другим версиям — в блокноте в аэропорту. Детали разнятся в зависимости от интервью. Но суть одна: идея сложилась быстро, за несколько часов. Реализация потребовала нескольких лет.

В 1974 году они опубликовали статью «Протокол для пакетной сетевой коммуникации». Двадцать три страницы. В ней была описана архитектура, на которой работает весь интернет по сей день.

1 января 1983 года

Протокол дорабатывался и уточнялся несколько лет. В 1978-м TCP разделили на два: TCP отвечал за надёжную доставку и сборку пакетов, новый протокол IP — Internet Protocol — за адресацию и маршрутизацию. TCP/IP.

Пока протокол дорабатывался, разные части ARPANET постепенно переходили на него. Этот переход не был мгновенным — годами параллельно работали старые и новые протоколы, военные и гражданские части сети, разные версии программного обеспечения.

1 января 1983 года был установлен крайний срок. Флаг-дэй — «день флага». Все узлы ARPANET одновременно переходят на TCP/IP. Старые протоколы отключаются. Кто не успел обновиться — выпадает из сети.

Администраторы по всей стране провели эту ночь у терминалов. Утром 1 января 1983 года ARPANET работал на TCP/IP.

Это дата, которую принято считать днём рождения интернета.

Не потому что в этот день придумали что-то новое. А потому что в этот день разрозненные сети перестали быть отдельными островами и стали единой системой с единым языком.

Серф позже говорил об этом переходе просто:

«Мы не думали, что создаём что-то навсегда. Мы думали, что это временное решение, пока не придумают что-то лучше. Лучшего так и не придумали.»

Что случилось дальше

В 1983 году военная часть ARPANET отделилась в отдельную сеть MILNET. Гражданская часть осталась — и начала расти.

К сети подключались университеты. Потом исследовательские институты. Потом корпорации. NSF — Национальный научный фонд — построил NSFNET, более быструю магистральную сеть, соединившую американские университеты. Европа строила свои сети, Азия — свои. Все они говорили на TCP/IP.

В 1990 году ARPANET официально прекратил существование — его поглотила более широкая сеть сетей, выросшая вокруг него.

К тому моменту интернет был уже большим. Но его никто не видел — он работал в командных строках, передавал файлы, электронную почту, новостные группы. Чтобы пользоваться им, нужно было уметь работать с терминалом.

Всё изменилось в 1991 году. Но это уже следующая глава.