Зачем нужны сети — от телеграфа до Internet
Прежде чем нырять в технические детали, нужно понять, зачем сети вообще существуют. Это не очевидно: компьютер сам по себе мощная штука, он умеет считать без сети. Зачем его соединять с другим компьютером? Ответ кажется тривиальным сейчас, в 2026 году, когда без интернета не работает буквально ничего. Но он не был тривиальным в 1960-х, когда сетей ещё не было, и инженерам приходилось убеждать заказчиков, что эта идея вообще имеет смысл.
В этом уроке мы пройдёмся от телеграфа (1837 год) до современного internet, проследив, как развивалось понимание «зачем». Это даст контекст для всего остального курса: вы увидите, какие проблемы решали в каждую эпоху и какими костылями. Многие современные «странности» интернета — наследие конкретных решений, принятых десятилетия назад.
Зачем сеть — три фундаментальные причины
Сначала о смысле. Зачем людям сети? Три ответа, от которых отталкивается всё остальное:
Сегодня преобладает (2). Большинство приложений — это коммуникация между двумя или больше узлами. Браузер общается с сервером. Сервис A общается с сервисом B. Микросервисы постоянно болтают друг с другом через REST или gRPC. Чат, видеосвязь, push-уведомления — всё это сеть.
Distributed computing (3) — это инфраструктура для Big Data. Hadoop, Spark, Flink, в облаке — BigQuery и Athena. Все они работают только потому, что у них есть быстрая сеть между узлами кластера.
Kafka как распределённый commit logКогда вы понимаете, ЗАЧЕМ нужна сеть, дизайн протоколов становится естественным. TCP даёт reliable delivery, потому что (2) и (3) этого требуют. DNS существует, потому что нужно знать имя, а не запоминать IP. HTTP statless, потому что иначе не масштабируется (1) — невозможно делить нагрузку между серверами.
Эпоха 1: телеграф (1837 — начало 1900-х)
Первая «сеть передачи данных» — это телеграф. Сэмюэл Морзе и его команда в 1837 году собрали первую рабочую систему: провод между двумя точками, на одном конце оператор стучит ключом, на другом — слышит щелчки в наушнике или видит точки на ленте.
Телеграф — это уже сеть в техническом смысле: есть две стороны, передаётся информация, требуется протокол (Morse code — это и есть протокол кодирования). Но это point-to-point связь: один провод соединяет ровно две точки. Чтобы соединить N городов между собой, нужно либо N*(N-1)/2 проводов (нереалистично), либо центральная станция-ретранслятор, через которую идут все сообщения.
Многие концепции современного networking появились ещё в эпоху телеграфа:
- Адресация. В сообщении указывался получатель (адрес города и человека). Сегодня IP-адрес делает то же самое.
- Маршрутизация. Между городами были станции, на которых операторы перенаправляли сообщения дальше. Сегодня это делают маршрутизаторы.
- Кодирование. Морзе — первая стандартная кодировка. Сегодня ASCII, UTF-8, бинарные protocol buffers.
- Ошибки и подтверждения. Если сообщение шло плохо (помехи), просили повторить. Сегодня это TCP retransmission.
К 1900 году в США была телеграфная сеть, покрывающая всю страну, с десятками тысяч операторов. Это был серьёзный технологический достижение, аналог современного internet по влиянию на общество.
Эпоха 2: телефон (1876 — 1990-е)
Александр Грэм Белл изобрёл телефон в 1876 году. Сразу же стала ясна проблема телеграфной модели: один провод на одну связь — это не работает для миллионов пользователей.
Решение телефонной индустрии: circuit switching, или коммутация каналов. Когда вы звонили кому-то, оператор (а потом автоматический коммутатор) соединял провод от вашего аппарата с проводом от аппарата получателя. На время разговора устанавливался физический «канал» (circuit) между двумя сторонами. Все байты шли только по этому каналу, в чёткой последовательности.
Circuit switching оптимален для голоса: задержка постоянная и низкая (нужно для разговора), пропускная способность гарантирована. Но он расточителен для данных: даже если вы молчите, канал занят. Для коротких передач — огромный overhead на установление и разрыв канала.
Из этой эпохи в современный networking перекочевало несколько идей:
- Адресация по номерам. Номер телефона — глобальный уникальный идентификатор. Сегодня IP-адрес и DNS-имя.
- Коммутация. Понятие switch как центральной точки. Сегодня L2-switches и L3-routers.
- Стандартизация. ITU (International Telecommunication Union) — организация для координации между странами. До сих пор работает.
К 1990-м телефонные сети по всему миру стали цифровыми — голос дискретизировался и передавался как байты. Это сделало возможным следующий шаг.
Эпоха 3: ARPANET (1969 — 1980-е)
В конце 1960-х в США возникла идея: давайте сделаем сеть для компьютеров, как телефонная сеть для голоса, но лучше. ARPA (Advanced Research Projects Agency) Министерства обороны США выделила деньги на эксперимент.
Главная инновация ARPANET — packet switching вместо circuit switching. Идея пришла независимо от Пола Бэрана и Дональда Дэвиса в начале 1960-х. Вместо того чтобы устанавливать выделенный канал на весь сеанс, разбейте данные на маленькие куски (пакеты) и шлите их по сети независимо. Каждый пакет содержит адрес получателя и сам находит путь.
Почему packet switching изменил всё? Несколько причин:
- Устойчивость к отказам. Если один узел или линк падает — пакеты идут другим путём. Это было ключевым военным требованием в годы Холодной войны (никто не хотел, чтобы ядерный удар по штаб-квартире отрубил всю связь).
- Эффективное использование линков. В каналах нет «простоев» — если у одного пользователя нет данных, другой пользуется тем же каналом.
- Масштабируемость. Не нужно отдельных каналов на каждую пару узлов. Любые два узла могут общаться через общую инфраструктуру.
В ARPANET были разработаны первые сетевые протоколы: NCP (Network Control Program), а потом TCP/IP. Винтон Серф и Боб Кан в 1974 году опубликовали статью «A Protocol for Packet Network Intercommunication» — это и есть основа TCP/IP, которую мы используем сегодня.
Unix domain sockets — IPC быстрее TCP на одной машинеТакже в ARPANET появились первые приложения, которые мы помним и сейчас:
- Email (1971) — Ray Tomlinson написал первую программу отправки сообщений между узлами. Тогда же он придумал символ
@для разделения user и host. - FTP (1971) — File Transfer Protocol. До сих пор иногда используется.
- Telnet (1969) — удалённый терминал. Сейчас вытеснен SSH.
Эпоха 4: рождение Internet (1983 — 1995)
Internet — это не один проект, а постепенное объединение многих сетей в одну глобальную. Ключевые даты:
В 1995 году произошло несколько событий, после которых Internet перестал быть академической игрушкой и стал коммерческой инфраструктурой:
- NSF разрешила коммерческий трафик. До этого NSFNET был только для научных целей.
- Появились ISP (Internet Service Provider). AOL, CompuServe, AT&T — провайдеры доступа для домашних пользователей через dial-up модемы.
- Amazon, eBay, Yahoo основаны в 1995. Бизнес узнал про Web, начался первый dot-com бум.
С 1995 года Internet растёт по экспоненте: 16 миллионов пользователей -> 200 миллионов в 2000 -> 1 миллиард в 2005 -> 5 миллиардов сегодня. И при этом фундаментальные протоколы (TCP, IP, DNS, HTTP) остались принципиально теми же. Это удивительная штука: то, что было спроектировано в 1970-х для 4 университетов, масштабируется до 5 миллиардов пользователей.
Современная эпоха — 2000-е и далее
С 2000 года Internet продолжает развиваться, но фундаментально не меняется. Основные направления:
- Мобильность. 3G, 4G, 5G — сети для устройств в движении. Эта область делает QUIC более привлекательным, чем TCP, потому что мобильные сети лоссы и jitter terribly.
- CDN и edge computing. Контент кэшируется ближе к пользователю (Cloudflare, Akamai, Fastly). Уменьшает latency.
- Облака. AWS, GCP, Azure. Большие data centers, в которых работает большая часть современного internet.
- HTTPS повсеместно. До 2010 года значительная часть сайтов работала по HTTP. К 2026 — >95% трафика TLS.
- HTTP/2 и HTTP/3. Эволюция протокола приложения для большей производительности.
- IPv6. Адресов IPv4 не хватает, IPv6 — замена. Доля IPv6 растёт, но медленно (около 40% в 2026).
Многие из этих тем мы разберём подробно в соответствующих модулях. Сейчас важно увидеть общую картину: internet — это не один проект, а накопленный за 50+ лет инженерный артефакт. В нём есть слой, который мы можем менять (HTTP/3, TLS 1.3), и слой, который менять невозможно (IPv4-адресация работает так же, как в 1981).
Что для нас, инженеров
Зачем эта историческая информация? Не для эрудиции. Она объясняет много «странностей» современных протоколов:
- Почему IP-адрес 32 бита? Когда дизайнили IPv4 в 1981, никто не думал, что будет 5 миллиардов устройств.
- Почему HTTP — текстовый? Потому что в 1991 нужно было отлаживать его на терминалах без специальных инструментов.
- Почему DNS использует UDP? Потому что в 1984 TCP-overhead был неприемлемо высоким для коротких запросов.
- Почему пароли отдельно от логинов в HTTP Basic Auth? Потому что в 1996 не было других идей, как сделать аутентификацию в stateless протоколе.
Все эти «странности» — legacy конкретных эпох. Их можно было бы переделать «правильно», но это сломало бы совместимость с миллионами существующих систем. Поэтому мы живём с ними.
Это feature, не bug. Стабильность интерфейсов — ценность сама по себе. Internet работает 40+ лет именно потому, что мы не переделываем фундамент каждые 5 лет. Когда нужно что-то новое — добавляем поверх (например, HTTP/2 поверх TCP), не ломая существующее.
Попробуй сам
Несколько команд, которые показывают исторические корни современного internet.
# 1. WHOIS -- узнать, кто владеет доменом. Этот сервис с 1982 года
whois example.com | head -20
# Увидите: registrar, dates, contact info
# 2. Старый протокол finger -- посмотреть, кто залогинен на хосте.
# Сейчас почти не работает -- в основном выключен по соображениям безопасности
finger @example.com 2>&1 | head
# Скорее всего: connection refused или timeout
# 3. Telnet -- предшественник SSH. Тоже почти везде выключен
telnet towel.blinkenlights.nl
# Если работает -- увидите ASCII-art Star Wars в реальном времени.
# Это знаменитый pet project, который годами работает
# 4. NSLOOKUP -- старая команда DNS. До сих пор работает
nslookup google.com
# Сравните с современной dig:
dig google.com +short
# 5. Посмотреть, каким маршрутом ваш трафик идёт через интернет
traceroute -m 30 8.8.8.8
# Это эхо ARPANET-эпохи: каждый hop -- это router,
# и вы видите путь пакета через AS (autonomous systems)
Многие из этих команд — буквально те же программы, что были написаны 30-40 лет назад. Их код не менялся, потому что протоколы не менялись. Это редкость в IT — большинство кода живёт 5-10 лет максимум.