Чи обмежено сервер TCP 65535 клієнтів?


10

Можна подумати, що це обмежує кількість клієнтів, які може підтримувати один комп'ютер / програма.

Можна наглядати за веб-сервером і вимагати, щоб він міг масштабуватись до рівнів використання, за прогнозами яких виходити за межі ~ 65k з'єднань.

Для програмного забезпечення існують певні окремі міркування ( /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 залишається такого ж розміру.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.