Как работает интернет: протоколы - Статья

Как работает интернет: протоколы - Статья

Протоколы интернета - Картинка к статье

Введение

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

В этой статье я разберу, что такое протокол, какие бывают основные протоколы, как устроена эталонная модель OSI и как работает стек TCP/IP — фундамент, на котором держится весь современный интернет. Статья рассчитана на людей без технического образования, но написана мной с позиции ИТ-специалиста, каким я и являюсь: объясняю подробно и честно, без упрощений, которые искажают суть.

Что такое протокол

Протокол — это набор правил, по которым устройства обмениваются данными. Правила определяют формат сообщений, порядок их отправки, способы проверки правильности доставки и реакцию на ошибки.

Аналогия из жизни: когда вы звоните по телефону, вы следуете неформальному «протоколу». Сначала говорите «алло» и представляетесь. Потом объясняете причину звонка. Собеседник отвечает. Если связь прерывается, кто-то перезванивает. Если бы оба абонента вели себя по-разному — один начал бы с причины звонка, а другой ждал приветствия, — разговор бы не состоялся.

В компьютерных сетях всё то же самое, только формализовано до мелочей. Протокол описывает:

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

Основные термины

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

Пакет

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

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

Структура пакета:

Часть пакета Что содержит
Заголовок Адреса отправителя и получателя, номер пакета, тип данных, служебные поля
Полезная нагрузка Собственно данные — фрагмент веб-страницы, кусок изображения, часть сообщения
Концевик (трейлер) Контрольная сумма для проверки целостности

Пакеты могут идти по сети разными маршрутами и приходить в разном порядке. Получатель собирает их обратно в исходное сообщение — как получатель писем раскладывает главы по номерам.

Адресация: IP-адрес

IP-адрес — это уникальный числовой идентификатор устройства в сети. Каждый компьютер, телефон, сервер — каждый узел сети имеет IP-адрес. По сути, это аналог почтового адреса.

IPv4-адрес состоит из четырёх чисел от 0 до 255, разделённых точками: например, 192.168.1.10. Всего таких адресов около 4,3 миллиарда — и их стало не хватать, потому что устройств в интернете гораздо больше. Поэтому придумали IPv6 — новый формат адресов, состоящий из восьми групп шестнадцатеричных чисел, разделённых двоеточиями: 2001:0db8:85a3:0000:0000:8a2e:0370:7334. Пространство IPv6 настолько велико, что адресов хватит на астрономическое количество устройств.

Порт

Порт — это числовой идентификатор конкретного приложения или службы на устройстве. Если IP-адрес — это адрес многоквартирного дома, то порт — это номер квартиры.

На одном сервере могут работать одновременно веб-сайт, почтовый сервер и база данных. Все они принимают данные по одному и тому же IP-адресу, но на разные порты. Стандартные порты заранее закреплены за типами служб:

Порт — это число от 0 до 65535. Порты с 0 по 1023 называются зарезервированными — для них назначены стандартные службы. Порты с 1024 по 49151 — зарегистрированные. Порты с 49152 по 65535 — динамические, их операционная система назначает временно для исходящих соединений.

DNS

DNS (Domain Name System) — это система, которая переводит понятные людям имена сайтов в числовые IP-адреса. Когда вы вводите в браузере yandex.ru, ваш компьютер не знает, какой IP-адрес у этого сервера. Он обращается к DNS-серверу — что-то вроде телефонной книги интернета — и получает в ответ, например, 77.88.55.55.

DNS — это иерархическая распределённая база данных. Она устроена как дерево: корневые серверы знают о серверах доменов верхнего уровня (.ru, .com, .org), те — о серверах доменов второго уровня (yandex.ru), и так далее.

Маршрутизация

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

Аналогия: вы едете из Москвы во Владивосток на машине. Прямой дороги нет — вы едете от города к городу, на каждом перекрёстке выбирая дорогу по указателям. Роутеры — это перекрёстки, а указатели — их таблицы маршрутизации.

Инкапсуляция

Инкапсуляция — это процесс упаковки данных одного уровня внутри данных другого уровня. Когда вы открываете веб-страницу, ваш браузер создаёт HTTP-запрос. Этот запрос упаковывается в TCP-сегмент, тот — в IP-пакет, IP-пакет — в кадр Ethernet, а кадр уже передаётся по кабелю в виде электрических сигналов. Каждый уровень добавляет свой заголовок — как матрёшка вкладывается в матрёшку.

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

