Лев Корольков
Руководитель IT-департамента EFSOL Oblako
Время чтения: 18 мин

TCP/IP

Стек сетевых протоколов

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

Название TCP/IP происходит от двух ключевых протоколов: TCP, или Transmission Control Protocol, и IP, или Internet Protocol. Однако стек TCP/IP включает намного больше технологий: UDP, ICMP, DNS, HTTP, DHCP и другие протоколы, работающие на разных уровнях сетевого взаимодействия.

IP отвечает прежде всего за адресацию и доставку пакетов между сетями, а TCP обеспечивает надежную передачу потока данных между приложениями.

Что такое TCP/IP простыми словами

TCP/IP можно представить как набор правил, по которым устройства находят друг друга и обмениваются данными.

Например, пользователь открывает сайт. DNS определяет IP-адрес сервера, IP помогает доставлять пакеты между сетями, TCP создает надежное соединение, а HTTP или HTTPS передает запросы и ответы веб-приложения.

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

Зачем нужен TCP/IP

Без общих сетевых протоколов компьютеры разных производителей и операционных систем не могли бы предсказуемо взаимодействовать друг с другом.

TCP/IP задает универсальные правила передачи данных и позволяет объединять миллионы независимых сетей в единую глобальную инфраструктуру.

  • адресация устройств;
  • маршрутизация пакетов;
  • передача данных между приложениями;
  • надежные соединения;
  • работа веб-сайтов и API;
  • электронная почта;
  • VPN и удаленный доступ;
  • облачная инфраструктура;
  • микросервисы;
  • корпоративные сети.

Модель TCP/IP

Для объяснения сетевого взаимодействия стек TCP/IP обычно делят на несколько уровней.

УровеньПримерыНазначение
ПрикладнойHTTP, DNS, SMTPВзаимодействие приложений
ТранспортныйTCP, UDPПередача данных между процессами
Интернет-уровеньIPv4, IPv6, ICMPАдресация и маршрутизация
Сетевой доступEthernet, Wi-FiПередача данных в локальной среде

Прикладной уровень TCP/IP

На прикладном уровне работают протоколы, с которыми непосредственно взаимодействуют программы.

Например, браузер использует HTTP или HTTPS, почтовый сервер — SMTP, а приложение получает IP-адрес домена через DNS.

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

HTTP и TCP/IP

Когда браузер открывает веб-сайт, HTTP-запрос передается через транспортный и сетевой уровни.

HTTP
↓
TCP
↓
IP
↓
Ethernet или Wi-Fi

На принимающей стороне процесс идет в обратном направлении.

DNS и TCP/IP

DNS преобразует удобное человеку доменное имя в IP-адрес.

Например:

example.com → 203.0.113.10

После получения IP клиент может отправлять пакеты серверу через TCP/IP.

Транспортный уровень

Транспортный уровень обеспечивает взаимодействие между конкретными приложениями на разных устройствах.

Основные протоколы этого уровня — TCP и UDP.

Они используют Ports, чтобы определить, какому процессу или сетевому сервису предназначены данные.

Что такое TCP

TCP, или Transmission Control Protocol, — транспортный протокол, ориентированный на надежную передачу последовательного потока данных.

Он устанавливает соединение между двумя сторонами, контролирует доставку сегментов, порядок данных и повторную передачу потерянной информации.

TCP используется для HTTP, HTTPS, SSH, многих Database Connections и других протоколов, где потеря части данных недопустима.

Что такое UDP

UDP, или User Datagram Protocol, — более простой транспортный протокол.

Он отправляет Datagrams без создания полноценного надежного соединения и не гарантирует, что каждый пакет обязательно придет или сохранит порядок.

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

TCP и UDP

TCPUDP
Устанавливает соединениеНе требует полноценного соединения
Контролирует доставкуНе гарантирует доставку
Сохраняет порядок потокаDatagrams могут прийти в другом порядке
Есть RetransmissionПовторы должен обеспечивать другой уровень при необходимости
Больше служебной логикиМеньше накладных расходов

