История интернета. Глава 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 году. Но это уже следующая глава.