Как работает интернет: от запроса до ответа простыми словами

Как работает интернет: от запроса до ответа простыми словами Полезное

Интернет — это глобальная сеть из множества соединенных между собой сетей, которые общаются по единому набору правил (стеку протоколов TCP/IP). Ни одного «главного компьютера» у интернета нет: это децентрализованное объединение, где данные передаются небольшими порциями — пакетами — от узла к узлу, пока не дойдут до адресата.

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

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

Проще всего понять интернет через один сквозной сценарий. Вы вводите в браузере otus.ru и жмете Enter. Дальше по шагам:

  1. Поиск адреса (DNS). Браузер не знает, где физически находится otus.ru. Он спрашивает у DNS-сервера: какой IP-адрес у этого имени. В ответ приходит числовой адрес, например условный 93.184.216.34.
  2. Установка соединения (TCP). По этому адресу браузер открывает соединение с сервером. Для надежной передачи используется протокол TCP: стороны обмениваются служебными пакетами и договариваются о начале обмена.
  3. Запрос (HTTP/HTTPS). Браузер отправляет запрос: «дай мне страницу по такому-то пути». Через HTTPS этот запрос еще и шифруется.
  4. Ответ. Сервер обрабатывает запрос и отправляет обратно данные страницы — HTML, стили, картинки. Все это тоже едет пакетами.
  5. Отрисовка. Браузер собирает пакеты в исходные файлы и показывает вам страницу.

Весь цикл занимает доли секунды. Дальше разберем каждый механизм отдельно — именно из них и складывается ответ на вопрос, как работает сеть.

Клиент и сервер: кто с кем говорит

Обмен в интернете почти всегда устроен по модели «клиент — сервер».

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

Сервер — это компьютер, который хранит данные и отвечает на запросы. Веб-серверы обрабатывают HTTP-запросы и отдают страницы, файлы, медиа. Серверы рассчитаны на непрерывную работу и одновременное обслуживание многих клиентов.

Важно не путать роли с «железом»: один и тот же компьютер может быть и клиентом, и сервером в разных соединениях. «Сервер» — это роль в конкретном обмене, а не отдельный класс устройств.

Пакеты и маршрутизация: как данные едут по сети

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

Пакеты одного файла могут ехать разными маршрутами и приходить не по порядку — получатель соберет их обратно по номерам. Если пакет потерялся, TCP заметит пропажу и запросит его повторно. Именно поэтому сеть устойчива: обрыв одного канала не рушит передачу, пакеты пойдут в обход.

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

Адреса в интернете: IP-адрес

Чтобы пакет нашел получателя, у каждого узла в сети есть IP-адрес — уникальный числовой идентификатор. Сегодня в ходу две версии.

  • IPv4 — 32-битное число, которое записывают как четыре десятичных числа от 0 до 255 через точку: 192.168.1.10. Всего таких адресов около 4,3 млрд, и их уже не хватает.
  • IPv6 — 128-битный адрес, который записывают шестнадцатеричными группами через двоеточие: 2001:db8::1. Адресов в нем практически неисчерпаемо много, и он постепенно вытесняет IPv4.

IP-адрес логически делится на две части: адрес сети и адрес узла внутри нее. Маска (запись вида /24) задает, сколько старших бит отведено под сеть. Посмотрим на это в коде — модуль ipaddress есть в стандартной библиотеке Python:

import ipaddress

# Разбираем IPv4-адрес: как 4 десятичных числа превращаются в 32 бита
ip = ipaddress.IPv4Address("192.168.1.10")
print("адрес:", ip)
print("как 32-битное число:", int(ip))
print("в двоичном виде:", format(int(ip), "032b"))

# Сеть с маской /24: адрес сети + адрес узла внутри нее
net = ipaddress.IPv4Network("192.168.1.0/24")
print("сеть:", net, "- всего адресов в диапазоне:", net.num_addresses)
print("192.168.1.10 в этой сети:", ip in net)
print("8.8.8.8 в этой сети:", ipaddress.IPv4Address("8.8.8.8") in net)