Как TCP устанавливает соединение

Перед передачей данных TCP выполняет процедуру установления соединения, известную как Three-way Handshake.

Упрощенно:

Client → SYN → Server
Client ← SYN-ACK ← Server
Client → ACK → Server

После этого стороны могут передавать данные.

Зачем нужен Three-way Handshake

Handshake подтверждает, что обе стороны готовы к взаимодействию, и помогает согласовать параметры TCP-соединения.

Если Server недоступен или Firewall блокирует порт, соединение не будет нормально установлено.

TCP Segment

TCP делит поток данных на части, которые передаются через IP.

Каждая часть содержит служебную информацию, включая Sequence Number и Ports.

На стороне получателя TCP собирает данные обратно в правильной последовательности.

Sequence Number

Sequence Number позволяет TCP понимать порядок частей передаваемого потока.

Если сегменты пришли не по порядку, получатель может правильно собрать исходные данные.

Acknowledgement в TCP

Получатель подтверждает прием данных.

Если ожидаемое подтверждение не приходит, TCP может повторно передать соответствующий участок.

Так создается надежный поток поверх IP, который сам по себе не гарантирует доставку каждого пакета.

Retransmission

Retransmission — повторная передача потерянных TCP-сегментов.

Потери могут происходить из-за перегрузки, нестабильного Wi-Fi, проблем маршрутизации или других сетевых причин.

TCP автоматически пытается компенсировать часть таких проблем.

Flow Control

Flow Control не позволяет отправителю передавать данные значительно быстрее, чем получатель способен их принимать.

Для этого TCP использует механизм окна.

Так быстрый Server не должен бесконтрольно переполнять буферы более медленного клиента.

Congestion Control

TCP также учитывает перегрузку сети.

Если сеть начинает терять пакеты или демонстрировать другие признаки перегрузки, скорость передачи может корректироваться.

Конкретные алгоритмы зависят от реализации TCP Stack.

TCP Connection

Соединение определяется сочетанием сетевых адресов, портов и транспортного протокола.

Например, один Web Server может одновременно обслуживать тысячи TCP Connections на Port 443.

Что такое Port

Port — числовой идентификатор сетевого сервиса или процесса на устройстве.

IP Address определяет устройство, а Port помогает определить конкретное приложение.

203.0.113.10:443

Здесь IP определяет Server, а 443 — HTTPS Service.

Примеры портов

PortТипичный протокол
22SSH
53DNS
80HTTP
443HTTPS

Фактическое назначение порта определяется тем, какое приложение его слушает.

Client Port

Клиентское приложение обычно использует временный исходящий Port.

Например, браузер может установить соединение:

192.168.1.25:53124 → 203.0.113.10:443

Так операционная система различает множество одновременных соединений.

IP в TCP/IP

Internet Protocol отвечает за сетевую адресацию и маршрутизацию пакетов.

IP не знает, что именно находится внутри данных: веб-запрос, SQL-соединение или файл.

Его задача — доставить пакет к нужному сетевому адресу по доступному маршруту.

IPv4 в TCP/IP

IPv4 использует 32-битные адреса.

192.168.1.10

Он по-прежнему широко используется в интернете и локальных сетях.

IPv6 в TCP/IP

IPv6 использует 128-битные адреса.

2001:db8::10

Он значительно расширяет адресное пространство и постепенно внедряется параллельно с IPv4.

TCP поверх IPv4 и IPv6

TCP может работать как поверх IPv4, так и поверх IPv6.

Для самого приложения логика надежного TCP-соединения остается похожей, хотя сетевые адреса и некоторые особенности IP-уровня различаются.

IP-пакет

IP передает данные в Packets.

Header содержит Source и Destination Addresses, а Payload может включать TCP Segment, UDP Datagram или данные другого протокола.

IP Header
TCP Header
Application Data

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