Узел, клиент и сервер

Узел (node) — любое устройство, подключённое к сети: компьютер, телефон, принтер, сервер, роутер.

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

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

Модель OSI

Теперь, когда терминология ясна, перейдём к архитектуре сетей. Модель OSI (Open Systems Interconnection) — это теоретическая модель, разработанная Международной организацией по стандартизации (ISO) в 1984 году. Она описывает, как данные проходят от приложения на одном компьютере до приложения на другом, и делит весь процесс на семь уровней.

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

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

Уровни нумеруются снизу вверх, от 1 до 7.

Уровень 1. Физический (Physical)

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

Физический уровень определяет:

К устройствам этого уровня относятся кабели, разъёмы (RJ-45 для витой пары, SC для оптики), повторители (repeater), хабы (устарели). Первый уровень не понимает, что он передаёт — он просто гонит биты.

Уровень 2. Канальный (Data Link)

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

Здесь появляются первые адреса — MAC-адреса (Media Access Control). Это физический адрес сетевого адаптера, зашитый в него на заводе (обычно), и выглядит как шесть пар шестнадцатеричных чисел: 00:1A:2B:3C:4D:5E.

Канальный уровень делится на два подуровня:

Важные протоколы канального уровня:

Канальный уровень также отвечает за обнаружение ошибок — в конце кадра добавляется контрольная сумма (FCS, Frame Check Sequence). Если получатель вычисляет сумму и она не совпадает — кадр отбрасывается.

Уровень 3. Сетевой (Network)

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

Главный протокол этого уровня — IP (Internet Protocol). Он определяет:

IP — это протокол без установления соединения и без гарантии доставки. Он не проверяет, дошёл ли пакет. Не следит за порядком. Не повторяет потерянные пакеты. Это называется «best effort» — «максимальное усилие». Гарантии обеспечивает уровень выше — транспортный.

Кроме IP, на сетевом уровне работают:

Уровень 4. Транспортный (Transport)

Транспортный уровень — это уровень надёжности и доставки до конкретного приложения. Если сетевой уровень отвечает на вопрос «как доставить пакет до нужного устройства», то транспортный — «как доставить данные до нужной программы на этом устройстве и убедиться, что всё дошло целым и в правильном порядке».

Здесь работают два главных протокола:

TCP (Transmission Control Protocol) — протокол с установлением соединения и гарантированной доставкой. Перед передачей данных отправитель и получатель «договариваются» — выполняют так называемое тройное рукопожатие (three-way handshake):

  1. Отправитель посылает пакет с флагом SYN (synchronize) — «хочу установить соединение».
  2. Получатель отвечает пакетом с флагами SYN+ACK — «согласен, вот мой начальный номер».
  3. Отправитель посылает пакет с флагом ACK — «подтверждаю, соединение установлено».

После этого начинается передача данных. TCP:

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

UDP (User Datagram Protocol) — протокол без установления соединения и без гарантий. UDP просто отправляет данные и не проверяет, дошли ли они. Зато UDP:

UDP используется там, где скорость важнее надёжности: стриминг видео и аудио (немного потеряли — и ладно, лучше чуть хуже качество, чем пауза), онлайн-игры, DNS-запросы, видеоконференции. Если при видеозвонке потеряется пара пакетов, вы увидите лёгкое «кваканье» — это приемлемо. А вот если ради скорости не досчитаться кусков файла с банковской выпиской — это катастрофа.

Уровень 5. Сеансовый (Session)

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

Функции уровня:

На практике в современном интернете сеансовый уровень как самостоятельный слой почти не используется — его функции обычно встроены в протоколы прикладного уровня или транспортного. Но в модели OSI он есть как концептуальный элемент.

Уровень 6. Представления (Presentation)

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

Функции:

Как и сеансовый уровень, уровень представления в чистом виде в современном интернете встречается редко — его функции встроены в протоколы прикладного уровня.

Уровень 7. Прикладной (Application)

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

Важные протоколы прикладного уровня:

Сводная таблица уровней OSI

Уровень Что делает Примеры протоколов Единица данных
7 Прикладной Сетевые службы для приложений HTTP, HTTPS, SMTP, DNS, FTP, SSH Сообщение
6 Представления Кодирование, шифрование, сжатие TLS/SSL, JPEG, ASCII Сообщение
5 Сеансовый Управление сеансом связи NetBIOS, RPC Сообщение
4 Транспортный Доставка до приложения, надёжность TCP, UDP Сегмент / Датаграмма
3 Сетевой Маршрутизация, глобальная адресация IP, ICMP, ARP Пакет
2 Канальный Доставка в локальной сети Ethernet, Wi-Fi, PPP Кадр
1 Физический Передача сигналов Кабели, оптика, радио Бит

