Чи існує жорсткий ліміт 65536 відкритих TCP-підключень на IP-адресу в Linux?


23

Чи існує жорсткий ліміт 65536 відкритих TCP-підключень на IP-адресу в Linux? Я десь читав, що там було, але хтось просить підтвердження, і я просто не можу його знайти.

Здається, я пам’ятаю, що це було дещо про те, що дескриптори файлів були 16-бітним цілим числом, що якось обмежує його?

Або це хокум, і просто немає іншого обмеження, окрім того, наскільки надійний сервер?

Відповіді:


35

Можливо, ви думаєте про кількість портів. У TCP доступно 65536 портів у поточних версіях IPv4. Це не просто обмеження Linux, його частина протоколу. Ваша IP-адреса ідентифікує вашу машину, а порт ідентифікує програму на вашому комп'ютері.

Але кількість підключень цим не обмежена. З'єднання складається з 5 частин інформації, в geek говорять 5-кортеж. Він визначається протоколом (TCP, UDP), локальною IP-адресою та портом, а також віддаленою IP-адресою та портом. Отже, візьміть веб-сервер. Він може обслуговувати безліч з'єднань одного і того ж порту (швидше за все, 80). Ваш веб-сервер навіть може підтримувати кілька підключень до однієї клієнтської машини. Скажімо, ви підключаєтесь до google.com із двох вікон. Ваш апарат вибере невикористаний порт для кожного з'єднання. Отже, сервер google повинен буде відслідковувати (TCP, google.com, 80, yourmachine, someport1) та (TCP, google.com, 80, yourmachine, someport2). У якийсь момент ви натрапите на обмеження, але це не жорсткий ліміт і дуже залежить від системи.

І так, кожен сокет - це дескриптор файлу, але не всі машини використовують шорти для таблиці fd. У моїй системі не налаштована система cat /proc/sys/fs/file-maxдає 323997. Я впевнений, що міг би збільшити її, якщо мені потрібно.

Отже, існує обмеження 65336, але це стосується адреси, а не кількості підключень. Кількість з'єднань обмежена, але більше за конфігурацією системи та кількістю пам’яті.


2
Отже, повторно 5-ти кортеж: навіть якщо я обмежений 65536 портами, це обмежує мене лише до 64-ти з’єднань на вхідну IP-адресу , це правильно? Отже, єдиним обмеженням є дескриптори файлів, але вони не обов'язково 16 бітові? Отже, в основному, що ви говорите, немає меж?
Кріс

1
так. Дивіться також: en.wikipedia.org/wiki/Transmission_Control_Protocol розділ "Використання ресурсів"
user12889

3
@Chris: 64k з'єднань на вхідну IP-адресу на одному локальному порту , так.
grawity

@Chris, що сказала скупість. 5-кортеж матиме до 65536 комбінацій (але ніколи не досягає) 65536 комбінацій з іншою машиною. Насправді ви ніколи не потрапите туди, оскільки машина не може використовувати жоден старий порт для з'єднання - деякі зарезервовані з певних причин.
Багата Гомолка
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.