Как письмо доходит до сервера на другом конце планеты за секунду
Ты жмёшь «Отправить» — и через секунду твоё сообщение уже на другом континенте. Как кусок текста успевает проскочить океан, десятки городов и сотни машин быстрее, чем ты моргнул? Разбираемся по шагам.
Ты набираешь сообщение, жмёшь «Отправить» — и через секунду оно уже на сервере где-нибудь в другом полушарии. Кажется почти магией: как кучка букв успевает пересечь океан, проскочить десятки городов и сотни чужих машин быстрее, чем ты успеваешь моргнуть? Никакой магии — только очень умная инженерия. Давай разложим этот фокус по шагам.
Твоё письмо режут на кусочки
Первая неожиданность: твоё сообщение не летит целиком. Прежде чем отправиться в путь, оно разбивается на маленькие части — пакеты. Представь, что ты хочешь переслать другу толстую книгу, но почта принимает только тонкие конверты. Ты вырываешь страницы, раскладываешь по конвертам и на каждом пишешь номер: «страница 1 из 200», «страница 2 из 200» и так далее.
Интернет делает ровно то же самое. Каждый пакет — это маленький конверт. Внутри — кусочек твоих данных, а снаружи, в так называемом заголовке, написано всё нужное: откуда пакет, куда он направляется и каким он идёт по счёту. Благодаря номерам неважно, в каком порядке кусочки доедут — на той стороне их соберут обратно правильно.
Интернет почти никогда не пересылает большие вещи целиком. Он дробит их на крошечные пронумерованные пакеты — так надёжнее и быстрее.
Адрес есть у каждого: знакомься, IP
Чтобы конверт куда-то дошёл, на нём должен быть адрес. В интернете адрес называется IP-адресом — это уникальный номер устройства в сети. У твоего телефона он есть, у сервера на другом конце планеты — тоже. Выглядит он примерно так: набор чисел вроде 142.250.74.78 или длинная запись из букв и цифр в новом формате.
Но ведь ты не вбиваешь числа, когда заходишь на сайт — ты пишешь понятное имя, например codechick.io. За кулисами работает DNS — это как телефонная книга интернета. Ты называешь имя, DNS быстро находит соответствующий IP-адрес и подсказывает твоему устройству, куда на самом деле слать пакеты. Без этого пришлось бы помнить числовые адреса всех сайтов наизусть — кошмар.
Эстафета маршрутизаторов
Вот тут начинается самое интересное. Твой пакет не знает всего пути заранее. Он не держит в голове карту от твоего дома до сервера в другой стране. Вместо этого он движется от узла к узлу, как путник, который на каждом перекрёстке спрашивает дорогу.
Эти «перекрёстки» называются маршрутизаторами (роутерами). Каждый из них смотрит на адрес назначения пакета и решает только одно: в какую сторону отправить его дальше, чтобы тот оказался поближе к цели. Пакет прыгает с роутера на роутер — такие прыжки называют хопами (от английского hop, «прыжок»).
Путь обычно выглядит так:
- твой телефон отдаёт пакет домашнему роутеру;
- тот передаёт его провайдеру — компании, которая даёт тебе интернет;
- провайдер выводит пакет на крупные магистральные линии;
- дальше — череда чужих сетей по всему миру;
- и, наконец, сеть, где живёт нужный сервер.
Самое удивительное: двум пакетам одного сообщения необязательно идти одной дорогой. Если на одном маршруте затор или обрыв, роутеры спокойно направят следующие пакеты в обход. Поэтому интернет так трудно «сломать» целиком — он сам себя объезжает, как вода обтекает камень в ручье.
Под океаном лежат кабели
А как пакет вообще пересекает океан? Не по спутнику, как многие думают. Подавляющая часть межконтинентального трафика идёт по подводным кабелям, лежащим прямо на дне морей и океанов. Внутри них — оптоволокно, тончайшие стеклянные нити, по которым летят импульсы света.
Да-да, твоё сообщение в прямом смысле едет верхом на свете. А свет — самый быстрый гонец во Вселенной: в волокне он бежит со скоростью около двухсот тысяч километров в секунду. С такой прытью даже путь через половину планеты занимает лишь доли секунды. Прибавь время на работу роутеров и серверов — и получится та самая «секунда», за которую письмо оказывается на другом конце Земли.
Почтальон, который проверяет, что всё дошло
Остался последний вопрос: а вдруг какой-то пакет потеряется по дороге? Такое случается. Поэтому в интернете есть свои «правила вежливой переписки» — протоколы. Один из главных называется TCP.
Работает он как дотошный почтальон. Когда все пакеты прибывают, принимающая сторона собирает их по номерам в исходное сообщение и проверяет: всё ли на месте? Если какого-то конверта не хватает, она вежливо просит: «пришли-ка ещё раз страницу 57». Отправитель повторяет — и так до тех пор, пока картинка не сложится полностью и без дыр. Именно поэтому твои сообщения приходят целыми, а не обрывками.
Сложи всё вместе — и фокус раскрыт. Сообщение режется на пакеты, каждый получает адрес, прыгает по маршрутизаторам, мчится по подводному оптоволокну верхом на свете, а на финише собирается обратно и проверяется на целостность. Всё это — за время, которое ты даже не замечаешь. В следующий раз, нажимая «Отправить», вспомни: ты только что запустил крошечное кругосветное путешествие.