Было время, когда IANA назначала порты только до 1023. См. RFC1700 . Когда-то это было стандартом. Большую часть времени у меня нет проблем с поиском, когда что-то меняется в потоке RFC, но вопрос об изменении портов с 1024 на 49152 с зарегистрированных на назначенные мне не удался.
С точки зрения истории Linux, в 2007 году был задан вопрос о ip_local_port_range по умолчанию. В то время было решено использовать упомянутый вами диапазон Linux из-за страха, что большие номера портов могут вызвать проблемы, и начало диапазона в 49152 может оставить слишком мало номера портов в пуле. Смотрите это и его поток. В то время высказывалось мнение, что начало в 32768 г. соответствовало духу процедур IANA, если не полностью соответствовало требованиям. Читая это, я делаю вывод, что разработчики предполагали, что большинство заданий будет происходить из нижней части диапазона и будет двигаться вверх. На момент написания этой статьи я насчитал немногим более 100 назначенных номеров портов (не считая разных протоколов как отдельных) между 32768 и 49152, так что это довольно неплохо сохранилось за последние пять лет.
Я не знаю, почему диапазон считался слишком маленьким, но я могу представить две причины:
- Номера портов рандомизированы для предотвращения определенных атак. Чем больше адресов в пуле, тем лучше может работать эта защита.
- Серверы высокой активности могут иметь проблемы с исчерпанием номера порта. Хотя порты могут быть эфемерными, их использование не является мгновенным. В частности, сокеты могут длиться несколько минут после закрытия TCP.
Это сообщение в блоге касается номера 2 и предлагает ответ, если вы хотите, чтобы ваши системы Linux использовали другой диапазон локальных портов. (Использование /etc/sysctl.d для определения диапазона, который вам нравится. Существует также запись ip_local_reserved_ports, которая может быть полезна, если возникает конкретный конфликт. Они совпадают с записью / proc / sys, которую вы цитируете.)
В итоге. Настройки Linux по умолчанию не соответствуют текущим спецификациям IANA, но любая конкретная система Linux может, если этого пожелает ее владелец.
ip_local_port_range
не должно использоваться в любом случае.