Encapsulation означает последовательное добавление служебной информации на каждом сетевом уровне.

Например, HTTP Data передается TCP, TCP Segment помещается в IP Packet, а IP Packet — в Ethernet Frame.

HTTP Data
↓
TCP Segment
↓
IP Packet
↓
Ethernet Frame

Декапсуляция

На принимающем устройстве происходит обратный процесс.

Сетевой интерфейс получает Frame, IP обрабатывает Packet, TCP собирает поток, а приложение получает HTTP Data.

Ethernet и TCP/IP

Ethernet работает на более низком уровне и обеспечивает передачу Frames внутри локальной сети.

TCP/IP может работать поверх Ethernet, Wi-Fi и других технологий передачи данных.

Таким образом, TCP/IP не привязан исключительно к одному типу физической сети.

MAC-адрес

В Ethernet-сегменте используются MAC Addresses.

IP отвечает за логическую адресацию между сетями, а MAC — за передачу Frame внутри конкретного Layer 2 сегмента.

ARP

В IPv4-сетях ARP помогает определить MAC Address устройства по его IP Address внутри локального сегмента.

Например, компьютер хочет отправить пакет Default Gateway 192.168.1.1 и должен узнать MAC Address интерфейса Router.

NDP в IPv6

IPv6 использует Neighbor Discovery вместо отдельного ARP.

NDP выполняет несколько функций, включая обнаружение соседних узлов и Router.

Routing

Routing определяет путь IP Packet между сетями.

Router анализирует Destination IP и выбирает Next Hop по Routing Table.

Пакет может пройти через множество независимых маршрутизаторов до конечного сервера.

Default Gateway

Если Destination находится за пределами локальной сети, устройство обычно отправляет пакет Default Gateway.

Client: 192.168.1.25
Gateway: 192.168.1.1

Router затем решает, куда передать пакет дальше.

Routing Table

Таблица маршрутизации содержит правила для разных сетевых Prefix.

10.0.0.0/8 → internal gateway
192.168.1.0/24 → local
0.0.0.0/0 → internet gateway

Маршрутизатор выбирает наиболее подходящий маршрут для Destination.

CIDR и TCP/IP

CIDR используется для обозначения сетевых диапазонов.

Например:

192.168.1.0/24
10.20.0.0/16

Такие Prefix применяются в Routing, Firewall, VPN и облачных сетях.

ICMP

ICMP — служебный протокол интернет-уровня.

Он используется для передачи диагностических сообщений и информации об ошибках сетевой доставки.

С ICMP связана известная утилита ping.

Ping

Ping проверяет достижимость удаленного IP-узла через ICMP.

ping 192.168.1.1

Он помогает понять, существует ли базовая сетевой связность и какова приблизительная Round-trip Time.

Однако Firewall может блокировать ICMP, поэтому неответивший Ping не всегда означает недоступность TCP-сервиса.

Traceroute

Traceroute помогает увидеть промежуточные сетевые переходы до Destination.

Инструмент полезен для поиска проблем Routing и высокой Latency на определенном участке пути.

TCP/IP и NAT

NAT изменяет IP Addresses при прохождении трафика через Router или Firewall.

В IPv4 он широко используется для доступа множества Private Hosts в интернет через ограниченное количество Public Addresses.

192.168.1.25:53124
↓ NAT
203.0.113.50:62001
↓
Internet

NAT и TCP Ports

При Port Address Translation Gateway отслеживает одновременно IP и Port.

Это позволяет нескольким внутренним устройствам использовать один Public IPv4 для тысяч TCP Connections.

Firewall и TCP/IP

Firewall анализирует сетевой трафик и разрешает или блокирует его по правилам.

Правило может учитывать:

  • Source IP;
  • Destination IP;
  • TCP или UDP;
  • Source Port;
  • Destination Port;
  • состояние Connection.

Stateful Firewall

Stateful Firewall отслеживает состояние TCP Connections.