Как данные проходят через уровни

Проследим путь веб-запроса от вашего браузера до сервера и обратно:

  1. Прикладной уровень: браузер формирует HTTP-запрос GET /index.html HTTP/1.1.
  2. Уровень представления: запрос шифруется по TLS (если HTTPS).
  3. Сеансовый уровень: устанавливается и поддерживается сеанс.
  4. Транспортный уровень: запрос упаковывается в TCP-сегмент, добавляются порт отправителя и порт получателя (80 или 443).
  5. Сетевой уровень: сегмент упаковывается в IP-пакет, добавляются IP-адреса.
  6. Канальный уровень: IP-пакет упаковывается в кадр Ethernet, добавляются MAC-адреса.
  7. Физический уровень: кадр превращается в последовательность бит и передаётся по кабелю или радиоволнами.

На стороне получателя — всё в обратном порядке: биты → кадр → пакет → сегмент → расшифровка → HTTP-запрос доходит до веб-сервера. Сервер обрабатывает запрос и отправляет ответ тем же путём в обратную сторону.

Стек протоколов TCP/IP

Модель OSI — это теория. А на практике интернет работает по стеку TCP/IP — набору протоколов, который был разработан раньше OSI (в 1970-х годах в проекте DARPA) и стал фактическим стандартом интернета. Стек TCP/IP — это то, что реально работает в каждом вашем устройстве прямо сейчас.

Стек TCP/IP имеет четыре уровня — они объединяют семь уровней OSI в более прагматичную структуру:

Уровень TCP/IP Уровни OSI Назначение Протоколы
Прикладной 7, 6, 5 Сетевые службы, кодирование, сеансы HTTP, HTTPS, DNS, SMTP, FTP, SSH, TLS
Транспортный 4 Доставка до приложения, надёжность TCP, UDP
Межсетевой (Internet) 3 Маршрутизация, адресация IP, ICMP, ARP
Сетевого доступа (Link) 2, 1 Передача в локальной сети и физическая среда Ethernet, Wi-Fi, PPP

Как видите, три верхних уровня OSI (прикладной, представления, сеансовый) объединены в один прикладной уровень TCP/IP, а два нижних (канальный и физический) — в уровень сетевого доступа.

Чем TCP/IP отличается от OSI

Параметр Модель OSI Стек TCP/IP
Происхождение Теоретическая модель, ISO, 1984 Практическая разработка, DARPA, 1970-е
Количество уровней 7 4
Назначение Концептуальный каркас, обучение Реальная реализация интернета
Уровень представления и сеансовый Выделены отдельно Объединены в прикладной уровень
Гибкость Строгая модель Прагматичный, развивается по мере надобности

Модель OSI удобна для обучения и проектирования: на ней легко объяснить, за что отвечает каждый слой. Стек TCP/IP удобен для работы: именно по нему построен весь интернет, и все реальные протоколы разработаны в его рамках.

Подробное описание основных протоколов

Теперь разберём ключевые протоколы интернета детально — как они устроены, зачем нужны и как работают.

IP (Internet Protocol)

IP — это фундамент интернета. Без IP не было бы интернета в том виде, в каком мы его знаем. Это протокол, который обеспечивает адресацию и маршрутизацию — то есть отвечает на два вопроса: «Куда отправить пакет?» и «Каким путём он дойдёт?».

Версии IP:

IPv4 — старая, но до сих пор доминирующая версия. Адрес — 32 бита, записывается как четыре числа от 0 до 255: 77.88.55.55. Адресное пространство — 232 = 4 294 967 296 адресов. С учётом служебных и зарезервированных диапазонов доступно ещё меньше. Этого не хватает на все устройства в мире, поэтому интернет постепенно переходит на IPv6.

IPv4-адрес делится на две части: адрес сети и адрес узла в этой сети. Граница между частями задаётся маской подсети. Например, адрес 192.168.1.10 с маской 255.255.255.0 означает: сеть 192.168.1.0, узел 10 в этой сети.

Частные диапазоны IPv4 (не маршрутизируются в интернете, используются в локальных сетях):

