Протокол TCP/IP: Что это и как работает стек протоколов
Статья
Время чтения
8 минут
Переписка в мессенджерах, обмен email-сообщениями, просмотр видео и чтение новостей в лентах пабликов — всеми этими процессами заведует стек протоколов TCP/IP. Как эти протоколы работают, за что отвечает каждый из них и зачем они используются в облаке, разбираемся в этой статье.
Что такое стек протоколов TCP/IP и какую роль он играет в компьютерных сетях
Стек TCP/IP — это модель, которая описывает алгоритм отправки данных от источника информации к пользователю. В стеке есть два протокола:
Transmission Control Protocol (TCP) отслеживает обмен данными и управляет передачей информации, контролируя ее путь до получателя.
Internet Protocol (IP) следит за адресами и связывает телефоны, компьютеры, роутеры и другие устройства между собой, чтобы данные всегда достигали своего получателя. Для этого протокол выделяет IP-адреса, формирует маршруты доставки пакетов и организует пакетную передачу данных.
Протоколы работают совместно: IP прокладывает маршрут, а TCP следит за корректностью отправки. И если вдруг из-за какой-то ошибки пакет с информацией не доходит до пользователя или теряется, то TCP восстанавливает данные.
В основе работы протоколов стека TCP/IP лежит сетевая модель передачи данных: согласно ей информация как раз и передается от устройства к устройству. Говоря подробнее, в этом стеке она используется, чтобы:
Обеспечивать связь между компьютерами для обмена информацией.
Маршрутизировать и адресовать данные с помощью IP-протокола, который отвечает за присвоение уникальных адресов устройствам в интернете. Именно Internet Protocol в ответе за прокладывание маршрутов, по которым пакеты данных уходят от отправителя к получателю через роутеры и сложные сети.
Пересылать информацию на транспортном уровне протокола TCP, где проверяется доставка данных, контролируется порядок пакетов и восстанавливается потерянная информация при появлении ошибок.
Поддерживать работу электронной почты или видео.
Обеспечивать масштабируемость и гибкость сети, интеграцию новых технологий.
Принцип работы и уровни TCP/IP
В рамках TCP/IP различают два типа сокетов — TCP (потоковые) и UDP (датаграммные). Они работают как конечные точки двунаправленной связи между двумя программами, гарантируя отправку и получение данных по сети:
TCP используется для более упорядоченной и гарантированно корректной отправки данных. Он проверяет, что все файлы дошли до получателя и выясняет, не появилась ли ошибка при отправке информации. А еще управляет загрузкой сети и может заново затребовать данные, если они потерялись.
UDP применяется тогда, когда нужно отправить данные быстро: порой вразнобой и без проверки готовности получателя к приему файлов.
Работает стек TCP/IP в пять этапов — их и проходят данные, чтобы дойти до пользователя:
Этап 1. Пользователь вводит нужный адрес в адресную строку браузера, — например, https://cloud.ru/ — и нажимает Enter.
Этап 2. Браузер создает HTTP-запрос и направляет его на сервер интернет-провайдера с запрашиваемой страницей.
Этап 3. Протокол IP, используя DNS-системы, находит сервер и делит страницу на пакеты с данными.
Этап 4. Протокол TCP создает безопасное соединение между устройством, с которого пользователь собирается просматривать страницу, и сервером. После чего следит, чтобы пакеты с данными дошли до получателя без проблем.
Этап 5. Браузер получает пакеты, объединяет их и выводит искомую страницу на экран пользователя.
Стоит отметить, что стек TCP/IP часто сравнивают с OSI — базовой моделью процесса передачи данных в интернете, которая состоит из семи уровней. Он действительно очень на нее похож, но значительно упрощен для облегчения понимания и анализа сетевых процессов.
На каждом уровне стека TCP/IP есть протоколы, которые регулируют перемещение информации по сети:
на канальном уровне протокол Ethernet контролирует канальное и физическое взаимодействие с сетью, передавая данные между устройствами;
на межсетевом уровне IP и ARP-протоколы гарантируют инкапсуляцию и декапсуляцию данных;
на транспортном уровне протоколы TCP и UDP отвечают за предоставление информации без ошибок;
на прикладном уровне HTTP, THCP и DNS отвечают за обмен сообщениями и передачу информации.
Давайте рассмотрим каждый из вышеупомянутых протоколов подробнее.
Семь протоколов стека TCP/IP
Каждый из протоколов в стеке — важный «винтик» в сложном механизме передачи данных. Именно благодаря им компьютеры, ноутбуки и роутеры понимают друг друга, а веб-приложения и сервисы обмениваются информацией быстро и без проблем.
IP-протокол позволяет устройствам обмениваться данными в интернете
Internet Protocol передает данные между девайсами в виде IP-датаграмм — их еще называют IP-пакетами — которые содержат заголовки с IP-адресами и саму информацию для отправки.
Используется протокол IP для решения разного рода важных задач, в числе которых:
создание публичных IP-адресов, чтобы у балансировщика нагрузки или виртуальной машины (ВМ) был доступ в интернет;
создание SNAT-шлюзов, чтобы у ВМ и балансировщика нагрузки был доступ к ресурсам и они обменивались трафиком в интернете;
назначение публичных IP-адресов на интерфейсы ВМ и SNAT-шлюзы.
DNS-протокол связывает адреса в интернете и локальной сети
Протокол DNS связывает между собой название сайта — его доменное имя — и IP-адрес. За этот процесс отвечают три составляющие протокола DNS: резолверы, DNS-пакеты и зоны:
Резолверы — посредники между пользователем и сетью серверов в системе доменных имен. Они получают URL сайта, на который нужно перейти, и ищут его IP-адрес в своей базе данных. Если адрес есть, то резолвер передает его на устройство пользователя, а если нет, то связывается с DNS-серверами, которые передают ему адрес из своего адресного пула.
DNS-пакеты (их еще называют сниферами) нужны для отправки запросов и ответов между программами, резолверами и серверами для определения IP-адреса узла в системе DNS. Они содержат идентификатор запроса, закодированное доменное имя, вид и класс запроса, а также ответы, серверы и дополнительные данные.
Зоны контролируют авторитетные серверы имен, а также делят их на публичные и внутренние. В публичных зонах все доменные имена видимы в интернете, а во внутренних — доступны только для использования в сетях виртуального частного облака (VPC).
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-адреса и других параметров, которые нужны для работы в стеке TCP/IP. Этот протокол получает нужную конфигурацию в четыре шага: поиск (discovery), предложение (offer), запрос (request) и подтверждение (acknowledgment).
Резюме
Совместная работа протоколов стека TCP/IP обеспечивает возможность обмена данными между устройствами в сети. Знание каждого из них помогает ускорять этот процесс и повышать его эффективность для обеспечения бесперебойной работы веб-приложений и сервисов в сети.