Rozumiem pierwotne uzasadnienie posiadania 65 535 portów na adres IP: jest to najwyższa liczba, która może być reprezentowana przez 16-bitową lub 2-bajtową liczbę, i nie było możliwe, aby komputery kiedykolwiek były w stanie oszczędzić więcej niż w przypadku czegoś tak trywialnego jak porty lub coś takiego. Każdy port może w rzeczywistości potrzebować więcej niż 1 bit, ponieważ każdy port może być otwarty, zablokowany, „ukradziony” lub inny, ale z jakiegoś powodu ludzie zawsze mówią, że porty działają z 16-bitową liczbą. Jeśli popełniam jakikolwiek błąd, na pewno mi powiedz.
Jednak w świecie, w którym większość komputerów jest 32-bitowa i ma więcej niż wystarczającą ilość pamięci / miejsca, aby zaoszczędzić kilka portów, dlaczego wciąż mamy tyle portów? Jesteśmy w trakcie przechodzenia na HTML5, HTTP2.0, IPv6 i inne zdecydowanie różne wersje, więc dlaczego nie to samo z portami? Wiele z nich pozwala na więcej niż 16 bitów; w rzeczywistości IPv6 pozwala na 16 bajtów ! Rozumiem, że wiele z nich minęło lata, a nawet dekady, ale dlaczego całe gadanie o tych ulepszeniach, a nawet nie podglądanie większej liczby portów (o których ja, amator, słyszałem)?
Jedyne 2 powody, dla których widzę utrzymanie 65 535 portów, pozwalają dużym firmom zachować stare systemy, co nie jest dobrym powodem, oraz wzrost liczby systemów wbudowanych, z których wiele jest niewielkich, z niewielką ilością miejsca, pamięci itp. , wkrótce dostępne w Internecie, wiele z nich będzie częścią Internetu przedmiotów. W przypadku tych systemów wbudowanych być może moglibyśmy pozwolić im mieć mniej portów, a kiedy duży komputer stacjonarny próbuje się z nimi połączyć, można powiedzieć, że jest łagodny, ponieważ system wbudowany dla dziecka może używać tylko ~ 65 000 portów.
Z drugiej strony mogę wymyślić kilka dobrych powodów, aby mieć więcej portów, z których większość dotyczy NAT i innych systemów, w których więcej niż 1 prywatny adres IP musi komunikować się z resztą Internetu za pomocą tego samego publicznego adresu IP, jak wzrost liczby maszyn wirtualnych na tym samym komputerze, wszystkie korzystające z tego samego adresu IP. Technicznie każdy adres IP maszyny Wirtualnej ma 65 535 portów, ale w rzeczywistości wszystkie używają portów hosta. W takich przypadkach systemy te mogą dość szybko zabraknąć portów. Innym szczególnym przypadkiem jest NAT klasy operatorskiej, w którym jeden publiczny adres IP jest tłumaczony na kilka prywatnych adresów IP, a co najmniej jeden z tych prywatnych adresów jest tłumaczony na inny zestaw jeszcze bardziej prywatnych adresów. Ponownie, każdy prywatny adres IP technicznie ma swój własny zestaw 65 535 portów, ale jest to złudzenie, tak jak kiedy dane trafiają do publicznego Internetu, korzystają z publicznych portów IP. Nie jestem pewien, czy koniecznie potrzebujemy NAT, ale będziemy potrzebować czegoś takiego, aby zachować adresy nawet przy ogromnych ilościach, jakie da nam IPv6. Kiedy mamy takie przypadki, czy możemy sobie pozwolić nawet na nie więcej niż 65 535 portów?
Dlaczego więc nadal mamy tylko 65 535 portów i czy są jakieś plany, aby zezwolić na więcej?
PS Wiem, że technicznie jest 65 536 portów na adres IP, ale port 0 zwykle nie jest używany do niczego.
źródło
Odpowiedzi:
Port jest częścią używanego protokołu warstwy 4 - w większości TCP lub UDP ; nie jest to związane z adresowaniem pamięci rzeczywistych komputerów, więc nie daj się zwieść 32 lub 64-bitowemu adresowaniu pamięci w nowoczesnych systemach operacyjnych.
Nagłówki tych protokołów warstwy 4 mają specjalnie zdefiniowane struktury , dla których dokładnie 16 bitów jest używanych dla portów źródłowego i docelowego. Bez zmian przełamujących zgodność protokołów warstwy 4, od których zależy cały Internet, nie można zmienić liczby portów. Nawet nowszy SCTP ma 16-bitowe ograniczenie portów.
Należy pamiętać, że te protokoły identyfikują ruch oparty nie tylko na porcie odbierającym, ale także na adresie IP odbierającym oraz na porcie wysyłającym i IP; jesteś ograniczony do 65535 nasłuchujących portów TCP (ale nie masz tak wielu) i jesteś ograniczony do 65535 połączeń z określoną usługą w określonym systemie zdalnym (niższe w praktyce, zobacz efemeryczne porty ), więc jest to rzadkie aby uruchomić limit tych protokołów, chyba że masz system tworzący wiele połączeń z określonym systemem zdalnym.
źródło