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

Что такое TCP/IP
Стек TCP/IP — это набор сетевых протоколов, который определяет процесс передачи данных в интернете от источника к получателю. Стек включает в себя множество протоколов, но два основных из них:
Transmission Control Protocol (TCP) обеспечивает надежную передачу информации от отправителя к получателю, а также контролирует поток передаваемых данных: предотвращает перегрузку сети, разбивая информацию на пакеты и контролируя ее путь до получателя.
Internet Protocol (IP) отвечает за маршрутизацию пакетов данных, а также обеспечивает их логическую адресацию.
Протоколы работают совместно: IP прокладывает маршрут, а TCP следит за корректностью отправки. И если вдруг из-за какой-то ошибки пакет с информацией не доходит до пользователя или теряется, то TCP восстанавливает данные.
Говоря конкретнее, протоколы стека TCP/IP нужны, чтобы:
Обеспечивать связь между сетевыми устройствами для обмена информацией.
Гарантировать надежную и упорядоченную доставку данных.
Маршрутизировать и адресовать данные с помощью IP-протокола, который отвечает за присвоение уникальных адресов устройствам в интернете. Именно Internet Protocol в ответе за прокладывание маршрутов, по которым пакеты данных уходят от отправителя к получателю через роутеры и сложные сети.
Поддерживать работу электронной почты или видео за счет использования протоколов верхних уровней, работающих поверх TCP/IP, например, SMTP, POP3, RTSP и другие.
Принцип работы и уровни TCP/IP
В рамках TCP/IP различают два типа сокетов — TCP (потоковые) и UDP (датаграммные). Они работают как конечные точки двунаправленной связи между двумя программами, гарантируя отправку и получение данных по сети:
TCP используется для более упорядоченной и гарантированно корректной отправки данных. Он проверяет, что все файлы дошли до получателя и выясняет, не появилась ли ошибка при отправке информации. А еще управляет загрузкой сети и может заново затребовать данные, если они потерялись.
UDP применяется тогда, когда нужно отправить данные быстро: порой вразнобой и без проверки готовности получателя к приему файлов.
Работает стек TCP/IP в пять этапов — их и проходят данные, чтобы дойти до пользователя:
Этап 1. Пользователь вводит нужный адрес в адресную строку браузера, — например, https://cloud.ru/ — и нажимает Enter.
Этап 2. Браузер создает HTTP-запрос и направляет его на целевой сервер, адрес которого определяет с помощью протокола DNS.
Этап 3. Протокол IP обрабатывает данные и направляет их по сети к назначенному адресату.
Этап 4. Протокол TCP гарантирует надежную передачу данных, обработанных IP-протоколом, и переупорядочивает при получении.
Этап 5. Браузер получает пакеты, объединяет их и выводит искомую страницу на экран пользователя.
Стоит отметить, что стек TCP/IP часто сравнивают с OSI — базовой моделью процесса передачи данных в интернете, которая состоит из семи уровней. Он действительно очень на нее похож, но фокусируется на практической реализации сетевых функций, в то время как OSI служит более общим руководством к структурированию и стандартизации сетевых протоколов и взаимодействий.
На каждом уровне стека TCP/IP есть протоколы, которые регулируют перемещение информации по сети:
на межсетевом уровне IP и ARP-протоколы гарантируют инкапсуляцию и декапсуляцию данных;
на транспортном уровне протоколы TCP и UDP отвечают за предоставление передачу информации по сети: TCP — за медленную и упорядоченную, UDP — за более быструю, но не такую надежную;
на прикладном уровне HTTP и DNS отвечают за обмен сообщениями и передачу информации.
Давайте рассмотрим каждый из вышеупомянутых протоколов подробнее.

Advanced Domain Name Service — система управления доменными именами в рамках VPC
Упростите доступ к ресурсам и гарантируйте их высокую производительность
Протоколы стека TCP/IP
Каждый из протоколов в стеке — важный «винтик» в сложном механизме передачи данных. Именно благодаря им компьютеры, ноутбуки и роутеры понимают друг друга, а веб-приложения и сервисы обмениваются информацией быстро и без проблем.
IP-протокол позволяет устройствам обмениваться данными в интернете
Internet Protocol передает данные между девайсами в виде IP-датаграмм — их еще называют IP-пакетами — которые содержат заголовки с IP-адресами и саму информацию для отправки.

Используется протокол IP для решения разного рода важных задач, в числе которых:
создание публичных IP-адресов, чтобы у балансировщика нагрузки или виртуальной машины (ВМ) был доступ в интернет;
создание SNAT-шлюзов, чтобы у ВМ и балансировщика нагрузки был доступ к ресурсам и они обменивались трафиком в интернете;
назначение публичных IP-адресов на интерфейсы ВМ и SNAT-шлюзы.
DNS-протокол связывает адреса в интернете и локальных сетях
Протокол DNS связывает между собой название сайта — его доменное имя — и IP-адрес. За этот процесс отвечают три составляющие протокола DNS: резолверы, DNS-пакеты и зоны:
Резолверы — посредники между пользователем и сетью серверов в системе доменных имен. Они получают URL сайта, на который нужно перейти, и ищут его IP-адрес в базе данных. Если адрес есть, то резолвер передает его на устройство пользователя, а если нет, то связывается с DNS-серверами, которые передают ему адрес из своего адресного пула.
DNS-пакеты нужны для отправки запросов и ответов между программами, резолверами и серверами для определения IP-адреса узла в системе DNS. Они содержат идентификатор запроса, закодированное доменное имя, вид и класс запроса, а также ответы, серверы и дополнительные данные.

