Ответы:
(2 ^ 16) -1 или 0-65,535 (-1 означает, что порт 0 зарезервирован и недоступен). (отредактировано, потому что o_O Tync напомнил мне, что мы не можем использовать порт 0, а Стив Фолли напомнил мне, что вы просили самый высокий порт, а не количество портов)
Но вы, вероятно, ошибаетесь. Есть люди, которые спорят за и против нестандартных портов. Я говорю, что они не имеют никакого отношения, за исключением самого обычного сканера, и самый обычный сканер можно держать в страхе, используя современное программное обеспечение и надлежащие методы брандмауэра, а также надежные пароли. Другими словами, лучшие практики безопасности.
Хотя 1-65535 являются законными портами TCP, и верно, что 1-1023 предназначены для хорошо известных служб портов. Вы можете столкнуться со случайными проблемами с вашими собственными сервисами, если они запускаются после того, как эфемерный порт установлен. Для тех, кто может не знать, эфемерные порты - это те, которые подключены локально для удаленных конечных точек (или что-то в этом роде). Так что, если вы напишите TCP-сервис, который прослушивает порт 20001. Возможно, вам будет хорошо сегодня ... и завтра. Но однажды ваш сервис может запуститься и попытаться привязаться к 20001, и он потерпит неудачу, потому что он был принят как эфемерный порт. Есть решение. Вы должны иметь своего администратора или себя, чтобы изменить системную политику диапазона портов на вашем сервере. В системах Linux это делается в два этапа:
Оба шага должны быть предприняты, бесполезно, вы планируете перезагрузить компьютер, и в этом случае динамический шаг не требуется. Чтобы установить диапазон от 40000 до 65535, сделайте следующее:
динамический
echo 40000 65535 > /proc/sys/net/ipv4/ip_local_port_range
или же
sysctl -w net.ipv4.ip_local_port_range="40000 65535"
перманентный
Добавьте следующее в /etc/sysctl.conf:
net.ipv4.ip_local_port_range = 40000 65535
Чтобы прочитать текущую настройку или подтвердить изменение:
/sbin/sysctl net.ipv4.ip_local_port_range
Результат будет примерно таким:
net.ipv4.ip_local_port_range = 9000 65500
Убедитесь, что вы понимаете назначение вашего сервера. Слишком большое уменьшение диапазона может привести к другим проблемам.
Удачного кодирования! (или что вы делаете)