# IPv6 - тот же смысл, но 128 бит и запись через двоеточие
ip6 = ipaddress.IPv6Address("2001:db8::1")
print("IPv6:", ip6.compressed, "- всего бит:", ip6.max_prefixlen)

Вывод программы:

адрес: 192.168.1.10
как 32-битное число: 3232235786
в двоичном виде: 11000000101010000000000100001010
сеть: 192.168.1.0/24 - всего адресов в диапазоне: 256
192.168.1.10 в этой сети: True
8.8.8.8 в этой сети: False
IPv6: 2001:db8::1 - всего бит: 128

Из диапазона /24 под адреса узлов доступны не все 256 значений: первый адрес сети и последний (широковещательный) зарезервированы, так что реально на устройства остается 254. Проверка ip in net — это ровно то, по какому признаку маршрутизатор решает, «свой» это адрес для сети или пакет надо отправить дальше.

DNS: как имя превращается в адрес

Запоминать числовые адреса неудобно, поэтому людям служат доменные имена вроде otus.ru. Перевод имени в IP-адрес выполняет система доменных имен — DNS (Domain Name System). Это распределенная по всему миру иерархия серверов, работающая как телефонный справочник интернета.

Имя читается справа налево по уровням: ru — домен верхнего уровня, otus — домен второго уровня, слева могут быть поддомены (www, journal). За каждый уровень отвечают свои серверы, и запрос последовательно спускается по иерархии, пока не найдет нужный адрес. Ответы кэшируются, поэтому повторный заход на сайт обходится без полного поиска.

Чтобы указать не просто узел, а конкретный ресурс на нем, используют URL — единый адрес ресурса. Разберем его на части тем же Python:

from urllib.parse import urlparse

url = "https://otus.ru/journal/vse-o-rabote-seti-internet-prosto-o-slozhnom/?ref=search"
p = urlparse(url)
print("схема (протокол):", p.scheme)
print("хост (доменное имя):", p.hostname)
print("порт:", p.port or "по умолчанию (443 для https)")
print("путь к ресурсу:", p.path)
print("строка запроса:", p.query)

Вывод программы:

схема (протокол): https
хост (доменное имя): otus.ru
порт: по умолчанию (443 для https)
путь к ресурсу: /journal/vse-o-rabote-seti-internet-prosto-o-slozhnom/
строка запроса: ref=search

Схема говорит, по какому протоколу обращаться, хост — к какому серверу (его имя DNS переведет в IP), путь — какой ресурс на сервере нужен, а строка запроса передает дополнительные параметры. Из этих частей и складывается точный адрес страницы.

Протоколы и модель уровней

Чтобы устройства разных производителей понимали друг друга, обмен подчинен протоколам — согласованным наборам правил. Их удобно представлять уровнями: каждый уровень решает свою задачу и опирается на нижний, не вникая в его детали. Классическая эталонная модель — семиуровневая OSI, но на практике интернет описывают более простой моделью TCP/IP из четырех уровней.

Уровень (модель TCP/IP) За что отвечает Примеры протоколов
Прикладной формат данных для приложений HTTP, HTTPS, DNS, SMTP, FTP
Транспортный доставка между программами, надежность TCP, UDP
Сетевой (межсетевой) адресация и маршрутизация пакетов IP, ICMP
Канальный передача по физической среде Ethernet, Wi-Fi

Пара уровней, которую стоит развести явно. IP (сетевой уровень) отвечает за адресацию и доставку пакета до нужного узла, но не гарантирует, что пакет дойдет и не потеряется. TCP (транспортный уровень) поверх IP добавляет надежность: нумерует пакеты, переспрашивает потерянные, собирает их по порядку. Там, где важнее скорость, а не полнота (видеозвонки, игры), вместо TCP берут UDP — он быстрее, но без гарантий доставки.

Название стека TCP/IP как раз и отражает эту связку двух ключевых протоколов, на которых держится интернет.