Зоны организуют иерархическую структуру системы доменных имен и хранят хранят информацию о том, как доменные имена соответствуют IP-адресам.
ARP определяет адреса
Address Resolution Protocol, или протокол определения адреса в локальной сети, нужен, чтобы находить MAC-адрес компьютера по имеющемуся IP-адресу. Он гарантирует необходимую связку между абстрактной схемой адресации IP и физической адресацией, используемой сетевыми устройствами в работе TCP/IP-сетей. Буферная память протокола содержит пары IP-адресов и MAC-адресов, чтобы снижать количество отправленных запросов и экономить трафик.

ARP умеет:
Разрешать адреса. То есть определять физические (MAC) адреса устройств по их IP-адресам для корректной передачи информации.
Кешировать данные. Проще говоря, ускорять процесс передачи информации между девайсами.
Находить конфликты. Например, обнаруживать и решать ситуации, в которых компьютеры используют один IP-адрес.
Помимо определения адреса в локальной сети, для диагностики сетевых проблем и мониторинга протокол применяет специальные аналитические устройства — ARP-снифферы или ARP-сканеры, которые находят аномалии и следят за трафиком.
ICMP управляет сообщениями
Internet Control Message Protocol, или протокол управляющих сообщений, нужен, чтобы оповещать системы об ошибках в ходе передачи информации. Говоря детальнее, он помогает в решении следующих задач:
Контроль за потоком информации. Протокол задействует сообщения «Source Quench» для замедления трафика от источника при росте нагрузки.
Диагностика сети. Для проверки сети ICMP использует команды ping и traceroute, которые помогают сетевым администраторам проверять соединение, а также следить за маршрутами пакетов с информацией.
Уведомления об ошибках. Сообщения ICMP предупреждают об ошибках в сетевом взаимодействии — например, сообщение «Destination Unreachable» используется, если у роутера не получается отправить пакет обратно на хост-источник.

TCP контролирует передачу данных
Transmission Control Protocol, или протокол управления передачей данных, контролирует обмен информацией между устройствами с помощью процесса «трехстороннего рукопожатия» (TCP three way/triple handshake). Он нужен, чтобы данные, передающиеся с компьютера на компьютер, не потерялись.

Помимо трехстороннего рукопожатия, в TCP есть специальные флаги и опции управления соединениями. Флаги нужны, чтобы управлять состоянием соединения и контролировать передачу данных:
SYN (Synchronize) применяется, чтобы устанавливать соединение между двумя хостами. Он отправляется в начале процесса «трехстороннего рукопожатия».
ACK (Acknowledgment) подтверждает получение информации. У данных транспортного уровня в протоколе TCP должен быть этот флаг для подтверждения получения предыдущих пакетов.
FIN (Final) указывает на завершение соединения. Хост передает FIN, чтобы сообщить о намерении больше не отправлять данные.
RST (Reset) прерывает соединение, если появилась ошибка, и очищает буфер обмена.
PSH (Push) просит получателя отправить информацию, которая накопилась в приемном буфере приложения, дальше.
URG (Urgent) показывает высокий приоритет данных и указывает на их обработку.
Опции в заголовке TCP помогают сделать передачу данных еще более эффективной. Например:
MSS (Maximum Segment Size) предоставляет максимальный размер сегмента принятой информации.
Window Scale Option расширяет размер окна, чтобы поддерживать пропускной канал.
Selective Acknowledgment (SACK) сообщает получателю, какие непоследовательные фрагменты до него дошли, позволяя отправителю повторно пересылать только недостающие фрагменты данных.
Timestamp Option засекает время прохождения сегментов, и улучшает производительность.
UDP отправляет сообщения с устройства на устройство
User Datagram Protocol, или протокол пользовательских датаграмм (сообщений), позволяет веб-приложениям и сервисам пересылать сообщения другим компьютерным приложениям по IP-сети на высокой скорости. Быстрая передача датаграмм осуществляется за счет того, что UDP не оповещают об установке каналов передачи или путей данных, а сразу отправляет пакеты с данными на устройство получателя.

DHCP получает нужную конфигурацию с DHCP-сервера
Dynamic Host Configuration Protocol, или протокол динамической настройки узла, обеспечивает автоматическое получение IP-адреса и других необходимых параметров сетевой конфигурации сетевыми устройствами. Этот процесс — DORA — включает четыре шага: поиск (discovery), предложение (offer), запрос (request) и подтверждение (acknowledgment).

Поиск (Discovery). Устройство отправляет широковещательный запрос в сеть с целью найти DHCP-сервер.
Offer (Предложение). DHCP-сервер отвечает на запрос, предлагая конфигурацию, которая включает в себя IP-адрес или другую информацию, такую как маска подсети, адрес шлюза и адреса DNS-серверов.
Request (Запрос). Устройство выбирает предложенную конфигурацию и отправляет запрос обратно на DHCP-сервер для подтверждения этих настроек.
Acknowledgment (Подтверждение). DHCP-сервер подтверждает запрос и официально назначает устройству IP-адрес.
Этот 4-этапный процесс гарантирует динамическое распределение IP-адресов и других сетевых параметров, делая сетевую конфигурацию гибкой и масштабируемой.
Резюме
Совместная работа протоколов стека TCP/IP обеспечивает возможность обмена данными между устройствами в сети. Знание каждого из них помогает ускорять этот процесс и повышать его эффективность для обеспечения бесперебойной работы веб-приложений и сервисов в сети.