Как идея защищённой связи для военных привела к тому, что вы читаете этот текст? Давайте вместе разберёмся, как случайный успех учёных и инженеров сделал интернет частью нашей повседневной жизни — даже если изначально план был совсем другим.
Расшифровка...
В истории не раз случалось такое, что поставленный учеными эксперимент выходил из-под контроля, с различными последствиями для его участников. Сегодня я хотел бы рассказать как раз об одном таком эксперименте, который, к великому сожалению его авторов, оказался слишком успешным, а последствия его человечество не может расхлебать уже почти 50 лет.
Меня зовут Иннокентий Солнцев, вы слушаете подкаст про историю связи “До нас дошло”, и этот выпуск посвящен рождению интернета.
Корни сегодняшней истории уходят еще в 17 век, когда английский философ и ученый Фрэнсис Бэкон предложил идею создания “общества знаний”, в котором все члены общества могли бы обмениваться информацией и знаниями. Я, однако, хочу историю начать не с 17 века, а с июня 1943.
Здесь нужно сделать пояснение: планета полыхает, идет Вторая мировая война. Армия США переломила ход действий на Тихом океане, высадилась в Северной Африке и столкнулась с неожиданной проблемой: у артиллерии нет баллистических таблиц - параметров стрельбы в зависимости от погодных условий, потому что под африканскую жару их никто не рассчитывал. Расчет таких таблиц тогда делался вручную, специально обученными людьми (они назывались компьютерами), и это было очень долго и дорого. Без этих таблиц артиллерия малоэффективна, а быстро их посчитать было физически невозможно.
В июне 1943 году Лаборатория баллистических исследований Армии США в Филадельфии заключает контракт с Университетом Пенсильвании на создание машины, которая могла бы выполнять произвольные вычисления быстрее человека. Проект получил название ENIAC, и это был первый в мире электронный компьютер, а его создание обозначило вступление человечества в информационную эпоху.
К концу войны аппарат готов не был, его запустили лишь осенью 1945, однако военные оказываются в восторге и заказывают новые, более совершенные машины. Гражданские им, понятно, завидуют, и электронные компьютеры начинают появляться в университетах и научных лабораториях. Это все будут машины теплые и ламповые в самом прямом смысле (они состоят из тысяч электронных ламп и выделяют колоссальное количество тепла), поэтому их относят к первому поколению электронных компьютеров. Всего таких машин по всему миру будет выпущено порядка десятка тысяч.
Программирование таких машин было весьма сложным и трудоемким процессом. Эти машины не имели операционных систем или языков программирования в современном понимании. Программы создавались путем физического подключения проводов и установки переключателей на панели управления, а результаты вычислений печатались на принтере. Процесс был медленным и требовал высокой точности, так как любая ошибка могла привести к неправильным результатам или даже к сбою всей системы. Известна байка про жучка, залетевшего в такую машину и закоротившего электрическую цепь, и вызвавшего ошибку - якобы от этого пошло слово “баг”. Слово точно произошло не оттуда, жаргонизм “баг” в значении ошибка вычислений широко употреблялся еще в 19 веке, но компьютеры первого поколения действительно сбоили очень часто по любым пустякам, включая перегорающие лампы и, весьма вероятно, вторжение неосторожных жучков.
В 50-х открытие транзистора открывает двери второму поколению машин. Транзисторы заменили громоздкие и ненадежные вакуумные лампы, что позволило значительно уменьшить размеры и повысить надежность. Эти машины стали более доступными и начали использоваться не только в военных и научных целях, но и в бизнесе.
В это время также появляются первые операционные системы и языки программирования высокого уровня, что значительно упрощает эксплуатацию этих машин и делает их доступными для большего числа людей. Они уже, как правило, весят меньше тонны, стоят меньше миллиона долларов в пересчете на сегодняшние деньги, и способны работать месяцами без поломок. У них уже есть клавиатуры, принтеры, а иногда даже и мониторы. Они все еще теплые, хоть уже не такие ламповые, все еще дорогие, поэтому обычно они стоят поодиночке.
Когда у компьютеров появились интерфейсные входы и выходы под клавиатуры и принтеры, можно было теоретически соединить выход одного с входом другого и передавать данные напрямую между машинами. Но у каждого производителя были свои несовместимые интерфейсы, и машины часто стояли друг от друга слишком далеко. Военные могли купить несколько одинаковых компьютеров и связать их проводами, но даже им было сложно протянуть линии через всю страну.
Но ведь линии через всю страну уже протянули телефонисты. Что если соединить машины по телефону? Есть проблема: в США в те годы монополистом на телефонную связь была компания Bell System. Она владела всеми телефонными линиями, телефонными аппаратами и даже телефонными кабинетами. Все телефоны были ее собственностью, и она могла делать с ними все, что захочет. В том числе, она запрещала подключать к своим линиям любые сторонние устройства. Например, компьютеры. Но ведь звук по телефону передавать не запрещено?
Так появилась идея телефонного модема - устройства, которое преобразует цифровые данные в звук для передачи по телефонной линии и обратно. Первые модемы были весьма медленными, и передавали данные со скоростью всего несколько бит в секунду, но это было уже гораздо быстрее, чем передача данных на перфокартах или перфолентах, особенно на большие расстояния. Первый модем, который можно было легально подключить к сети Bell System, был сконструирован в 1963 году. Устроен он был крайне остроумно: обычную телефонную трубку от обычного телефонного аппарата клали на специальную подставку так, что микрофон в телефонной трубке находился прямо над вмонтированным в подставку динамиком, и наоборот. Таким образом, когда модему нужно было передать данные, он генерировал звук, который попадал в телефон и уходил в линию, а входящий звук из динамика трубки попадал на микрофон модема и преобразовывался в цифровые данные. Таким образом стало возможным связать между собой любую пару компьютеров, используя публично доступную телефонную связь.
Гражданские были счастливы, но почему с такими кислыми лицами сидят военные?
Первая половина 60-х - это время крайней напряженности военно-политической обстановки. Карибский кризис худо-бедно закончился, и мир каким-то чудом не сгорел в очистительном огне, но война во Вьетнаме в самом разгаре. Инциденты с ядерным оружием, включая случаи с потерей или взрывами атомных бомб, случаются по несколько раз в год. Общество живет в ожидании ядерного апокалипсиса. Занятия в школах начинаются с учений по действиям в случае атомного взрыва.
🎤 https://www.repeattube.net/?v=Lg9scNl9h4Q&s=35&e=45&spd=1
Военные понимают, что в случае внезапной атаки нельзя полагаться на то, что телефония будет гарантированно работать, и им нужен способ связи, который был бы устойчив к тому, что половина страны превратится в радиоактивный пепел. В 1964 году военное командование США обращает внимание на работу исследовательской команды компании RAND, выдвинувшей идею пакетной передачи данных в децентрализованной сети без точек отказа. Проблемой начинает заниматься ARPA - департамент перспективных исследований министерства обороны США.
В 1966 году они запускают проект ARPANET - первую в мире сеть, построенную на принципах пакетной коммутации. В отличие от телефонии, где между абонентами устанавливается прямая связь по заранее известному маршруту, в пакетной коммутации данные разбиваются на небольшие пакеты, каждый из которых передается по сети независимо от других, через цепочку транзитных узлов. В случае потери части сети последующие пакеты смогут пойти по другой трассе, через выжившую часть сети (если она, конечно, осталась). К 68 году договорились, как именно должна выглядеть сеть, написали спецификации, и получили бюджет на нее. Справедливо упомянуть, что впоследствии многие участники проекта, включая тогдашнего директора ARPA Чарльза Хертцфельда, архитекторов проекта ARPANET Боба Тейлора и Ларри Робертса, и многих других, отрицали, что работоспособность ARPANET в случае ядерной войны была ключевой целью, и утверждали, что она строилась сугубо для совместного использования ресурсов. Верить этой версии или нет - решайте сами, но не забывайте, что ARPA - это департамент минобороны, и оплачивался банкет именно за счет военного бюджета.
Первоначально ARPANET соединил четыре университета в США: Калифорнийский университет в Лос-Анджелесе, еще один Калифорнийский университет, но уже в Санта-Барбаре, Стэнфордский университет (тоже в Калифорнии), и Университет штата Юта. Университеты были выбраны не случайно: они находились на сравнительно небольшом расстоянии друг от друга, и в них были установлены машины разных типов. Сеть могла использовать телефонные линии, но уже в 1969 году были протянуты выделенные линии связи, что позволило увеличить скорость передачи данных. Первое сообщение было отправлено с одного компьютера на другой 29 октября 1969 года. Оно должно было быть словом “login”, но в процессе передачи вторая машина выдала только “lo”, и зависла. Но это было уже не важно, потому что участники увидели, что сеть работоспособна. Через час операцию повторили, и на этот раз все прошло успешно.
Но это была связь между напрямую подключенными узлами, а решить основную задачу ARPANET - передавать пакетные данные через цепочку узлов - сеть научили только через год. Для этого был разработан специальный протокол NCP, в котором были описаны правила передачи данных между компьютерами в сети. С помощью этого протокола можно было обмениваться файлами, исполнять команды на удаленном компьютере и видеть результат их работы, и даже обмениваться сообщениями через некоторое подобие электронной почты.
Похожие проекты начинают развиваться и в других странах: в Великобритании создается сеть NPL, во Франции - CYCLADES , в Германии - сеть BNA.
Одним из участников проекта ARPANET со стороны Калифорнийского университета был 25-летний студент Винтон Серф. Он страстно интересуется компьютерами и коммуникациями. В 1972 году он защищает диссертацию, получает степень доктора философии в области информатики, и в 1973 году уже переходит на работу непосредственно в ARPA. Вместе с другим пионером Интернета Бобом Каном они публикуют статью, в которой описывают организацию мегасети из независимых национальных или частных сетей. Именно в этой статье впервые появляется термин «межсетевое взаимодействие», или internet.
Свои предложения по межсетевому взаимодействию Серф и Кан оформляют в виде документа, который получает название Transmission Control Program - программа контроля передачи данных. Они получают одобрение на исследование в рамках этой программы, и в 1977 году демонстрируют работоспособность предложенной концепции по передаче данных между тремя ранее несвязанными сетями - ARPANETом, внутренней сетью Стэнфордского университета, и компьютером в Лондоне, подключенным через спутниковый линк SATNET.
Хотя Серф присоединился к проекту ARPANET как студент, Боб Кан был одним из ключевых архитекторов этой системы. Именно он разработал основные протоколы для первого маршрутизатора (тогда его называли интерфейсным процессором сообщений или IMP). Коллеги Кана описывали его как человека с невероятной способностью видеть всю картину целиком, в то время когда большинство инженеров фокусировались на отдельных компонентах.Сотрудничество Серфа и Кана можно назвать идеальным симбиозом: Кан был больше практиком, а Серф — теоретиком, любившим элегантные решения.
Одним из таких решений было разделение Transmission Control Program на две части: на протокол контроля передачи данных (тот, что мы сегодня знаем под названием TCP), и набор правил межсетевого взаимодействия - Internet Protocol, сокращенно IP . Работа спорилась, улучшения и новые гипотезы возникали как грибы после дождя, потому к названию программы стали добавляться номера версий. 1978 год оказывается особенно результативным - выходит третья, а затем и четвертая редакция соглашений по межсетевому взаимодействию. Для тестирования четвертой редакции они добавляют ее поддержку в ARPANET и несколько других сетей, включая трансатлантическую SATNET.
Именно в этот момент что-то идет не по плану. Идеи Фрэнсиса Бэкона об обществе знаний наконец воплотились в жизнь, и десятки университетов и научных лабораторий с жадностью накинулись на возможность обмениваться данными в реальном времени, пусть даже в рамках эксперимента. Гражданский трафик в сети растет лавинообразно, военные начинают беспокоиться, что их сеть может быть перегружена и принимают решение обособить свой сегмент сети. Старый протокол NCP, который больше никому не нужен, отключают, и ARPANET, как и другие сети, включая заокеанские NPL, CYCLADES и BNA, перестает быть отдельной сущностью и становится частью сети, объединяющей страны и континенты. По названию используемого протокола IP эту сеть называют Internet (имя собственное, с большой буквы). В 83 году она уже соединяет десятки тысяч компьютеров по всему миру.
Был ли готов IP к тому, чтобы обслуживать общемировую сеть? Конечно, нет. Четвертая редакция была сугубо экспериментальной, предназначенной для демонстрации возможностей. Ее задачей было показать потенциальную возможность связать между собой несколько сотен сетей, каждая из которых содержала бы сотни, максимум тысячи узлов (как ARPANET в тот момент). Здесь нужно техническое пояснение для неспециалистов: данные в IP передаются в виде пакетов, и в каждом пакете указывается адреса отправителя и получателя. Этот адрес состоит из двух частей: номер сети и номер узла в этой сети (примерно как в почтовом адресе есть название улицы и номер дома). Версия 4 протокола IP предполагала, что номер сети будет достаточно большим, чтобы указать с запасом все сети в рамках эксперимента (то есть тысячи, если не сотни), и номер узла будет достаточно большим, чтобы указать все узлы в каждой сети (тоже тысячи, если не сотни). IP версии 4 был в рамках эксперимента рассчитан на десятки тысяч узлов. Он чисто математически не был способен адресовать всех желающих в новой сети. Становится понятно, что IPv4 непригоден для использования, однако уже поздно - джинна выпустили из бутылки, и на десятках тысяч компьютеров по всему миру стоит ПО, настроенное на работу с ним.
«Я честно думал, что если идея интернета действительно сработает, то мы затем построим его продакшен-версию, а что произошло — он вырвался на свободу, и мы используем экспериментальный дизайн интернета с 1983 года»
«I honestly thought that if the internet idea actually worked, then we would then build a production version of it, and what happened is that it got loose, and that we've been using the experimental internet design since 1983», - Винтон Серф.
🎤 https://www.repeattube.net/?v=17GtmwyvmWE&s=1634&e=1655&spd=1
IP имел ошеломляющий успех, и появляется рабочая группа, задачей которой становится выявить основные недостатки версии 4 и попытаться предложить какие-то контрмеры, которые не потребуют кардинально менять протокол и обеспечат обратную совместимость. Основных недостатков было два: малое количество адресуемых сетей, между которыми возможно взаимодействие, и малое количество адресов вообще. Самой эффективной контрмерой стала трансляция сетевых адресов, которая уже позволила IPv4 прожить почти 50 лет, а сегодня чувствовать себя если не прекрасно, то по крайней мере достаточно хорошо. Суть ее заключалась в отказе от принципа связности “от края до края”, который предполагал возможность любого узла отправить данные любому другому узлу. Трансляция сетевых адресов, или NAT, чем-то похожа на работу секретаря в офисе: когда сотрудник офиса хочет отправить письмо во внешний мир, он отдает сообщение секретарю, а уже тот от своего имени пересылает его дальше получателю. Если на адрес компании будет получено входящее сообщение - секретарь по некоторым правилам догадается, какому именно сотруднику следует направить входящий пакет. Звучит сложно, а технически реализуется еще сложнее, но именно этот механизм позволяет нам откладывать проблему исчерпания адресов уже многие годы. Формально адреса IPv4 закончились уже давно, но на вторичном рынке их приобрести не составляет труда, хотя цены на них растут с каждым годом.
Работа над продакшн-версией шла параллельно с адаптацией IPv4 к реальным условиям. Редакцию с номером 5 уже застолбила под эксперименты другая рабочая группа, занимавшаяся вопросами одновременной доставки одного пакета нескольким получателям, потому под следующую версию пришлось взять номер 6. Все те идеи, которыми пришлось пожертвовать в в4, в том числе связность от края до края, в новой версии были восстановлены, а проблема дефицита адресов решена кардинально - их количество заведомо больше, чем потребно для любой, самой больной фантазии.
В 1996 году поддержка IPv6 реализована в Linux, в 1998 - в Windows (тогда это был экспериментальный код, публично доступным он стал в Windows 2000, а с Windows XP и Server 2003 поддержка новой версии уже была из коробки). В 2011 году адресное пространство IPv4 официально закончилось, а 2012 год Internet Society объявила годом IPv6, что символизировало коммитмент крупнейших игроков Интернета к переходу на новую версию. Сегодня IPv6 поддерживается большинством крупнейших интернет-компаний (хотя, конечно, есть и ретрограды, которым милее работать через коктейль из костылей и синей изоленты, образовавшийся в результате эксперимента 50-летней давности).
После успеха TCP/IP Серф не почил на лаврах. В 1976-1982 годах он работал в DARPA, затем перешел в MCI Digital Information Services, где создал первую коммерческую службу электронной почты, подключенную к интернету — MCI Mail. А в 2005 году Серф присоединился к Google в необычной должности — 'Главный евангелист интернета', которую занимает до сих пор. Одним из его самых амбициозных проектов стала разработка 'Межпланетного интернета' — правил для передачи данных между планетами Солнечной системы.
Винтон Серф однажды пошутил: 'Мы создали интернет как временное решение и до сих пор ждем, когда кто-нибудь придумает что-то получше'. Но, возможно, это и есть главная особенность гениальных изобретений — они кажутся временными своим создателям, но становятся вечными для всех остальных.
0 коментариев