Если клиент инициировал разрешенное исходящее соединение, Firewall понимает, что ответный трафик относится к уже существующей сессии.

TCP/IP и DNS

TCP/IP позволяет передавать данные по IP Addresses, но пользователи обычно работают с Domain Names.

DNS преобразует имя сервиса в адрес.

api.example.com → 203.0.113.20

После этого клиент устанавливает TCP или UDP взаимодействие с полученным IP.

TCP/IP и DHCP

DHCP автоматически предоставляет устройству сетевые параметры.

Обычно клиент получает IP Address, Subnet Mask или Prefix, Default Gateway и DNS Servers.

Без DHCP многие параметры пришлось бы настраивать вручную.

TCP/IP и HTTPS

HTTPS обычно работает поверх TCP и TLS.

HTTP
↓
TLS
↓
TCP
↓
IP

TLS шифрует прикладные данные, TCP обеспечивает надежный поток, а IP занимается маршрутизацией.

TCP/IP и TLS

TLS не заменяет TCP/IP, а работает поверх транспортного соединения.

Он обеспечивает конфиденциальность и проверку целостности данных между приложениями.

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

TCP/IP и SSH

SSH обычно использует TCP и предназначен для защищенного удаленного доступа к серверу.

Клиент устанавливает TCP Connection на SSH Port, после чего протокол выполняет собственную Authentication и Encryption.

TCP/IP и базы данных

Backend обычно подключается к Database через TCP/IP.

Например:

Backend: 10.0.2.15
Database: 10.0.3.20:5432

IP определяет Database Server, а Port — сервис СУБД.

Firewall может разрешить соединение только из Backend Subnet.

Connection Pool и TCP

Создание нового TCP Connection для каждого Database Query было бы дорого.

Поэтому приложения используют Connection Pool и переиспользуют уже установленные соединения.

Это снижает количество Handshakes и накладных расходов.

TCP Keepalive

Keepalive помогает обнаруживать неработающие или зависшие соединения, которые долго не передают прикладные данные.

Он особенно полезен для долгоживущих Database Connections, Proxy и распределенных систем.

Timeout

Сетевые операции должны иметь Timeout.

Если удаленный сервис не отвечает, Backend не должен ждать бесконечно.

Разные Timeout могут использоваться для установления TCP Connection, чтения ответа и других стадий взаимодействия.

TCP/IP и API

REST API обычно работает через HTTP или HTTPS поверх TCP/IP.

Когда Backend вызывает другой API, участвуют сразу несколько уровней: DNS, IP Routing, TCP Connection, TLS и HTTP.

Поэтому ошибка API может на самом деле быть сетевой проблемой на более низком уровне.

TCP/IP и gRPC

gRPC обычно работает через HTTP/2 поверх транспортной сети TCP/IP.

Сервис может иметь долгоживущее соединение и передавать множество запросов через него.

Сетевые Timeout, Load Balancer и Firewall напрямую влияют на надежность такого взаимодействия.

TCP/IP и WebSocket

WebSocket создает долгоживущее двунаправленное соединение между клиентом и сервером.

Оно обычно работает поверх TCP.

Нестабильная сеть или закрытие TCP Connection приводит к разрыву WebSocket, после чего приложение должно реализовать Reconnect при необходимости.

TCP/IP и микросервисы

Microservices взаимодействуют между собой через сеть значительно чаще, чем обычный монолит.

REST, gRPC, Kafka, RabbitMQ и Database Connections в конечном итоге зависят от IP Connectivity и транспортных протоколов.

Поэтому сетевые ошибки становятся важной частью архитектуры распределенных приложений.

Service Discovery

В динамической инфраструктуре адреса сервисов могут постоянно меняться.

Service Discovery позволяет приложению находить актуальный Endpoint по имени или логическому идентификатору.

Это лучше, чем хранить статический IP соседнего сервиса в коде.

Load Balancer

Load Balancer принимает TCP или прикладной трафик и распределяет его между несколькими Backend Servers.

