Почему существует только 65 535 портов, и будет ли у нас их больше? [закрыто]

20

Я понимаю первоначальную причину наличия 65 535 портов на IP-адрес: это наибольшее число, которое может быть представлено 16-разрядным или 2-байтовым числом, и было невозможно представить, что компьютеры когда-либо смогут сэкономить больше чем для чего-то тривиального, как порты, или что-то в этом роде. На самом деле портам может потребоваться более 1 бита каждый, поскольку каждый порт может быть открытым, заблокированным, «скрытым» или другим, но по какой-то причине люди всегда говорят, что порты работают с 16-битным числом. Если у меня есть какая-то часть этого неправильно, непременно скажите мне.

Однако в мире, где большинство компьютеров являются 32-разрядными и имеют более чем достаточно памяти / пространства, чтобы сэкономить еще пару портов, почему у нас все еще есть такое количество портов? Мы находимся в процессе перехода на HTML5, HTTP2.0, IPv6 и другие, безусловно, разные версии, так почему бы не сделать то же самое с портами? Многие из них допускают намного больше 16 бит; на самом деле IPv6 позволяет 16 байтов ! Я понимаю, что многие из них пройдут годами или даже десятилетиями, но почему все болтовня об этих обновлениях, и даже не писк о большем количестве портов (о которых я, любитель, слышал)?

Единственные две причины, которые я вижу для сохранения 65 535 портов, позволяют крупным предприятиям сохранять свои старые унаследованные системы, что вряд ли является веской причиной, и рост количества встроенных систем, многие из которых являются крошечными, с минимальным объемом пространства, памяти и т. Д. скоро появятся в интернете, многие как часть интернета вещей. С этими встроенными системами, возможно, мы могли бы позволить им иметь меньше портов, и когда большой настольный компьютер пытается подключиться к одному, можно сказать, что это будет осторожно, поскольку встроенная система baby может использовать только ~ 65 000 портов.

С другой стороны, я могу подумать о нескольких веских причинах иметь больше портов, большинство из которых связано с NAT и другими системами, где более одного частного IP-адреса должны взаимодействовать с остальной частью Интернета, используя один и тот же общедоступный IP-адрес, как рост числа виртуальных машин на одном компьютере, использующих один и тот же IP-адрес. Технически, каждый IP-адрес виртуальной машины имеет 65 535 портов, но в действительности все они используют порты хоста. В таких случаях эти системы могут быстро исчерпать порты. Другим конкретным случаем является NAT операторского уровня, где один общедоступный IP-адрес преобразуется в несколько частных IP-адресов, и, по крайней мере, один из этих частных адресов преобразуется в другой набор еще более частных адресов. Опять же, каждый частный IP-адрес технически имеет свой собственный набор из 65 535 портов, но это иллюзия, например, когда данные поступают в общедоступный Интернет, они используют общедоступные IP-порты. Я не уверен, что нам обязательно нужен NAT, но нам понадобится что-то подобное для сохранения адресов даже при тех огромных объемах, которые IPv6 даст нам. Если у нас есть такие случаи, можем ли мы позволить себе не иметь более 65 535 портов?

Итак, почему у нас все еще есть только 65 535 портов, и есть ли планы разрешить больше?

PS Я знаю, что технически существует 65 536 портов на IP-адрес, но порт 0 обычно не используется ни для чего.

trysis
источник
Я думаю, вам нужно задать IANA эти вопросы, они контролируют ресурсы. Я думаю, вам тоже нужно прочитать руководство по TCP / IP, так как некоторые из ваших представлений кажутся ошибочными.
user9517 поддерживает GoFundMonica
1
Да, я понял. Я пытался сказать столько, сколько я понял, но, как вы видите, я не все понимаю.
trysis
7
Что не по теме в этом вопросе? Просто интересуюсь.
trysis
1
Я также перестал задавать вопросы на этих сайтах. Все, кажется, не по теме в эти дни ...
Нуно
IPv6 делает ограничение портов спорным, предлагая компьютеру / 64 адресов для использования.
J.Money

Ответы:

28

Порт является частью используемого протокола уровня 4 - по большей части TCP или UDP ; это не связано с адресацией памяти реальных компьютеров, так что не смущайтесь 32- или 64-битной адресацией памяти современных операционных систем.

Заголовки этих протоколов уровня 4 имеют специально определенные структуры , для которых ровно 16 битов используются для портов источника и назначения. Без нарушения совместимости протоколов уровня 4, от которых зависит весь интернет, количество портов изменить нельзя. Даже более новый SCTP имеет 16-битное ограничение на порты.

Имейте в виду, что эти протоколы идентифицируют трафик не только на основе принимающего порта, но и принимающего IP-адреса, а также отправляющего порта и IP-адреса; вы ограничены 65535 прослушивающими TCP-портами (но у вас их не так много), и вы ограничены 65535 подключениями к конкретной службе в конкретной удаленной системе (на практике ниже, см. эфемерные порты ), так что это редко чтобы ограничить эти протоколы, если у вас нет системы, создающей множество соединений с определенной удаленной системой.

Шейн Мэдден
источник
3
Это всегда сводится к обратной совместимости, не так ли? Почему мы можем перейти на IPv6, который допускает гораздо больше IP-адресов, это смешно, но у нас не может быть еще пары портов? Это мое главное раздражение.
trysis
2
@trysis Right - переход с IPv4 на IPv6 - хорошее сравнение с переходом на версию TCP и версию UDP с большим количеством битов в заголовке для порта. И если вы не заметили, это был медленный и болезненный процесс, чтобы даже развернуть развертывание IPv6 по всему миру там, где оно сейчас (с использованием 1-2% мирового трафика, использующего его). Для IPv4 существовала настоятельная необходимость переезда - исчерпание адресов. С другой стороны, нехватка пространства портов в этих протоколах не является распространенной проблемой, поэтому нет необходимости вносить масштабные изменения, которые потребуются для того, чтобы это произошло.
Шейн Мэдден
О, это имеет больше смысла. Благодарю. Может быть, когда-нибудь мы почувствуем потребность, но я полагаю, что вы правы в том, что этой потребности сейчас нет.
trysis
Я надеюсь, что если мы когда-нибудь преодолеем все эти проблемы, мы сможем придумать что-то лучшее, чем целочисленная адресация портов. Что-то вроде портов на основе UUID было бы здорово. Или фактические пространства имен были бы еще более описательными и исключали бы конфликты между приложениями. Представьте себе переадресацию порта для пространства имен com.windows.local.yourdomain.server001 или чего-то в этом роде.
njbair
таким образом, если два компьютера вместе устанавливают 65 535 подключений или аналогичны разным компьютерам вне NAT, ни один из других компьютеров не сможет получить доступ к itnernet. Я прав?
Денис