29 октября 1969 года в лаборатории УКЛА студент Чарли Клайн набрал на терминале две буквы — L и O — и нажал Enter. Система рухнула. Так родилось первое сообщение в истории ARPANET, предка современного интернета. Программисты пытались передать слово LOGIN, но получили лишь его начало — случайно идеальное сокращение от английского «lo and behold» («вон оно что» или «смотрите-ка»).
Этот эпизод часто называют «самым коротким и самым знаменательным сообщением в истории вычислительной техники». За этими двумя символами стоят месяцы подготовки, неисправимые баги в драйвере терминала и решение, изменившее человечество. Ниже мы разберём технические детали, причины сбоя и то, почему первое сетевое слово обернулось неудачей именно на букве «G».
История первой сетевой передачи данных
К 1969 году ARPA (Advanced Research Projects Agency) финансировала создание сети, способной выдерживать ядерный удар. Ключевую роль сыграли IMP (Interface Message Processors) — первые в истории маршрутизаторы, собранные компанией BBN Technologies на базе микрокомпьютеров Honeywell 516. Первый узел установили в УКЛА, второй — в Стэнфордском исследовательском институте (SRI), разделив их 640 километров телефонного кабеля.
За передачу отвечали два человека: Чарли Клайн за терминалом SDS Sigma 7 в Лос-Анджелесе и Билл Дювал у консоли SDS 940 в Мэнло-Парке. Связь шла через выделенный канал со скоростью 50 кбит/с — в тысячи раз медленнее современного мобильного интернета. Протокол NCP (Network Control Program) ещё не существовал; использовали сырую передачу пакетов с ручным подтверждением.
Технические детали эксперимента 29 октября 1969 года
В 22:30 по тихоокеанскому времени Клайн набрал L — система передала пакет, SRI подтвердил получение. Затем O — всё работало. Нажатие G вызвало переполнение буфера в драйвере терминала SDS 940: процессор не успел обработать прерывание от клавиатуры, и ОС TENEX ушла в аварийную перезагрузку. Экран потух. Связь прервалась.
Инженеры BBN позже выяснили: в коде обработки ввода отсутствовала проверка на переполнение кольцевого буфера. При одновременном приёме пакета и нажатии клавиши указатель чтения «догонял» указатель записи, вызывая kernel panic. Исправление заняло несколько часов — к 23:30 той же ночи вторая попытка прошла успешно, и слово LOGIN передалось полностью.
- 🖥 УКЛА: SDS Sigma 7, ОС SEX (позже переименована)
- 📡 Канал: 50 кбит/с, телефонная пара AT&T
- 🧠 IMP: Honeywell 516, 12 КБ памяти, цена $82 000
- 👨💻 Операторы: Чарли Клайн (УКЛА), Билл Дювал (SRI)
Почему система рухнула после двух букв
Причина кроется в архитектуре SDS 940 и её ОС TENEX. Драйвер терминала использовал кольцевой буфер фиксированного размера — 64 символа. При приёме сетевого пакета прерывание таймера сдвигало указатель чтения. Если в этот момент пользователь нажимал клавишу, прерывание клавиатуры пыталось записать символ в тот же буфер без проверки свободного места.
Буква G стала фатальной не из-за своего кода, а из-за тайминга: именно в момент её нажатия пришёл пакет подтверждения от IMP. Два прерывания почти одновременно обратились к буферу — и указатель записи перескочил через указатель чтения. Ядро интерпретировало это как повреждение памяти и инициировало crash dump. Современные ОС решают это мьютексами и атомарными операциями; в 1969 году таких примитивов не существовало.
⚠️ Внимание: Не путайте этот сбой с легендарным «багом» Грейс Хоппер — настоящей молью в реле Harvard Mark II (1947 г.). Здесь речь о программной ошибке синхронизации, а не механическом дефекте.
Подробности архитектуры SDS 940
SDS 940 — 24-битный компьютер с адресацией до 1 МБ памяти. Использовал страничную организацию памяти с TLB (Translation Lookaside Buffer) — инновацию для 1966 года. Процессор не имел аппаратной поддержки многозадачности; переключение контекста выполняла ОС программно. Именно отсутствие атомарных инструкций сделало невозможным безопасную работу с кольцевым буфером без отключения прерываний, что в сетевом стеке было недопустимо.
Последствия для развития интернета
Инцидент заставил разработок пересмотреть подход к надежности. В 1970 году Стив Крокер начал серию RFC (Request for Comments) — первый документ RFC 1 описывал протокол хост-хост именно с учётом уроков октября 1969 года. Появились требования: буферизация с контролем переполнения, квитирование на уровне пакетов, разделение управляющего и пользовательского трафика.
К 1973 году протокол NCP заменил сырую передачу, а в 1983 году — TCP/IP. Но идея «лучше отправить неполное сообщение, чем ничего» осталась: современный TCP гарантирует доставку байтов в порядке отправки, но приложение может прочитать LO до прихода GIN, если буфер заполнится частично. Это свойство используют протоколы вроде HTTP/2 и QUIC для раннего рендеринга страниц.
Первый сбой ARPANET привел к созданию культуры RFC и принципов отказоустойчивого проектирования, лежащих в основе современного TCP/IP.
Другие претенденты на звание «первого слова»
История знает несколько событий, претендующих на титул «первого сообщения» в зависимости от определения:
| Событие | Дата | Содержимое | Особенность |
|---|---|---|---|
| ARPANET IMP-to-IMP | 29 окт 1969 | LO |
Первый пакет между узлами |
| Первый email (Ray Tomlinson) | 1971 | QWERTYUIOP |
Тестовый текст, отправленный самому себе |
| Первый SMS (Neil Papworth) | 3 дек 1992 | Merry Christmas | От ПК к телефону Orbitel 901 |
| Первый голосовой пакет | авг 1973 | фрагмент речи | Network Voice Protocol (NVP) |
| Hello World (Brian Kernighan) | 1972/1974 | hello, world | Пример в руководстве по B / C |
Каждый из этих моментов важен в своей сфере. Но именно LO стало символом рождения пакетной коммутации — технологии, без которой не существовал бы ни веб, ни стриминг, ни облачные вычисления.
Культурное наследие «LO»
Две буквы вошли в фольклор разработчиков. В 2009 году к 40-летию ARPANET в УКЛА установили мемориальную доску с надписью LO. В 2019 году Internet Society выпустила ограниченную серию футболок с логотипом LO ≠ LOGIN. В сериале «Кремниевая долина» (Silicon Valley) персонаж Ричард Хендрикс начинает презентацию со слова «Lo» — отсылка, понятная каждому инженеру.
Интересно: в 1969 году никто не считал момент историческим. Клайн и Дювал просто записали в журнал: «02:30 — system crashed on G». Только через десятилетия историки вычислительной техники (в частности, Кейти Хафнер в книге «Where Wizards Stay Up Late») обратили внимание на символизм. Сегодня в музее История компьютера (Mountain View) хранится распечатка того сеанса — единственный бумажный след первого сетевого диалога.
- 🏛 Музей CHM: оригинальный лог 29 октября 1969 г.
- 🎬 Документалка: «Lo and Behold: Reveries of the Connected World» (Вернер Херцог, 2016)
- 📚 Книга: Хафнер К., Лайон М. «Where Wizards Stay Up Late» (1996)
- 💻 Эмулятор: можно запустить SDS 940 в SIMH и воспроизвести сеанс
☑️ Как воспроизвести первый ARPANET-сеанс в эмуляторе
Что это значит для современных разработчиков
История LO учит трем вещам. Первое: тестирование граничных условий критично. Баг проявился только при совпадении двух прерываний — сценарий, который не проверяли в лаборатории. Вторая: протоколы должны выживать при частичной доставке. TCP/IP спроектирован так, чтобы приложение могло обработать префикс сообщения. Третья: документируйте сбои. Журнал Клайна стал единственным первичным источником — без него мы бы не знали точную последовательность событий.
Современные фреймворки вроде gRPC или WebSocket скрывают сложность буферизации, но понимание того, как байты текут по проводам, отличает синьора от джуниора. Попробуйте написать минимальный TCP-сервер на asyncio или netty и намеренно разорвите соединение после отправки половины ответа — клиент получит именно то, что ушло в сеть до разрыва. Это прямая наследница архитектуры 1969 года.
⚠️ Внимание: Не пытайтесь воспроизвести краш на продакшн-системах. Используйте изолированные контейнеры или виртуальные машины для экспериментов с сетевыми стеками.
Изучите RFC 793 (TCP) — раздел 3.3 «Sequence Numbers» объясняет, почему частичная доставка данных является нормальной ситуацией, а не ошибкой.
Часто задаваемые вопросы
Почему первым словом должно было стать именно LOGIN?
Это была стандартная команда входа в систему TENEX. Клайн просто хотел зайти на удалённый хост SRI, как делал это ежедневно локально. Никакого заранее подготовленного «исторического» сообщения не существовало — это была рутинная операция.
Правда ли, что «LO» специально означало «lo and behold»?
Нет, это чистый случай. Клайн набирал LOGIN по привычке. Фраза «lo and behold» — архаичное выражение «вон оно что», ставшее популярным в англоязычной культуре гораздо позже, в контексте интернет-мемов 2000-х.
Сколько времени прошло между крашем и успешной повторной попыткой?
По записям в журнале — около часа. Инженеры BBN перезагрузили IMP и SDS 940, проверили буферы, добавили задержку перед отправкой следующего символа. В 23:30 слово LOGIN прошло полностью.
Где сейчас находится физический IMP №1?
Один из первых IMP (серийный номер 1) хранится в Музее истории компьютера (Computer History Museum) в Маунтин-Вью, Калифорния. Второй — в Смитсоновском институте, Вашингтон. Остальные утилизированы или утеряны.
Есть ли связь между первым ARPANET-сообщением и традицией «Hello World»?
Прямой связи нет. «Hello World» как канонический первый пример программы появился в внутреннем mémo Bell Labs Брайана Кернигана (1972) и книге «The C Programming Language» (1978). Но обе традиции — и LO, и hello, world — демонстрируют минимально работоспособную систему: сеть в первом случае, компилятор/рантайм — во втором.