· 9 мин. на чтение.

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

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

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

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

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

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

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

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

lick

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

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

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

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

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

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

Robert-William-Taylor

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

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

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

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

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

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

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

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

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

Paul-Baran

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Leonard-Kleinrock

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

Когда Робертс начал строить 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 года все четыре узла работали. Пакеты путешествовали между Лос-Анджелесом, Менло-Парком, Санта-Барбарой и Солт-Лейк-Сити. Бэран оказался прав. Дэвис оказался прав. Клейнрок оказался прав.

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

lo

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

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

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

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

1971_ Email

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

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

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

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

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

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

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

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

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

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

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

Cerf_Kann

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

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

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

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

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

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

TCP

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

FAQ

Интернет - результат работы многих людей на протяжении двадцати лет. Концептуальный фундамент заложил Ликлайдер в 1960-м. Пакетную передачу данных независимо изобрели Пол Бэран и Дональд Дэвис в начале 1960-х. ARPANET построил Лоуренс Робертс в 1969-м. Протокол TCP/IP, объединивший разные сети в единый интернет, создали Винтон Серф и Боб Кан в 1974-м.

Зависит от того, что считать точкой отсчёта. Первая передача данных в ARPANET - 29 октября 1969 года. Электронная почта - 1971-й. Официальным днём рождения интернета принято считать 1 января 1983 года - когда все узлы ARPANET одновременно перешли на протокол TCP/IP и разрозненные сети стали единой системой.

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

Два протокола, лежащих в основе интернета. IP - Internet Protocol - отвечает за адресацию: каждому устройству присваивается уникальный адрес, по которому пакеты находят получателя. TCP - Transmission Control Protocol - отвечает за надёжную доставку: следит, чтобы все пакеты дошли и собрались в правильном порядке. Разработаны Винтоном Серфом и Бобом Каном, опубликованы в 1974 году.

29 октября 1969 года студент UCLA Чарли Клайн пытался отправить команду login на компьютер в Стэнфорде. Он успел набрать L и O, после чего система на принимающей стороне упала из-за программной ошибки. Через час всё починили и сеанс прошёл успешно, но в историю вошли именно эти две буквы - первое переданное сообщение.

Джозеф Карл Робнетт Ликлайдер - американский психолог и учёный в области вычислительной техники. В 1960 году описал концепцию глобальной компьютерной сети задолго до её технической реализации. В 1962-1964 годах руководил компьютерным отделом DARPA, где финансировал исследования, из которых вырос ARPANET. Лично в строительстве сети не участвовал - но создал сообщество людей и сформулировал идею, без которых интернет не появился бы.