Насколько быстро нужно выделять эфемерные порты, чтобы попасть в состояние исчерпания портов TCP?
Мне сказали, что для запросов клиентов доступны порты ~ 4k (старая Windows), ~ 16k (более новая Windows) или ~ 28k (RH Linux). Итак, пул номеров портов глобальный или на удаленный IP-адрес?
Если они глобальные, так как порты становятся повторно используемыми только через 240 (Windows) или 60 (RH Linux) секунд, их нужно будет распределять со скоростью ~ 16/66/466 в секунду соответственно?
Это верно?
По вашему опыту, стоит ли мне практически об этом беспокоиться?
DOS атаки отдельно, только с плохо написанными приложениями. Основной способ избежать исчерпания порта TCP - это объединение в пул соединений, например, HTTP keep-alive. Это имеет несколько положительных эффектов:
Diito EJP и Sirex. Мониторинг поможет вам лучше понять, где вы находитесь. Вы также можете настроить, как долго сокету разрешено оставаться в состоянии TIME_WAIT. Мне приходилось делать именно это в системе, которая общается с тысячами устройств телеметрии GPRS. Они набирают номер и потребляют порты, как никто другой. Более агрессивный порог TIME_WAIT означает, что наше приложение более стабильно.
В MS Windows есть несколько полезных инструментов для мониторинга использования порта, например TCPView и ProcessExplorer (MS SysInternals). netstat -a
может быть медленным при тысячах подключений, поэтому вы можете использовать netstat -an
вместо этого (это останавливает разрешение DNS для адресов). Но за Linux не ручаюсь ....