Если ваш домашний роутер выдаёт вам адрес вида 192.168.x.x — это частный адрес, он не виден из интернета напрямую. Роутер подменяет его на свой внешний адрес (это называется NAT — Network Address Translation) при выходе в интернет.

IPv6 — новая версия. Адрес — 128 бит, записывается как восемь групп шестнадцатеричных чисел: 2001:0db8:85a3:0000:0000:8a2e:0370:7334. Адресное пространство — 2128 ≈ 3,4 × 1038 — это астрономически много, хватит на все мыслимые устройства.

IPv6 упрощает многие вещи: нет необходимости в NAT (адресов хватает всем), встроена поддержка безопасности (IPsec), автоматическая настройка адресов без DHCP. Но переход идёт медленно, потому что нужно обновлять оборудование и программное обеспечение, и IPv4 с IPv6 несовместимы напрямую.

Структура IPv4-пакета:

Поле Размер Назначение
Версия 4 бита Версия протокола (4 для IPv4)
Длина заголовка 4 бита Размер заголовка в 32-битных словах
Тип сервиса 8 бит Приоритет пакета
Общая длина 16 бит Длина всего пакета (заголовок + данные)
Идентификатор 16 бит Для сборки фрагментированных пакетов
Флаги 3 бита Управление фрагментацией
Смещение фрагмента 13 бит Позиция данных фрагмента в исходном пакете
Время жизни (TTL) 8 бит Сколько роутеров может пройти пакет (уменьшается на каждом)
Протокол 8 бит Какой протокол вложен (6 = TCP, 17 = UDP)
Контрольная сумма заголовка 16 бит Проверка целостности заголовка
Адрес отправителя 32 бита IP-адрес источника
Адрес получателя 32 бита IP-адрес назначения
Опции переменно Дополнительные параметры (редко используются)
Данные переменно Полезная нагрузка (TCP-сегмент, UDP-датаграмма)

Поле TTL (Time to Live) заслуживает особого внимания. Каждый маршрутизатор, через который проходит пакет, уменьшает TTL на единицу. Если TTL достигает нуля, пакет уничтожается, а отправителю отправляется ICMP-сообщение об ошибке. Это защита от бесконечного блуждания пакетов по сети из-за ошибок в маршрутизации.

TCP (Transmission Control Protocol)

TCP — это протокол, который делает интернет надёжным. Он берёт ненадёжный IP, который может потерять пакет, доставить его дважды или в неправильном порядке, и строит поверх него надёжный канал передачи данных.

Как работает TCP:

1. Установление соединения (тройное рукопожатие)

Перед началом передачи данных отправитель и получатель обмениваются тремя сообщениями:

2. Передача данных

Каждый байт данных имеет порядковый номер. Получатель подтверждает получение, отправляя ACK с номером следующего ожидаемого байта. Например, если отправитель передал байты 1000–1999, получатель отвечает ACK = 2000 — «жду байт 2000».

Если отправитель не дождался ACK в течение определённого времени (таймаут), он считает, что данные потерялись, и отправляет их повторно. Это называется ретрансляцией (retransmission).

3. Управление потоком (flow control)

Получатель в каждом ACK сообщает размер окна (window size) — сколько байт он готов принять сейчас. Если у получателя буфер переполнен, он уменьшает окно, и отправитель замедляется. Если получатель разгрузился — увеличивает, и отправитель ускоряется.

4. Управление перегрузкой (congestion control)

TCP не только следит за готовностью получателя, но и за состоянием сети. Если пакеты теряются, TCP считает, что сеть перегружена, и уменьшает скорость передачи. Если потери прекращаются — плавно увеличивает. Алгоритмы congestion control: Slow Start, Congestion Avoidance, Fast Retransmit, Fast Recovery. Современные варианты: CUBIC (по умолчанию в Linux), BBR (разработка Google).

5. Завершение соединения

Соединение закрывается в четыре шага:

Структура TCP-сегмента:

Поле Размер Назначение
Порт отправителя 16 бит Порт приложения-источника
Порт получателя 16 бит Порт приложения-назначения
Номер последовательности 32 бита Порядковый номер первого байта в сегменте
Номер подтверждения 32 бита Номер следующего ожидаемого байта
Длина заголовка 4 бита Размер заголовка в 32-битных словах
Флаги 9 бит SYN, ACK, FIN, RST, PSH, URG и др.
Размер окна 16 бит Сколько байт получатель готов принять
Контрольная сумма 16 бит Проверка целостности сегмента
Указатель важности 16 бит Для срочных данных (редко используется)
Опции переменно Расширенные параметры (например, timestamps)
Данные переменно Полезная нагрузка

