Я понимаю первоначальную причину наличия 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 обычно не используется ни для чего.
источник
Ответы:
Порт является частью используемого протокола уровня 4 - по большей части TCP или UDP ; это не связано с адресацией памяти реальных компьютеров, так что не смущайтесь 32- или 64-битной адресацией памяти современных операционных систем.
Заголовки этих протоколов уровня 4 имеют специально определенные структуры , для которых ровно 16 битов используются для портов источника и назначения. Без нарушения совместимости протоколов уровня 4, от которых зависит весь интернет, количество портов изменить нельзя. Даже более новый SCTP имеет 16-битное ограничение на порты.
Имейте в виду, что эти протоколы идентифицируют трафик не только на основе принимающего порта, но и принимающего IP-адреса, а также отправляющего порта и IP-адреса; вы ограничены 65535 прослушивающими TCP-портами (но у вас их не так много), и вы ограничены 65535 подключениями к конкретной службе в конкретной удаленной системе (на практике ниже, см. эфемерные порты ), так что это редко чтобы ограничить эти протоколы, если у вас нет системы, создающей множество соединений с определенной удаленной системой.
источник