Что такое 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 Edition | 25565 |
| Terraria | 7777 |
| SSH | 22 |
| RDP (удалённый рабочий стол) | 3389 |
| PostgreSQL / MySQL | 5432 / 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-порт через туннель.