Фактопедия

Как работает интернет

Интернет пересылает данные не по одному проводу, а короткими пакетами через цепочку провайдеров, которые находят путь до нужного сервера с помощью адресов, маршрутизации и системы DNS.

Интернет - это глобальная сеть из тысяч независимых сетей, объединённых общими правилами передачи данных. Когда вы отправляете сообщение или открываете страницу, информация не идёт по одному прямому проводу до цели: она режется на небольшие пакеты, каждый из которых снабжается адресом отправителя и получателя и самостоятельно проходит через цепочку посредников - домашний роутер, оборудование провайдера, магистральные линии связи и десятки промежуточных узлов. У этой системы нет единого владельца и центрального пункта управления: работу интернета обеспечивает согласие тысяч компаний по всему миру следовать одним и тем же техническим стандартам.

Физический путь сигнала

Прежде чем говорить об адресах и протоколах, полезно понять, через что физически проходит сигнал. С телефона или ноутбука данные сначала уходят по радиоволнам - через Wi-Fi или сотовую сеть - либо по проводу Ethernet на домашний роутер. Роутер передаёт их дальше провайдеру, чаще всего по оптоволоконному кабелю, реже по старым медным телефонным линиям или кабельному телевидению. Внутри оптоволокна данные превращаются в короткие вспышки света: луч отражается от стенок тонкого стеклянного волокна и почти без потерь проходит десятки километров, пока сигнал не усилят на очередном узле связи.

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

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

Как данные режутся на пакеты

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

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

Адреса в сети: IP и MAC

Чтобы пакет нашёл получателя, у каждого устройства в сети должен быть адрес. Такой адрес называется IP-адресом и обычно выглядит как четыре числа от 0 до 255, разделённых точками. Свободных адресов старого образца (IPv4) в мире физически не хватает на все устройства, поэтому постепенно внедряется новый формат (IPv6) с гораздо большим запасом уникальных адресов.

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

Кроме IP-адреса у каждого сетевого устройства есть ещё один, физический адрес - MAC-адрес, зашитый производителем в сетевую карту или модуль Wi-Fi. Если IP-адрес отвечает за доставку пакета через весь интернет, от одной сети к другой, то MAC-адрес нужен для последнего шага - доставки внутри одного локального сегмента сети, например от роутера к конкретному ноутбуку в квартире.

Маршрутизация: как пакет находит дорогу

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

Внутри одной сети - например, сети одного провайдера - маршруты настраиваются централизованно. А вот между крупными независимыми сетями, из которых состоит весь интернет, маршруты согласуются протоколом с говорящим названием - протоколом пограничных шлюзов. Каждая крупная сеть объявляет соседям, какие адреса она способна доставить, соседи запоминают эти объявления и передают их дальше, и так постепенно у всех участников складывается общее представление о том, куда какой пакет отправлять. Путь до сервера на другом континенте обычно занимает от десятка до двух десятков таких промежуточных переходов, и каждый добавляет к общей задержке доли миллисекунды.

DNS: перевод имён в адреса

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

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

Протоколы: правила игры

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

Для случаев, где важнее скорость, а не идеальная точность - голосовые звонки, видеосвязь, онлайн-игры, - применяется более простой протокол UDP: он не тратит время на подтверждения и повторные отправки, потому что для живого разговора повторно присланное с опозданием слово бесполезнее, чем короткий пропуск в звуке.

Поверх этих базовых протоколов работают прикладные - например, HTTP, по которому браузер запрашивает у сервера страницы сайтов. Его защищённая версия, HTTPS, добавляет шифрование: данные на всём пути от устройства до сервера превращаются в нечитаемый набор символов, и ни один из промежуточных маршрутизаторов не может подсмотреть содержимое - что особенно важно, когда речь идёт о пароле или номере карты при оплате в интернет-магазине, похожем на то, как устроена банковская карта в обычном платёжном терминале. Замок рядом с адресом сайта в браузере как раз и показывает, что соединение защищено этим шифрованием.

Провайдеры и магистральные сети

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

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

Что происходит, когда вы открываете страницу

Когда вы вводите адрес сайта или нажимаете на ссылку пальцем на сенсорном экране смартфона, происходит короткая, но многошаговая цепочка событий. Сначала устройство проверяет, не запомнило ли оно уже числовой адрес этого сайта, а если нет - отправляет запрос через DNS и получает нужный IP-адрес. Затем устройство устанавливает соединение с сервером по протоколу TCP: происходит обмен короткими служебными сообщениями, подтверждающими готовность обеих сторон. Если сайт защищён по HTTPS, следом происходит ещё один обмен - согласование ключей шифрования, после которого весь дальнейший разговор становится нечитаемым для посторонних.

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

Почему интернет не ломается целиком

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

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