TCP — это фундаментальный протокол, на котором держится большинство ваших HTTP/HTTPS запросов, WebSocket‑соединений и других “каналов” приложений. Когда вы открываете вкладку в браузере или ваш парсер делает запрос, клиент устанавливает TCP‑соединение с удалённым сервером через мобильный прокси: происходит трёхстороннее рукопожатие (SYN → SYN/ACK → ACK), резервируется пара портов (локальный и удалённый), и начинается передача данных. Мобильные прокси работают через CGNAT операторов связи (4G/5G/LTE), где десятки и сотни клиентов делят один публичный IP и пул эфемерных портов. Чтобы система не “задохнулась”, провайдер ограничивает число одновременных TCP‑сессий на пользователя, на IP или на сам модем. Это и есть лимит TCP‑подключений.
Почему лимит важен? Каждый отдельный поток вашего приложения — будь то загрузка картинок, запросов к API, открытый WebSocket или TLS‑рукопожатие — занимает отдельное TCP‑соединение. Если ваш парсер делает 10 одновременных запросов и у вас открыто 5 вкладок в антидетект‑браузере (каждая подгружает ресурсы асинхронно), вы легко достигаете 30–60 активных коннектов. Добавьте keep‑alive (соединения остаются висячими для ускорения повторных запросов), спорадические ретраи с экспоненциальной задержкой, — и внезапно вы упрётесь в лимит. Дальше начинается деградация: новые запросы встают в очередь, часть соединений падает в TIME_WAIT, прокси отвечает с задержками или сбрасывает лишние коннекты, а система мониторинга видит рост RTO и рост отказов.
Важно различать TCP‑соединение и HTTP‑запрос. HTTP/1.1 в большинстве случаев использует keep‑alive и может отправлять несколько последовательных запросов в рамках одного TCP. HTTP/2 умеет мультиплексировать несколько одновременных потоков в один TCP‑канал, что мощно экономит лимит. Но мобильные прокси, их программные стеки и целевые сайты не всегда гарантированно поддерживают HTTP/2/HTTP/3, и часть трафика всё равно “раскладывается” в отдельные TCP‑сессии. Поэтому оптимизация параллельности и контроль лимитов остаются ключом к предсказуемости.
Как провайдеры считают лимит? Обычно берут “одновременные активные TCP‑сессии” на одного клиента или на один выделенный канал (порт). Порог может быть динамическим: например, 50 коннектов на порт, 100 на IP‑адрес или комбинированная модель с антифлуд‑фильтрами. Если вы используете ротацию IP, sticky‑сессии (закрепление на одном IP на X минут) и несколько одновременных потоков, лимит может сработать неожиданно: часть соединений уйдёт в RST от прокси или получит долгий SYN‑timeout. Мобильная сеть добавляет латентность и джиттер, поэтому запас по лимиту нужен больше, чем в дата‑центровых прокси.
Теперь о практической формуле. Параллельность примерно равна RPS × среднее время обработки запроса (с учётом сетевой задержки и серверного времени). Если вы целитесь в 5 запросов в секунду, а среднее время ответа 1,2 секунды, базовая параллельность — около 6 соединений. Умножьте на коэффициент накладных расходов (keep‑alive, ретраи, доп. ресурсы: картинки, шрифты, аналитические пиксели) — обычно x2‑x3 — и вы получите реалистичную потребность в лимите. Для headless‑браузера с несколькими вкладками и тяжёлыми страницами это легко вырастает до 40–80 TCP‑сессий. Поэтому корректный выбор тарифа и грамотная настройка пула подключений — не опция, а необходимость.
- Лимит TCP‑подключений — это максимум одновременных активных TCP‑сессий, которые ваш трафик может держать через мобильный прокси.
- HTTP/2 и keep‑alive помогают экономить лимит, но мобильная среда и особенности сайтов не всегда позволяют “свести всё” в один поток.
- Рассчитывайте параллельность по формуле RPS × T ответа × запас, и держите safety‑margin 20–40% на пиковые всплески.