Клиент использует один Endpoint, хотя за ним могут находиться десятки экземпляров.

Reverse Proxy

Reverse Proxy работает перед Backend и принимает клиентские соединения.

Например, Nginx принимает HTTPS Traffic и создает отдельные соединения с внутренними приложениями.

На одном пользовательском запросе могут существовать несколько независимых TCP Connections.

TCP/IP и Docker

Docker создает виртуальные Networks для Containers.

Контейнеры получают IP Addresses и взаимодействуют через TCP/IP так же, как обычные процессы на разных Hosts, хотя часть маршрутизации реализуется виртуальной сетевой инфраструктурой.

Приложения обычно обращаются друг к другу по DNS Name сервиса.

Port Mapping Docker

Чтобы сделать сервис контейнера доступным с Host, используется отображение Ports.

8080 → container:80

Внешний клиент подключается к Host Port 8080, а Docker направляет трафик приложению внутри контейнера.

TCP/IP и Kubernetes

Kubernetes использует сетевую модель, в которой Pods, Services и Nodes взаимодействуют через IP-связность.

Конкретная реализация зависит от CNI Plugin.

Service предоставляет стабильную точку доступа к динамически меняющимся Pods.

Pod IP

Pod получает IP Address, но этот адрес не следует считать постоянным.

После пересоздания Pod может получить другой IP.

Поэтому приложения используют Kubernetes Service и DNS.

TCP/IP и Service Mesh

Service Mesh добавляет более высокоуровневые функции поверх базовой TCP/IP Connectivity: mTLS, Routing, Retry, Metrics и Traffic Policies.

Если между Nodes нет нормальной IP-связности, Service Mesh также работать не сможет.

TCP/IP и облачные сети

Облачная инфраструктура строится вокруг виртуальных сетей, Subnets, Routing Tables, Gateways и Firewall Rules.

Например:

Frontend: 10.0.1.0/24
Backend: 10.0.2.0/24
Database: 10.0.3.0/24

Между сегментами разрешается только необходимый TCP/IP Traffic.

Security Group

Security Group в облаке выполняет роль сетевой политики для виртуального ресурса.

Например, Backend разрешено принимать TCP 443 от Load Balancer, а Database — TCP 5432 только от Backend.

VPN и TCP/IP

VPN создает защищенный Tunnel между устройствами или сетями.

Внутренние IP Packets передаются через защищенное соединение по другой сети.

Так удаленный сотрудник может получить доступ к корпоративному Backend как будто находится во внутренней сети.

TCP поверх VPN

TCP Connection приложения может проходить внутри VPN Tunnel.

При этом дополнительная инкапсуляция увеличивает размер пакета и может влиять на MTU и производительность.

MTU

MTU определяет максимальный размер сетевого Frame или Packet для определенного участка передачи.

Если размер данных не соответствует возможностям пути, могут возникать Fragmentation или другие механизмы адаптации.

Ошибки MTU иногда проявляются как ситуация, когда маленькие запросы работают, а большие зависают.

MSS

MSS, или Maximum Segment Size, связан с максимальным объемом TCP Data в одном сегменте без учета определенных Headers.

Он согласуется при установлении соединения и зависит от сетевой среды.

Latency

Latency — задержка передачи данных между узлами.

Она зависит от расстояния, количества Routers, качества сети, очередей и других факторов.

Высокая Latency особенно заметна для приложений с большим количеством последовательных сетевых запросов.

Round-trip Time

RTT показывает время прохождения данных от клиента до сервера и обратно.

TCP Handshake и некоторые прикладные операции требуют нескольких Round Trips, поэтому географическое расстояние влияет на скорость приложения.

Bandwidth

Bandwidth — пропускная способность канала.

Высокий Bandwidth позволяет передавать большой объем данных в единицу времени, но не обязательно означает низкую Latency.

Канал может быть быстрым по объему, но иметь большую сетевую задержку.

