ProximaMPProximaMP

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

TCP — протокол, на котором держится большая часть интернета: сайты, почта, файлы, серверы Minecraft. Разберём, что такое TCP простыми словами: что он делает, зачем ему порты и почему одни сервисы без него не живут, а другим он только мешает.

Что делает TCP

TCP (Transmission Control Protocol) решает одну задачу: доставить данные целиком и в правильном порядке. Сеть — среда ненадёжная, пакеты теряются, приходят с задержкой или не в том порядке, в котором их отправили. TCP берёт это на себя:

  • Подтверждает получение. На каждый кусок данных получатель отвечает «дошло». Не ответил — отправитель шлёт заново.
  • Восстанавливает порядок. У каждого пакета есть номер, получатель собирает их в исходную последовательность.
  • Регулирует скорость. Если сеть не тянет, TCP притормаживает сам, чтобы не захлебнуться.

Для программы это выглядит как труба: с одного конца засыпал байты, с другого они вышли в том же виде и порядке. Всю возню с потерями TCP прячет внутри.

Что такое соединение

TCP — протокол с установкой соединения. Прежде чем передавать данные, стороны договариваются: клиент говорит «хочу подключиться», сервер отвечает «готов», клиент подтверждает. Три коротких сообщения, после которых канал считается открытым — это и называют «рукопожатием».

Отсюда и знакомые слова из ошибок: connection refused (на том конце никто не слушает), connection timed out (ответа не дождались), connection reset (соединение оборвали).

Что такое TCP-порт

IP-адрес приводит к нужному компьютеру, а порт — к нужной программе на нём. Это число от 1 до 65535. На одной машине могут одновременно работать веб-сервер на 80, SSH на 22 и сервер Minecraft на 25565, и они не мешают друг другу.

Когда программа «слушает порт», она говорит операционной системе: всё, что придёт на этот номер по TCP, отдавай мне. Двум программам занять один и тот же порт нельзя — вторая просто не запустится (разбор такой ошибки — в статье «Failed to bind to port»).

«Открыть TCP-порт» значит сделать так, чтобы на этот порт могли достучаться снаружи, из интернета, а не только с твоего компьютера.

Что работает по TCP

СервисПорт
HTTP (сайты без шифрования)80
HTTPS (сайты с шифрованием)443
Сервер Minecraft Java Edition25565
Terraria7777
SSH22
RDP (удалённый рабочий стол)3389
PostgreSQL / MySQL5432 / 3306
Дев-серверы фронтенда3000, 5173, 8080

Общее у них одно: потерять кусок данных нельзя. Полстраницы сайта, обрывок файла или половина SQL-запроса бесполезны.

Когда TCP не подходит

Гарантии стоят времени. Потерялся пакет — TCP остановит поток и дождётся повтора. Для файла это правильно, а для голосового звонка или шутера — нет: пока протокол переспрашивает про пакет, который уже устарел, картинка замирает. Там берут UDP, который ничего не гарантирует, зато не ждёт.

Подробнее — чем отличается TCP от UDP и что такое UDP.

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

TCP — это то же самое, что IP? Нет. IP доставляет пакет до нужного компьютера, TCP поверх него отвечает за надёжность и порядок. Поэтому их и пишут вместе: TCP/IP.

Почему сайты работают по TCP? Страница, картинка или скрипт должны дойти целиком и без перестановок — иначе браузеру нечего показывать.

Чем TCP-порт отличается от UDP-порта? Номера независимы: порт 27015 TCP и порт 27015 UDP — это два разных порта, их могут занимать разные программы.

Сколько всего портов? 65535. Номера до 1023 зарезервированы под известные сервисы, остальные свободны.

Хочешь открыть TCP-порт наружу?

Чтобы до твоего сервиса достучались из интернета, обычно нужен белый IP и проброс портов на роутере. Через туннель ни то ни другое не требуется — как это делается, разобрано в гайде Как открыть TCP-порт через туннель.

Скачать ProximaClient для Windows →

Все статьи