Сервер TCP ограничен 65535 клиентами?

10

Можно подумать, что это накладывает жесткое ограничение на количество клиентов, которые может поддерживать один компьютер / приложение.

Можно наблюдать за веб-сервером и требовать его масштабирования до уровней использования, которые, по прогнозам, будут превышать ~ 65 тыс. Соединений.

Для программного обеспечения существуют определенные отдельные соображения ( /programming/1575453/how-many-socket-connections-can-a-web-server-handle )

Тодд
источник
Вам помог какой-нибудь ответ? Если это так, вы должны принять ответ, чтобы вопрос не появлялся вечно, ища ответ. Кроме того, вы можете предоставить и принять свой собственный ответ.
Рон Мопин

Ответы:

16

Короткий ответ - нет, это не предел.

Поле TCP Порт 2x байт и имеет количество 65536. Это число ограничивает количество адресов сервер может иметь. Но это не ограничивает количество клиентов до ~ 64k. Каждый пакет TCP имеет два поля порта, одно для пункта назначения и одно для источника (а также два IP-адреса).

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

Рассматривать:

  • IP-адрес сервера - 100.0.0.1 (фиксированный)
  • Порт сервера - 80 (фиксированный)
  • IP-адрес клиента - 0.0.0.0 - 255.255.255.255 (32-разрядный диапазон)
  • Порт клиента - 0 - 65535 (16-битный диапазон)

Да, клиент (или офис) с одним IP-адресом может одновременно подключаться к вашему серверу только 65535 раз, но если у этого клиента (или офиса) было несколько адресов IPv4, они могли бы подключить многократные из этого числа.

Как правило, на многих клиентских устройствах используются миллионы IP-адресов , и если бы они использовали только один исходный порт для подключения к порту вашего единственного сервера, то вы уже могли бы увидеть потенциал, превышающий число 65536.

Теоретический математический предел протокола IP / TCP составляет 2 ^ 32 * 2 ^ 16. Практически количество IP-адресов меньше - вам нужно будет вычесть некоторые зарезервированные блоки IP. Также практически число клиентских портов меньше, потому что на типичном клиентском компьютере будет запущено несколько приложений, подключающихся к другим серверам, что также уменьшает пул портов TCP, но этот пул редко используется - после окончания сеанса TCP номер порта снова доступен в бассейне.

Примечание. Для IPv6 количество IP-адресов увеличивается, но поле «Порт» для TCP остается того же размера.

Тодд
источник