Я понимаю исходное обоснование наличия 65 535 портов на IP-адрес: это максимальное число, которое может быть представлено 16-битным или 2-байтовым числом, и было невозможно представить, чтобы компьютеры когда-либо могли сэкономить больше чем это для чего-то столь же тривиального, как порты или что-то в этом роде. Фактически для каждого порта может потребоваться более 1 бита, поскольку каждый порт может быть открытым, заблокированным, «скрытым» или другим, но почему-то люди всегда говорят, что порты работают с 16-битным числом. Если у меня что-то не так, обязательно скажите мне.
Однако в мире, где большинство компьютеров 32-битные и у них более чем достаточно памяти / места, чтобы выделить еще пару портов, почему у нас все еще есть такое количество портов? Мы находимся в процессе перехода на HTML5, HTTP2.0, IPv6 и другие, безусловно, разные версии, так почему бы не сделать то же самое с портами? Многие из них допускают более 16 бит; Фактически, IPv6 позволяет 16 байты! Я понимаю, что многие из них будут через годы или даже десятилетия, но почему все эти разговоры об этих обновлениях и даже не писк о дополнительных портах (о которых я, любитель, слышал)?
Единственные 2 причины, по которым я могу сохранить 65 535 портов, - это позволить крупным компаниям сохранить свои старые унаследованные системы, что вряд ли является уважительной причиной, и появление встроенных систем, многие из которых крошечные, с минимальным объемом пространства, памяти и т. , которые скоро появятся в Интернете, многие как часть Интернета вещей. С помощью этих встроенных систем, возможно, мы могли бы позволить им иметь меньше портов, и когда большой настольный компьютер пытается подключиться к одному, его можно было бы сказать, чтобы он был осторожным, поскольку встроенная система ребенка может использовать только ~ 65 000 портов.
С другой стороны, я могу придумать несколько веских причин иметь больше портов, большинство из которых связано с NAT и другими системами, где более одного частного IP-адреса должны взаимодействовать с остальной частью Интернета, используя один и тот же общедоступный IP-адрес. как появление виртуальных машин на одном компьютере, использующих один и тот же IP-адрес. Технически каждый IP-адрес виртуальной машины имеет 65 535 портов, но на самом деле все они используют порты хоста. В подобных случаях в этих системах могут довольно быстро закончиться порты. Другой конкретный случай - NAT операторского уровня, когда один общедоступный IP-адрес транслируется в несколько частных IP-адресов, и по крайней мере один из этих частных адресов переводится в другой набор еще большего количества частных адресов. Опять же, каждый частный IP-адрес технически имеет свой собственный набор из 65 535 портов, но это иллюзия, поскольку, когда данные попадают в общедоступный Интернет, они используют порты общедоступного IP. Я не уверен, что нам нужен NAT как таковой, но нам понадобится что-то подобное, чтобы сохранить адреса даже с огромными объемами, которые нам дает IPv6. Когда у нас есть такие случаи, можем ли мы позволить себе иметь не более 65 535 портов?
Итак, почему у нас все еще есть только 65 535 портов, и есть ли планы разрешить больше?
P.S. Я знаю, что технически на каждый IP-адрес приходится 65 536 портов, но порт 0 обычно ни для чего не используется.
Порт является частью используемого протокола уровня 4 - TCP или UDP, по большей части; это не связано с адресацией памяти реальных компьютеров, так что пусть вас не смущает 32- или 64-битная адресация памяти в современных операционных системах.
Заголовки этих протоколов уровня 4 имеют специально определенные структуры, для которых используется ровно 16 бит для портов источника и назначения. Без нарушающих совместимость изменений протоколов уровня 4, от которых зависит весь Интернет, количество портов не может быть изменено. Даже новее SCTP имеет 16-битное ограничение на порты.
Имейте в виду, что эти протоколы идентифицируют трафик на основе не только принимающего порта, но также принимающего IP-адреса, отправляющего порта и IP-адреса; вы ограничены 65535 прослушивающими TCP-портами (но у вас их не так много), и вы ограничены 65535 подключениями к определенной службе в конкретной удаленной системе (ниже на практике см. эфемерные порты), поэтому редко встречаются ограничения по этим протоколам, если у вас нет системы, создающей множество подключений к определенной удаленной системе.