Сетевое оборудование

За физическую передачу данных отвечает несколько типов устройств. Роли у них разные, и их часто путают.

  • Маршрутизатор (роутер) соединяет разные сети и выбирает путь для пакетов между ними; на нем держится связь вашей домашней сети с интернетом.
  • Коммутатор (свитч) соединяет устройства внутри одной локальной сети и передает данные адресно нужному устройству.
  • Модем согласует сигнал между вашим оборудованием и линией провайдера (кабельной, оптической, мобильной). В домашних условиях роутер, коммутатор и модем часто собраны в одной коробке.

Между узлами данные идут по каналам связи: оптоволокну, медному кабелю, радиоканалам Wi-Fi и мобильных сетей. Магистральные линии между континентами — это в основном подводные оптические кабели, а не спутники, как иногда думают.

Поверхностный, глубокий и теневой веб

Отдельно стоит развести три термина, которые в старых статьях смешивают с городскими легендами.

  • Поверхностный веб (surface web) — страницы, которые индексируют поисковики: их видно в выдаче Google или Яндекса.
  • Глубокий веб (deep web) — все, что поисковики не индексируют: содержимое за авторизацией, личные кабинеты, почтовые ящики, внутренние базы. Это не что-то запретное, а просто непубличные страницы, и их большинство.
  • Теневой веб (dark web) — небольшая часть сети, доступная только через специальные сети вроде Tor. Там есть и легальные ресурсы (анонимные СМИ), и криминальные площадки.

«Уровней глубже даркнета» с тайными знаниями (так называемая Mariana’s Web и подобное) — это интернет-фольклор, а не технический факт. Реальная структура исчерпывается тремя понятиями выше.

Выводы

  • Интернет — это децентрализованная сеть сетей на стеке TCP/IP, без единого главного узла; данные едут пакетами от маршрутизатора к маршрутизатору.
  • Открытие сайта — это цепочка: DNS переводит имя в IP-адрес, TCP устанавливает соединение, HTTP/HTTPS переносит запрос и ответ, браузер собирает пакеты и рисует страницу.
  • IP-адрес (IPv4 — 32 бита, IPv6 — 128 бит) делится на адрес сети и адрес узла; по этому делению маршрутизатор решает, куда слать пакет.
  • Уровни TCP/IP разводят задачи: IP адресует и маршрутизирует, TCP обеспечивает надежность, UDP жертвует гарантиями ради скорости.
  • Роутер, коммутатор и модем — разные роли: соединение сетей, соединение устройств внутри сети и согласование сигнала с линией провайдера.

Где применяется и что учить дальше

Понимание того, как работает интернет, — это база для сетевого администрирования и разработки: настройки маршрутизации и подсетей, диагностики через ping и traceroute, работы с DNS, TCP/IP и HTTP. С этого начинается профессия сетевого инженера, а без этого фундамента трудно и в DevOps, и в бэкенде.

Освойте тему на практике

Если хочется разобрать сети системно — от адресации и маршрутизации до протоколов и практики настройки оборудования — посмотрите курс Network engineer. Оценить формат и уровень до старта помогают бесплатные открытые уроки Otus — живые занятия с преподавателями.

Смежные темы: TCP/IP: просто о сложном.

FAQ

Кто управляет интернетом, если у него нет главного компьютера? Единого владельца нет, но есть организации, которые координируют общие правила: например, ICANN отвечает за распределение доменов и IP-адресов, а IETF — за стандарты протоколов. Сами сети принадлежат разным провайдерам и компаниям.

Чем интернет отличается от Всемирной паутины (WWW)? Интернет — это инфраструктура из соединенных сетей и протоколов. WWW — лишь одна из служб поверх нее: связанные гиперссылками веб-страницы по HTTP. Почта, видеозвонки и онлайн-игры тоже работают через интернет, но к WWW не относятся.

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

OTUS Журнал
Скидка 5% 14-20 сентября на курсы (popup)