Packet Loss

Packet Loss означает потерю части сетевых пакетов.

TCP пытается компенсировать потерю Retransmission, но частые повторы снижают Throughput и увеличивают Latency.

Для UDP потерянные Datagrams не восстанавливаются самим транспортным протоколом.

Jitter

Jitter — изменение сетевой задержки от пакета к пакету.

Для обычной загрузки веб-страницы небольшие колебания могут быть незаметны, но голос, видео и real-time приложения чувствительны к Jitter значительно сильнее.

TCP/IP и CDN

CDN размещает Edge Servers ближе к пользователям.

Клиент устанавливает TCP/IP Connection с ближайшей подходящей точкой, а не обязательно с Origin Server в другом регионе.

Это уменьшает RTT и ускоряет передачу контента.

TCP/IP и Observability

Для диагностики распределенных приложений важно различать Application Error и Network Error.

Следует отслеживать Connection Errors, TCP Reset, Timeout, DNS Latency и другие сетевые показатели.

Distributed Tracing показывает время внешнего вызова, но для глубокого анализа иногда нужны сетевые метрики.

TCP Reset

TCP Reset означает принудительное завершение соединения одной из сторон или сетевым компонентом.

Причиной может быть закрытый Port, перезапуск сервиса, Firewall, Proxy или ошибка приложения.

Connection Refused

Connection Refused обычно означает, что сетевой узел достижим, но на указанном Port нет ожидающего сервиса или соединение активно отклоняется.

Это отличается от Timeout, когда клиент вообще не получает своевременного ответа.

Connection Timeout

Timeout может быть связан с Routing, Firewall, потерей пакетов или недоступностью удаленной сети.

Различие между Refused и Timeout помогает быстрее локализовать проблему.

Диагностика TCP/IP

При сетевой проблеме полезно проверять уровни последовательно.

  1. Проверить IP Address интерфейса.
  2. Проверить Routing Table.
  3. Проверить Default Gateway.
  4. Проверить DNS.
  5. Проверить достижимость удаленного IP.
  6. Проверить нужный TCP или UDP Port.
  7. Проверить Firewall и NAT.
  8. Проверить приложение на Destination Host.

Команды диагностики

В зависимости от операционной системы используются разные инструменты.

ping example.com
traceroute example.com
ip addr
ip route

В Windows аналогичные задачи решаются через ipconfig, tracert и другие стандартные утилиты.

netstat и ss

Инструменты позволяют посмотреть активные Connections и Listening Ports.

Например, администратор может проверить, действительно ли Backend слушает TCP 8080.

tcpdump

tcpdump используется для захвата и анализа сетевых Packets в Unix-подобных системах.

Он помогает увидеть SYN, ACK, Retransmission, DNS Queries и другие детали работы TCP/IP.

При работе с Production Traffic необходимо учитывать безопасность и возможное наличие чувствительных данных.

Wireshark

Wireshark предоставляет графический анализ сетевых пакетов.

С его помощью можно изучать Handshake, Protocol Headers, Packet Loss и последовательность обмена между приложениями.

TCP/IP и безопасность

Сам факт использования TCP/IP не обеспечивает защиту содержимого.

Дополнительные технологии отвечают за Encryption, Authentication и Authorization.

  • TLS защищает прикладной трафик;
  • Firewall ограничивает сетевые соединения;
  • VPN создает защищенные туннели;
  • Authentication проверяет пользователя или сервис;
  • Network Segmentation уменьшает область доступа.

Почему открытый TCP Port — это риск

Каждый доступный извне Port увеличивает Attack Surface.

Если Database должна быть доступна только Backend, нет причины публиковать ее TCP Port в интернет.

Firewall должен разрешать минимально необходимый набор соединений.

Port Scan

Port Scan проверяет, какие сетевые Ports доступны на узле.

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

Поэтому ненужные Services следует отключать или ограничивать Firewall.

Network Segmentation

Сеть удобно разделять на зоны.