UDP (User Datagram Protocol)

UDP — это антипод TCP. Если TCP — это заказная почта с уведомлением о вручении, то UDP — это обычная почта: отправил и забыл.

UDP добавляет к данным только четыре поля: порт отправителя, порт получателя, длину и контрольную сумму. Всё. Ни нумерации, ни подтверждений, ни ретрансляции, ни управления потоком.

Когда используется UDP:

Структура UDP-датаграммы:

Поле Размер Назначение
Порт отправителя 16 бит Порт источника (может быть 0)
Порт получателя 16 бит Порт назначения
Длина 16 бит Длина датаграммы (заголовок + данные)
Контрольная сумма 16 бит Проверка целостности (может быть 0 — отключена)
Данные переменно Полезная нагрузка

Заголовок UDP — всего 8 байт. Заголовок TCP — минимум 20 байт. Разница кажется небольшой, но при миллионах пакетов в секунду она становится существенной.

HTTP (HyperText Transfer Protocol)

HTTP — это протокол прикладного уровня, по которому браузер получает веб-страницы. Это то, с чем вы взаимодействуете каждый раз, когда открываете сайт.

HTTP — это протокол «запрос-ответ» (request-response). Клиент (браузер) отправляет запрос, сервер возвращает ответ. Каждый запрос и ответ состоит из:

Методы HTTP:

Метод Назначение
GET Получить ресурс (страницу, изображение, документ)
POST Отправить данные на сервер (форма, файл, JSON)
PUT Создать или заменить ресурс
DELETE Удалить ресурс
HEAD Получить только заголовки, без тела
PATCH Частично изменить ресурс
OPTIONS Узнать, какие методы поддерживаются

Коды ответов HTTP — трёхзначные числа, которые сервер возвращает, чтобы сообщить результат:

Код Категория Пример
1xx Информационные 101 — переключение протоколов
2xx Успех 200 OK, 201 Created
3xx Перенаправление 301 — постоянный, 302 — временный
4xx Ошибка клиента 404 Not Found, 403 Forbidden
5xx Ошибка сервера 500 Internal Server Error, 503 Service Unavailable

Эволюция HTTP:

DNS (Domain Name System)

DNS — это телефонная книга интернета. Без DNS вам пришлось бы вводить 77.88.55.55 вместо yandex.ru.

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

  1. Браузер просит операционную систему: «Какой IP у yandex.ru
  2. ОС обращается к резолверу — обычно это DNS-сервер вашего провайдера или публичный (например, 8.8.8.8 от Google или 1.1.1.1 от Cloudflare).
  3. Если резолвер не знает ответа, он идёт по иерархии:
  4. Резолвер кеширует ответ и возвращает IP-адрес вашей ОС.

Кеширование — ключевая особенность DNS. Каждый уровень кеширует ответы на определённое время (TTL — Time to Live). Это снижает нагрузку на серверы и ускоряет повторные запросы.

Типы DNS-записей:

Тип Что означает
A IPv4-адрес домена
AAAA IPv6-адрес домена
CNAME Алиас — указание на другое имя
MX Почтовый сервер для домена
TXT Произвольный текст (для верификации, SPF и др.)
NS Серверы имён домена
SOA Начальная запись зоны с параметрами

TLS (Transport Layer Security)

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

Что обеспечивает TLS:

Как работает TLS (упрощённо):

  1. Клиент отправляет серверу список поддерживаемых алгоритмов шифрования и версию TLS.
  2. Сервер выбирает алгоритмы и отправляет свой сертификат с публичным ключом.
  3. Клиент проверяет сертификат: подписан ли он доверенным CA? Не истёк ли срок? Соответствует ли домен?
  4. Клиент и сервер обмениваются данными для генерации общего секрета (с помощью алгоритмов обмена ключами, например ECDHE).
  5. Из общего секрета вырабатываются ключи сессии, которые используются для симметричного шифрования.
  6. Дальше все данные шифруются симметричным алгоритмом (например, AES).

Почему сначала асимметричное, потом симметричное? Асимметричное шифрование (публичный/приватный ключ) медленное, но позволяет безопасно обменяться ключами. Симметричное (один ключ для шифрования и расшифрования) — быстрое, и именно им шифруется весь трафик.

