Недавно приняли закон о так называемом суверенном интернете. Есть много слухов о том, что интернет смогут блокировать, подавлять, отключать и многое другое. Мы не комментируем слухи, но воспользуемся случаем и расскажем немного об устройстве самого интернета.
В этой статье — основные знания о том, как устроен интернет, на примере одного запроса на сайт. Дальше — больше. Чтобы было понятно, мы намеренно упускаем некоторые технические детали.
Интернет — это много компьютеров
Интернет — это много вычислительных машин, которые объединены в сеть. Объединение в сеть означает, что одна вычислительная машина может отправить другой сообщение, а та может ответить. Пока непонятно, но подождите.
Например, есть ваш смартфон. И есть компьютер «Яндекса», который отвечает за отображение страницы по адресу yandex.ru. Смартфон делает запрос «Покажи мне главную yandex.ru», компьютер «Яндекса» этот запрос получает, обрабатывает, проверяет, кто вы, и отдаёт вам эту страницу в виде кода. Ваш гаджет получает код страницы и выводит на экран в виде главной страницы «Яндекса».
Может сложиться впечатление, что мы ходим по интернету, заходим на сайты, входим в личные кабинеты. На самом деле никто никуда не ходит. Просто наш компьютер делает запрос другому, тот даёт ответ, и наш компьютер выводит этот ответ на экран. Можно сказать, мы не ходим по интернету, а выборочно его скачиваем.
Клиенты и серверы
Обычно компьютеры в интернете грубо делят на клиенты и серверы. Клиенты — это все компьютеры, на которых информацию потребляют. Обычно у них есть клавиатуры, экраны, они мобильные и удобные для людей. Ваш телефон, планшет и ноутбук — клиенты.
Серверы — это тоже компьютеры, но предназначенные для раздачи информации клиентам. Внешне они обычно выглядят как металлические ящики, вкрученные в металлические шкафы: у них нет мониторов и клавиатур, зато внутри там огромные жёсткие диски, сотни гигабайт оперативной памяти и мощнейшие процессоры.
Внутри между клиентами и серверами нет принципиальных различий. И то, и другое — компьютеры. Вы можете установить программу-сервер на свой рабочий компьютер и после некоторой настройки раздавать с него сайты. Или можете под покровом ночи проникнуть в серверную, подключить к серверу монитор и клавиатуру и поиграть в пасьянс на 32-ядерном процессоре.
Сервером может работать почти любой компьютер. Вот несколько идей:
Ваш старый системный блок, который пылится в гараже, можно переоборудовать под файловый сервер. На последний можно будет скидывать семейные фото и делать резервные копии важных документов. Поставили компьютер в кладовке, подвели к нему сетевой провод, включили и забыли.
На вашем рабочем компьютере может в фоновом режиме работать сервер для игры Counter-Strike. Другие люди смогут спасать виртуальных заложников и обезвреживать виртуальные бомбы, пользуясь мощностями вашего компьютера.
Можно купить одноплатный компьютер Raspberry Pi, подключить к нему Wi-Fi-антенну и батарею, и у вас будет карманный сервер, который по вашему желанию может раздавать файлы, показывать сайты или управлять ботом в Telegram.
Можно на базе того же Raspberry Pi сделать сервер для умного дома. Он собирает информацию со всех датчиков в квартире, а вы подключаетесь к нему через интернет и смотрите, какая где температура, нет ли протечек, что происходит на камерах.
Как они связаны
Все понимают, что в интернете компьютеры как-то связаны. Но как? Представьте разветвлённую корневую систему дерева или кровеносную систему человека: есть большие толстые артерии, от них отходят сосуды, от них — более тонкие сосуды, потом ещё и ещё, до тончайших капилляров. Похожим образом устроен интернет.
Основа интернета — огромные магистральные кабели, которые лежат под землёй и на дне океана: они соединяют города, страны и континенты. Это толстые пучки оптоволокна, по которым передаются колоссальные объёмы данных.
Огромные магистральные кабели соединяют большие точки обмена данными: так называемые эксчейнджи. Это организации, которые отвечают за обмен трафиком между городами, странами и континентами. В России около 50 таких точек, в мире — порядка 1 500.
В самом упрощённом виде ваш интернет-провайдер получает доступ к ближайшему эксчейнджу, чтобы иметь возможность продавать вам интернет. Представьте, что от эксчейнджа прокладывается толстый кабель к провайдеру. Конкретно толстый кабель бывает не всегда, но для наших целей такая метафора подойдёт.
Дальше обычно так: провайдер прокладывает менее толстый кабель в ваш район, ставит в каком-нибудь доме распределительный маршрутизатор. Из него провода тянутся в соседние дома. Обратите внимание на провода между уголками двух соседних многоэтажек — чаще всего это интернет.
Провод попадает в ваш дом. На крыше или в подвале ставится маршрутизатор — это устройство, которое определяет, куда какой сигнал отправить. В маршрутизатор вставляется провод, который тянется непосредственно в вашу квартиру. Мастер подключает провод к маршрутизатору в вашей квартире — та серая или чёрная коробочка с огоньками. Коробочка начинает раздавать Wi-Fi, и ваш компьютер подключается к сети.
Есть и другие способы подключиться, но в общем виде это так: магистраль → городская точка → провайдер → район → дом → подъезд → вы. И везде кабели. Интернет — это не волшебное облако с контентом, это огромная куча серверов, маршрутизаторов и кабелей, которые оплетают планету. И в самом конце, как вишенка на торте, ваш беспроводной роутер с Wi-Fi.
Допустим, вы захотели открыть главную страницу «Яндекса». Вот как всё будет происходить.
Вы набрали в браузере адрес yandex.ru. Опуская технические подробности, скажем, что ваш браузер узнал, что сайт yandex.ru живёт на компьютере с адресом 77.88.55.80.
77.88.55.80 — это IP-адрес. Такой адрес есть у всех компьютеров в интернете, в том числе у вашего. Ваш браузер говорит компьютеру: «Сделай запрос на 77.88.55.80».
Компьютер упаковывает этот запрос: ставит отметку «от кого», «кому», формулирует сам вопрос. Получается такой пакет данных. Он отправляет этот пакет той коробочке, которая стоит у вашей двери и мигает огоньками.
Роутер смотрит, что за адрес. Он видит, что никаких компьютеров с таким адресом к этому роутеру не подключено, поэтому передаёт запрос более старшему роутеру — на крыше подъезда.
Роутер на крыше видит, что никаких компьютеров с нужным адресом к нему тоже не подключено. Он отдаёт запрос выше, на районный роутер. Тот ещё выше, провайдеру.
У провайдера на роутере написана чёткая инструкция, что если придёт запрос на адрес 77.88.55.80, нужно передать его вон тому роутеру. Он это делает. Мы оказываемся на магистральном канале, который приведёт запрос в «Яндекс».
У «Яндекса» тысячи серверов, и один из них отвечает за главную страницу. Он получил запрос через цепочку роутеров и теперь обрабатывает.
Программа на сервере «Яндекса» готовит ответ на запрос. Она смотрит, из какого города к нему обращаются, и компонует новости для этого города. Определяет, знает ли она этого пользователя, и если знает — показывает ему число непрочитанных в почтовом ящике. Ещё она совершает множество невидимых действий, чтобы оптимизировать страницу.
Код итоговой страницы программа пакует по маленьким пакетам и отдаёт на ближайший роутер. На каждом пакете написан обратный адрес, с которого изначально пришёл запрос. Роутер начинает искать, как бы доставить эти пакеты обратно. Он отправляет их на магистраль, там роутеры передают эти пакеты провайдеру, он их направляет в нужный район, в районе их отправляют в дом, подъезд и, наконец, квартиру.
Пакеты приходят в вашу коробочку у двери. Она находит, какой компьютер запрашивал данные из «Яндекса», и отправляет ему по беспроводной связи только что пришедшие пакеты.
Ваш компьютер получает пакеты, распаковывает их, собирает цельный текст и рисует из этого текста страницу.
На весь путь из вашей квартиры до сервера «Яндекса» и обратно ушло меньше секунды, но в процессе было задействовано не менее пятидесяти машин — роутеров и серверов. Ваш запрос физически пропутешествовал до сервера «Яндекса» и вернулся. У вас ощущение, будто вы зашли в «Яндекс», но на самом деле «Яндекс» пришёл в ваш дом.
Это только самые основы. Дальше разберём, что можно с этими знаниями делать, как работают блокировки интернета и почему они на самом деле не работают, а главное — как сделать собственный сайт, который будет работать не хуже «Яндекса».