Например, Web, Backend, Database и Management помещаются в разные Subnets.

Firewall разрешает только конкретные TCP/IP потоки между ними.

Zero Trust и TCP/IP

Zero Trust предполагает, что сам факт нахождения устройства во внутренней IP-сети не должен автоматически давать полный доступ.

Сетевые правила дополняются Identity, Authentication и другими политиками.

TCP/IP и Proxy

Proxy принимает соединение клиента и создает собственное соединение к следующему серверу.

Поэтому Source IP, который видит Backend, может принадлежать Proxy, а не реальному клиенту.

Для передачи исходного адреса используются дополнительные механизмы прикладного уровня.

TCP/IP и High Availability

High Availability требует, чтобы клиенты могли продолжить работу после отказа отдельного сервера.

Используются Load Balancers, Virtual IP, DNS Failover и несколько Backend Instances.

Уже установленные TCP Connections при отказе конкретного процесса обычно разрываются, поэтому клиентскому приложению может понадобиться Reconnect или Retry.

Retry и TCP/IP

Если TCP Connection разорван, приложение может повторить операцию.

Но безопасный Retry зависит от бизнес-семантики.

Например, повтор GET обычно проще, чем повтор платежного POST, который должен быть идемпотентным.

TCP/IP и производительность приложения

Медленное приложение не всегда означает медленный Server.

Причиной могут быть DNS, высокий RTT, Packet Loss, повторные TCP Handshakes или большое количество последовательных межсервисных вызовов.

Оптимизация должна учитывать весь сетевой путь.

Connection Reuse

Повторное использование TCP Connection уменьшает количество Handshakes и сетевых Round Trips.

HTTP Keep-Alive, Connection Pools и долгоживущие каналы позволяют снизить накладные расходы.

Практический пример

Компания размещает Web Application в облаке.

Пользователь вводит доменное имя. DNS возвращает Public IP Load Balancer.

Браузер устанавливает TCP Connection на Port 443. Поверх него выполняется TLS, а затем HTTPS Request.

Load Balancer передает запрос Backend Server в Private Subnet.

Backend получает данные из PostgreSQL через отдельное TCP Connection из Connection Pool.

Database доступна только из Backend Subnet благодаря Firewall Rules.

При обращении к внешнему API Backend снова использует DNS, Routing, TCP и TLS.

OpenTelemetry показывает, что основной Request выполняется две секунды. Анализ сети обнаруживает, что 1,5 секунды занимает последовательность внешних вызовов в удаленный регион с высоким RTT.

Команда уменьшает количество сетевых Round Trips и добавляет локальный Cache. Время ответа сокращается без изменения мощности CPU.

Так понимание TCP/IP помогает диагностировать производительность не только сети, но и всего распределенного приложения.

TCP/IP для бизнеса

TCP/IP является фундаментом практически всей цифровой инфраструктуры бизнеса.

От него зависят сайты, ERP, CRM, облачные сервисы, VPN, удаленные рабочие места, телефония, интеграции и базы данных.

Компания может не работать с TCP/IP напрямую на уровне кода, но ошибки Routing, Firewall или DNS способны остановить критичные бизнес-сервисы.

Поэтому базовое понимание стека необходимо системным администраторам, DevOps, Backend-разработчикам, специалистам по безопасности и архитекторам.

Типичные ошибки при работе с TCP/IP

  1. Путать IP Address и Port.
  2. Считать TCP и IP одним протоколом.
  3. Игнорировать DNS при поиске сетевой проблемы.
  4. Открывать Database Ports в интернет.
  5. Хардкодить IP динамических сервисов.
  6. Не использовать Timeout.
  7. Безопасно повторять любые запросы после сетевой ошибки.
  8. Считать Ping полной проверкой доступности приложения.
  9. Игнорировать Packet Loss и MTU.
  10. Не учитывать IPv6 при сетевой диагностике.

Как изучать проблему TCP/IP