TLS раньше назывался SSL (Secure Sockets Layer) — это предшественник TLS. Версии SSL 2.0 и 3.0 считаются небезопасными и не используются. Текущие версии TLS — 1.2 и 1.3. TLS 1.3 (2018) упростил и ускорил рукопожатие — теперь достаточно одного обмена сообщениями вместо двух.

DHCP (Dynamic Host Configuration Protocol)

DHCP — это протокол, который автоматически выдаёт устройствам IP-адреса и другие сетевые настройки. Когда вы подключаетесь к Wi-Fi и у вас «всё работает» — это DHCP настроил ваш IP-адрес, маску, шлюз и DNS.

Как работает DHCP:

  1. Discover: устройство, подключившись к сети, рассылает всем сообщение: «Есть тут DHCP-сервер? Мне нужен адрес!»
  2. Offer: DHCP-сервер отвечает: «Вот, могу предложить адрес 192.168.1.50 на 24 часа».
  3. Request: устройство говорит: «Беру!»
  4. Acknowledge: сервер подтверждает и передаёт дополнительные настройки: маску подсети, адрес шлюза (роутера), адреса DNS-серверов.

Адрес выдаётся в аренду (lease) на определённое время. Если устройство продолжает работать, оно продлевает аренду. Если исчезло — адрес возвращается в пул и выдаётся другому.

ICMP (Internet Control Message Protocol)

ICMP — это протокол диагностики и уведомлений об ошибках. Он не передаёт пользовательские данные, но помогает сетевому оборудованию и администраторам понимать, что происходит.

Примеры ICMP-сообщений:

Как протоколы работают вместе

Чтобы собрать всё воедино, рассмотрим конкретный пример — что происходит, когда вы открываете сайт https://example.com в браузере.

Шаг 1. DNS-запрос. Браузер просит ОС узнать IP-адрес example.com. ОС отправляет UDP-запрос на порт 53 к настроенному DNS-резолверу. Резолвер (возможно, через несколько шагов по иерархии) возвращает IP-адрес, скажем 93.184.216.34.

Шаг 2. Установление TCP-соединения. Браузер открывает TCP-соединение с сервером на порту 443 (HTTPS). Тройное рукопожатие: SYN → SYN-ACK → ACK. Пакеты идут от вашего устройства к роутеру по Ethernet или Wi-Fi (канальный уровень), от роутера через сеть провайдера по IP (сетевой уровень), до сервера.

Шаг 3. Рукопожатие TLS. Поверх установленного TCP-соединения начинается TLS-рукопожатие. Сервер присылает сертификат, клиент проверяет его, стороны вырабатывают ключи сессии.

Шаг 4. HTTP-запрос. Браузер отправляет зашифрованный HTTP-запрос: GET / HTTP/1.1 с заголовками (Host, User-Agent, Accept и другими).

Шаг 5. HTTP-ответ. Сервер обрабатывает запрос и возвращает зашифрованный ответ: 200 OK, заголовки (тип содержимого — text/html, кодировка) и тело — HTML-код страницы.

Шаг 6. Рендеринг. Браузер расшифровывает ответ, парсит HTML, запрашивает дополнительные ресурсы (CSS, JavaScript, изображения) — каждый через DNS → TCP → TLS → HTTP.

Шаг 7. Закрытие соединения. Когда все ресурсы загружены, TCP-соединения закрываются: FIN → ACK → FIN → ACK.

Всё это занимает доли секунды и происходит полностью автоматически. Протоколы вкладываются друг в друга: HTTP внутри TLS внутри TCP внутри IP внутри Ethernet. Каждая вложенная «матрёшка» отвечает за свою задачу, и вместе они обеспечивают то, что вы видите веб-страницу на экране.

Заключение

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

Модель OSI помогает понять логику: почему уровни разделены, за что отвечает каждый. Стек TCP/IP показывает, как это работает на практике. А знание конкретных протоколов — IP, TCP, UDP, HTTP, DNS, TLS, DHCP, ICMP — позволяет понять, что именно происходит, когда вы открываете сайт, отправляете письмо или смотрите видео.

Хорошая новость в том, что всё это устроено логично и последовательно. Каждый протокол решает свою конкретную задачу, и их взаимодействие — это не магия, а инженерия. Сеть, в которой вы сейчас читаете эту статью, — результат пятидесяти лет развития идей, стандартизации и кропотливой работы тысяч инженеров по всему миру.

На Главную Страницу