
Интернет — это не волшебство и не облако где-то в небе. Это огромная сеть сетей, в которой миллиарды устройств обмениваются данными по строгим правилам. Эти правила называются протоколами. Представьте себе ООН: чтобы делегаты из разных стран могли понимать друг друга, им нужен общий язык и единый регламент заседаний. Протоколы интернета — это и есть такой язык и регламент, только для компьютеров.
В этой статье я разберу, что такое протокол, какие бывают основные протоколы, как устроена эталонная модель OSI и как работает стек TCP/IP — фундамент, на котором держится весь современный интернет. Статья рассчитана на людей без технического образования, но написана мной с позиции ИТ-специалиста, каким я и являюсь: объясняю подробно и честно, без упрощений, которые искажают суть.
Протокол — это набор правил, по которым устройства обмениваются данными. Правила определяют формат сообщений, порядок их отправки, способы проверки правильности доставки и реакцию на ошибки.
Аналогия из жизни: когда вы звоните по телефону, вы следуете неформальному «протоколу». Сначала говорите «алло» и представляетесь. Потом объясняете причину звонка. Собеседник отвечает. Если связь прерывается, кто-то перезванивает. Если бы оба абонента вели себя по-разному — один начал бы с причины звонка, а другой ждал приветствия, — разговор бы не состоялся.
В компьютерных сетях всё то же самое, только формализовано до мелочей. Протокол описывает:
Каждый протокол работает на определённом уровне — от передачи физических сигналов по кабелю до отображения веб-страницы в браузере. Чтобы эти уровни были структурированы и взаимодействовали предсказуемо, придумали модели, в которых протоколы организованы в слои. Две самые важные — это модель OSI и стек TCP/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 (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 (Open Systems Interconnection) — это теоретическая модель, разработанная Международной организацией по стандартизации (ISO) в 1984 году. Она описывает, как данные проходят от приложения на одном компьютере до приложения на другом, и делит весь процесс на семь уровней.
Модель OSI не является протоколом — это каркас, концептуальная схема. Она нужна, чтобы производители оборудования и программного обеспечения могли создавать совместимые продукты: если все понимают, за что отвечает каждый уровень, проще разрабатывать решения, которые стыкуются с чужими.
Модель устроена как слоёный пирог: каждый слой использует возможности нижележащего и предоставляет сервис вышележащему. Данные при отправке идут сверху вниз — от приложения к физической среде, а при приёме — снизу вверх.
Уровни нумеруются снизу вверх, от 1 до 7.
Самый нижний уровень. Здесь нет ни пакетов, ни адресов — только физические сигналы: электрические импульсы в медном кабеле, световые импульсы в оптоволокне, радиоволны в Wi-Fi.
Физический уровень определяет:
К устройствам этого уровня относятся кабели, разъёмы (RJ-45 для витой пары, SC для оптики), повторители (repeater), хабы (устарели). Первый уровень не понимает, что он передаёт — он просто гонит биты.
Канальный уровень работает с кадрами (frames) и обеспечивает доставку данных между двумя устройствами, напрямую соединёнными одной физической средой — в пределах одного сегмента сети, без маршрутизации.
Здесь появляются первые адреса — MAC-адреса (Media Access Control). Это физический адрес сетевого адаптера, зашитый в него на заводе (обычно), и выглядит как шесть пар шестнадцатеричных чисел: 00:1A:2B:3C:4D:5E.
Канальный уровень делится на два подуровня:
Важные протоколы канального уровня:
Канальный уровень также отвечает за обнаружение ошибок — в конце кадра добавляется контрольная сумма (FCS, Frame Check Sequence). Если получатель вычисляет сумму и она не совпадает — кадр отбрасывается.
Сетевой уровень — это уровень маршрутизации и глобальной адресации. Здесь появляются IP-адреса и маршрутизаторы. Задача этого уровня — доставить пакет от исходного узла к конечному, возможно через десятки промежуточных роутеров и сети разных типов.
Главный протокол этого уровня — IP (Internet Protocol). Он определяет:
IP — это протокол без установления соединения и без гарантии доставки. Он не проверяет, дошёл ли пакет. Не следит за порядком. Не повторяет потерянные пакеты. Это называется «best effort» — «максимальное усилие». Гарантии обеспечивает уровень выше — транспортный.
Кроме IP, на сетевом уровне работают:
ping, используется ICMP. Если роутер не может доставить пакет, он отправляет ICMP-сообщение об ошибке.Транспортный уровень — это уровень надёжности и доставки до конкретного приложения. Если сетевой уровень отвечает на вопрос «как доставить пакет до нужного устройства», то транспортный — «как доставить данные до нужной программы на этом устройстве и убедиться, что всё дошло целым и в правильном порядке».
Здесь работают два главных протокола:
TCP (Transmission Control Protocol) — протокол с установлением соединения и гарантированной доставкой. Перед передачей данных отправитель и получатель «договариваются» — выполняют так называемое тройное рукопожатие (three-way handshake):
После этого начинается передача данных. TCP:
TCP используется там, где важна целостность данных: веб-страницы (HTTP), электронная почта, передача файлов. Если потеряется кусок картинки, она не отобразится — поэтому нужен TCP.
UDP (User Datagram Protocol) — протокол без установления соединения и без гарантий. UDP просто отправляет данные и не проверяет, дошли ли они. Зато UDP:
UDP используется там, где скорость важнее надёжности: стриминг видео и аудио (немного потеряли — и ладно, лучше чуть хуже качество, чем пауза), онлайн-игры, DNS-запросы, видеоконференции. Если при видеозвонке потеряется пара пакетов, вы увидите лёгкое «кваканье» — это приемлемо. А вот если ради скорости не досчитаться кусков файла с банковской выпиской — это катастрофа.
Сеансовый уровень отвечает за установление, поддержание и завершение сеанса связи между приложениями. Сеанс — это логическое соединение, которое существует в течение всего взаимодействия — например, от момента входа в онлайн-банк до выхода.
Функции уровня:
На практике в современном интернете сеансовый уровень как самостоятельный слой почти не используется — его функции обычно встроены в протоколы прикладного уровня или транспортного. Но в модели 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 | Физический | Передача сигналов | Кабели, оптика, радио | Бит |
Проследим путь веб-запроса от вашего браузера до сервера и обратно:
GET /index.html HTTP/1.1.На стороне получателя — всё в обратном порядке: биты → кадр → пакет → сегмент → расшифровка → HTTP-запрос доходит до веб-сервера. Сервер обрабатывает запрос и отправляет ответ тем же путём в обратную сторону.
Модель 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, а два нижних (канальный и физический) — в уровень сетевого доступа.
| Параметр | Модель OSI | Стек TCP/IP |
|---|---|---|
| Происхождение | Теоретическая модель, ISO, 1984 | Практическая разработка, DARPA, 1970-е |
| Количество уровней | 7 | 4 |
| Назначение | Концептуальный каркас, обучение | Реальная реализация интернета |
| Уровень представления и сеансовый | Выделены отдельно | Объединены в прикладной уровень |
| Гибкость | Строгая модель | Прагматичный, развивается по мере надобности |
Модель OSI удобна для обучения и проектирования: на ней легко объяснить, за что отвечает каждый слой. Стек TCP/IP удобен для работы: именно по нему построен весь интернет, и все реальные протоколы разработаны в его рамках.
Теперь разберём ключевые протоколы интернета детально — как они устроены, зачем нужны и как работают.
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 (не маршрутизируются в интернете, используются в локальных сетях):
10.0.0.0 — 10.255.255.255172.16.0.0 — 172.31.255.255192.168.0.0 — 192.168.255.255Если ваш домашний роутер выдаёт вам адрес вида 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 — это протокол, который делает интернет надёжным. Он берёт ненадёжный 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 — это антипод TCP. Если TCP — это заказная почта с уведомлением о вручении, то UDP — это обычная почта: отправил и забыл.
UDP добавляет к данным только четыре поля: порт отправителя, порт получателя, длину и контрольную сумму. Всё. Ни нумерации, ни подтверждений, ни ретрансляции, ни управления потоком.
Когда используется UDP:
Структура UDP-датаграммы:
| Поле | Размер | Назначение |
|---|---|---|
| Порт отправителя | 16 бит | Порт источника (может быть 0) |
| Порт получателя | 16 бит | Порт назначения |
| Длина | 16 бит | Длина датаграммы (заголовок + данные) |
| Контрольная сумма | 16 бит | Проверка целостности (может быть 0 — отключена) |
| Данные | переменно | Полезная нагрузка |
Заголовок UDP — всего 8 байт. Заголовок TCP — минимум 20 байт. Разница кажется небольшой, но при миллионах пакетов в секунду она становится существенной.
HTTP — это протокол прикладного уровня, по которому браузер получает веб-страницы. Это то, с чем вы взаимодействуете каждый раз, когда открываете сайт.
HTTP — это протокол «запрос-ответ» (request-response). Клиент (браузер) отправляет запрос, сервер возвращает ответ. Каждый запрос и ответ состоит из:
GET /article HTTP/1.1.Методы 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 — это телефонная книга интернета. Без DNS вам пришлось бы вводить 77.88.55.55 вместо yandex.ru.
DNS работает по UDP на порту 53 (реже TCP, для больших ответов и передачи зон). Процесс разрешения имени выглядит так:
yandex.ru?»8.8.8.8 от Google или 1.1.1.1 от Cloudflare)..ru?».ru..ru: «Где yandex.ru?»yandex.ru.yandex.ru: «Какой IP у www.yandex.ru?»Кеширование — ключевая особенность DNS. Каждый уровень кеширует ответы на определённое время (TTL — Time to Live). Это снижает нагрузку на серверы и ускоряет повторные запросы.
Типы DNS-записей:
| Тип | Что означает |
|---|---|
| A | IPv4-адрес домена |
| AAAA | IPv6-адрес домена |
| CNAME | Алиас — указание на другое имя |
| MX | Почтовый сервер для домена |
| TXT | Произвольный текст (для верификации, SPF и др.) |
| NS | Серверы имён домена |
| SOA | Начальная запись зоны с параметрами |
TLS — это протокол шифрования, который защищает данные при передаче. Когда вы видите значок замка в браузере и адрес начинается с https, — это значит, что данные идут через TLS.
Что обеспечивает TLS:
Как работает TLS (упрощённо):
Почему сначала асимметричное, потом симметричное? Асимметричное шифрование (публичный/приватный ключ) медленное, но позволяет безопасно обменяться ключами. Симметричное (один ключ для шифрования и расшифрования) — быстрое, и именно им шифруется весь трафик.
TLS раньше назывался SSL (Secure Sockets Layer) — это предшественник TLS. Версии SSL 2.0 и 3.0 считаются небезопасными и не используются. Текущие версии TLS — 1.2 и 1.3. TLS 1.3 (2018) упростил и ускорил рукопожатие — теперь достаточно одного обмена сообщениями вместо двух.
DHCP — это протокол, который автоматически выдаёт устройствам IP-адреса и другие сетевые настройки. Когда вы подключаетесь к Wi-Fi и у вас «всё работает» — это DHCP настроил ваш IP-адрес, маску, шлюз и DNS.
Как работает DHCP:
Адрес выдаётся в аренду (lease) на определённое время. Если устройство продолжает работать, оно продлевает аренду. Если исчезло — адрес возвращается в пул и выдаётся другому.
ICMP — это протокол диагностики и уведомлений об ошибках. Он не передаёт пользовательские данные, но помогает сетевому оборудованию и администраторам понимать, что происходит.
Примеры ICMP-сообщений:
ping. Вы отправляете Echo Request, устройство назначения отвечает Echo Reply. Так проверяется доступность и время отклика.traceroute — она отправляет пакеты с увеличивающимся TTL и по ответам «Time Exceeded» от промежуточных роутеров строит маршрут.Чтобы собрать всё воедино, рассмотрим конкретный пример — что происходит, когда вы открываете сайт 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 — позволяет понять, что именно происходит, когда вы открываете сайт, отправляете письмо или смотрите видео.
Хорошая новость в том, что всё это устроено логично и последовательно. Каждый протокол решает свою конкретную задачу, и их взаимодействие — это не магия, а инженерия. Сеть, в которой вы сейчас читаете эту статью, — результат пятидесяти лет развития идей, стандартизации и кропотливой работы тысяч инженеров по всему миру.