Шаг 1. Проверить адресацию

Устройство должно иметь корректный IPv4 или IPv6 Address и Prefix.

Шаг 2. Проверить Routing

Убедитесь, что существует путь до Destination.

Шаг 3. Проверить DNS

Domain Name должен разрешаться в правильный IP.

Шаг 4. Проверить Transport

Нужный TCP или UDP Port должен быть доступен.

Шаг 5. Проверить Firewall

Правила не должны блокировать требуемый трафик.

Шаг 6. Проверить приложение

Процесс должен действительно слушать нужный Address и Port.

Шаг 7. Проверить задержку и потери

Высокие RTT и Packet Loss могут ухудшать работу даже при формальной доступности сервиса.

Шаг 8. Использовать Observability

Logs, Metrics и Traces помогают связать сетевую проблему с конкретным бизнес-запросом.

Связанные термины

ТерминСвязь с TCP/IP
TCPОбеспечивает надежный транспортный поток
IPОтвечает за адресацию и маршрутизацию
UDPАльтернативный транспортный протокол
IPv432-битная версия Internet Protocol
IPv6128-битная версия Internet Protocol
DNSПреобразует доменные имена в IP Addresses
DHCPАвтоматически выдает сетевую конфигурацию
ICMPИспользуется для служебной сетевой диагностики
NATТранслирует IP Addresses и Ports
FirewallКонтролирует сетевой доступ
HTTPПрикладной протокол, обычно работающий поверх TCP/IP
VPNПередает IP Traffic через защищенный Tunnel

Краткий итог

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

Поверх TCP/IP работают HTTP, HTTPS, DNS, SSH, Database Connections, API, микросервисы и множество других технологий. Сам стек включает несколько уровней, от локальной передачи Frames до прикладных протоколов.

Для надежной эксплуатации необходимо понимать IP Addresses, Ports, Routing, DNS, NAT, Firewall, TCP Connections, Timeout и основные сетевые метрики. TCP/IP остается фундаментом облачной инфраструктуры, дата-центров, контейнеров и распределенных приложений, поэтому ошибки на этом уровне могут влиять практически на любой цифровой сервис.

Частые вопросы

6 вопросов
Что такое TCP/IP?

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

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

IP отвечает за доставку пакетов между сетевыми адресами и выбор маршрута, а TCP работает поверх IP и обеспечивает соединение, порядок данных, подтверждение доставки и повторную передачу потерянных сегментов.

Чем TCP отличается от UDP?

TCP устанавливает соединение и контролирует доставку и порядок данных. UDP передает Datagrams без таких гарантий и имеет меньше накладных расходов. TCP подходит для веб-сайтов и баз данных, а UDP часто используют в DNS и real-time приложениях.

Что такое Port в TCP/IP?

Port — числовой идентификатор сетевого сервиса на устройстве. IP Address определяет узел, а Port — конкретное приложение. Например, сервер может принимать HTTPS-соединения на TCP Port 443.

Как TCP/IP связан с HTTP?

HTTP является прикладным протоколом. В классическом HTTP и HTTPS его данные передаются через транспортный протокол, обычно TCP, а TCP-сегменты доставляются между сетями через IP.

Какие основные протоколы входят в стек TCP/IP?

К стеку TCP/IP относятся IP, TCP, UDP, ICMP и множество прикладных протоколов, включая HTTP, DNS, SMTP и DHCP. Они работают на разных уровнях и совместно обеспечивают сетевое взаимодействие приложений.

Была ли статья полезна?
Документ обновляется командой EFSOL. Свяжитесь с нами, если нашли неточность.
Нужна консультация?

Поможем спроектировать, развернуть и сопроводить облачную или гибридную инфраструктуру под задачи вашего бизнеса.

Ответим в течение часа в рабочее время
Заказать звонок

Оставьте свои данные для того, чтобы специалист с вами связался.

Заказать звонок

Оставьте свои данные для того, чтобы специалист с вами связался.