Вы сейчас читаете этот текст. Он как-то попал с моего компьютера на ваш экран. Между нами могут быть тысячи километров, но вы видите каждую букву мгновенно. Как это вообще работает?
Я программирую уже лет пятнадцать, но долго не понимал, что реально происходит, когда нажимаю Enter в браузере. Сейчас объясню простыми словами, без занудства про протоколы и OSI-модели.
Адреса вместо имён
Каждый компьютер в сети имеет адрес. Как номер дома на улице. Называется IP-адрес - четыре числа через точку, типа 192.168.1.1.
Но мы же не вводим цифры, когда хотим зайти на сайт? Правильно. Вводим понятные имена: google.com, youtube.com. А дальше работает штука под названием DNS - Domain Name System.
Это как телефонная книга интернета. Вы говорите "хочу на youtube.com", а DNS отвечает "окей, это адрес 142.250.185.206". И браузер уже обращается по конкретному адресу.
Кстати, DNS-серверы иногда ложатся, и тогда сайты перестают открываться по именам. Но если знать IP-адрес, можно ввести его напрямую - и всё работает. Я так пару раз выходил из положения, когда провайдер косячил.
Пакеты, а не файлы целиком
Когда вы скачиваете фотку или открываете страницу, данные не летят одним куском. Они разбиваются на маленькие пакеты - обычно по 1500 байт. Каждый пакет идёт своим путём через сеть.
Представьте, что отправляете книгу по почте, но не целиком, а порванную на страницы. Каждая страница в отдельном конверте, и они могут ехать разными маршрутами. На другом конце их собирают обратно в правильном порядке.
Зачем так сложно? Потому что если один пакет потеряется (а это бывает), не нужно пересылать всю книгу - только недостающую страницу. Плюс пакеты могут идти параллельно, что ускоряет передачу.
Протокол TCP следит, чтобы все пакеты дошли и собрались правильно. Если что-то потерялось - запрашивает повторно. Поэтому когда интернет тормозит, вы видите медленную загрузку, а не битые файлы.
Роутеры - почтальоны сети
Между вашим компьютером и сервером, где лежит сайт, стоят десятки устройств. Называются роутеры или маршрутизаторы. Их задача - смотреть на адрес пакета и решать, куда его отправить дальше.
Как почтальон смотрит на адрес письма: "О, это в Москву. Значит, отправляю на московский сортировочный центр". Следующий роутер думает: "Москва, район Митино. Кину на местную станцию". И так далее, пока пакет не дойдёт до получателя.
Путь может быть странным. Я как-то проверял, куда идут мои пакеты до сайта в Германии. Оказалось, сначала в Амстердам, потом почему-то в Лондон, и только потом в Берлин. Провайдеры выбирают маршруты по своим соображениям, не всегда логичным.
Есть команда traceroute (в Windows - tracert), которая показывает весь путь пакетов. Попробуйте ради интереса - увидите, через сколько промежуточных точек идут ваши данные.
Серверы - обычные компьютеры
Многие думают, что сервер - это что-то космическое. На деле это просто компьютер, который работает круглосуточно и отвечает на запросы. Может стоять в дата-центре, а может у кого-то дома в шкафу.
Крупные компании держат тысячи серверов в специальных помещениях - дата-центрах. Там холодно, шумно от вентиляторов, ряды стоек с железом. Выглядит как в фильмах про хакеров, только скучнее.
Когда вы открываете сайт, ваш запрос доходит до одного из этих серверов. Сервер находит нужный файл или генерирует страницу, пакует в пакеты и отправляет обратно. Всё это занимает доли секунды.
HTTPS - чтобы соседи не подглядывали
Раньше все данные шли открытым текстом. Любой, кто стоит на пути пакетов, мог их прочитать. Как открытка вместо письма в конверте.
Потом придумали шифрование. HTTPS - это когда данные между вами и сервером зашифрованы. Даже если кто-то перехватит пакеты, увидит только кашу из символов.
Особенно критично для паролей и платёжных данных. Поэтому все нормальные сайты сейчас используют HTTPS. Если видите в браузере "соединение не защищено" - задумайтесь, стоит ли там вводить чувствительную информацию.
Шифрование работает через сертификаты. Когда вы заходите на сайт, сервер показывает сертификат, подтверждающий его личность. Браузер проверяет его и устанавливает защищённое соединение. Если сертификат левый - браузер кричит красным предупреждением.
Кеш - память интернета
Чтобы не загружать одно и то же тысячу раз, браузер сохраняет копии файлов локально. Это называется кеш. Картинки, скрипты, стили - всё это лежит у вас на диске после первой загрузки.
Когда заходите на сайт повторно, браузер проверяет: есть ли у меня уже эти файлы? Если есть и они не устарели - использует локальные копии. Сайт грузится быстрее.
Поэтому когда что-то не работает на сайте, техподдержка первым делом просит "очистить кеш". У вас может быть старая версия файла, а на сервере уже новая.
Кеш работает не только в браузере. Провайдеры тоже кешируют популярный контент. Когда миллион человек смотрят одно видео на YouTube, провайдер сохраняет его у себя и раздаёт локально, не гоняя через весь интернет каждый раз.
Почему иногда всё тормозит
Интернет - это цепочка звеньев. Достаточно одному звену просесть, и всё замедляется. Может тормозить ваш роутер, провайдер, какой-то промежуточный узел, или сам сервер перегружен.
Когда выходит популярная игра или стартует распродажа, серверы не выдерживают наплыва запросов. Всем хочется одновременно, железо не справляется. Получается очередь из пакетов, которая растёт, и соединение тормозит или рвётся.
Провайдеры иногда режут скорость для определённых сервисов. Смотрите видео - может быть приоритет ниже, чем у обычного серфинга. Это называется "управление трафиком", но по факту - дискриминация.
Ещё влияет физическое расстояние. Свет в оптоволокне идёт быстро, но не мгновенно. Запрос из Москвы в Австралию и обратно займёт минимум 200-300 миллисекунд просто из-за расстояния. Добавьте обработку на серверах, задержки у провайдеров - и вот вам полсекунды или больше.
Интернет кажется сложным, пока не разберёшься. На деле всё работает на простых принципах: адреса, пакеты, маршрутизация. Как почта, только быстрее и с компьютерами вместо почтальонов. Каждый раз, когда открываете сайт, запускается целый оркестр из проводов, серверов и протоколов. И это работает миллиарды раз в день по всему миру. Довольно круто, если подумать.
📖 Читайте также:
→ Кто владеет интернетом: правда о контроле над сетью
→ Кто на самом деле придумал интернет?