Dlaczego jest tylko 65 535 portów i czy kiedykolwiek będziemy mieli więcej? [Zamknięte]


20

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.


Myślę, że musisz zadać IANA te pytania, które kontrolują zasoby. Myślę, że musisz także przeczytać przewodnik TCP / IP, ponieważ niektóre twoje zrozumienie wydaje się błędne.
user9517 obsługuje GoFundMonica

1
Tak, pomyślałem. Próbowałem powiedzieć tyle, ile zrozumiałem, ale jak widać, nie rozumiem wszystkiego.
trysis

7
Co jest nie na temat tego pytania? Zastanawiam się.
trysis

1
Zrezygnowałem też z zadawania pytań na tych stronach. W dzisiejszych czasach wszystko wydaje się nie na temat ...
Nuno,

Protokół IPv6 ogranicza liczbę portów, oferując komputerowi / 64 adresów do użycia.
J.Money

Odpowiedzi:


28

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.


3
Zawsze sprowadza się do kompatybilności wstecznej, prawda? Dlaczego możemy przejść na IPv6, co pozwala na tak wiele więcej adresów IP, co jest absurdalne, ale nie możemy mieć więcej portów? To moja główna irytacja.
trysis

2
@trysis Racja - przejście z IPv4 na IPv6 jest dobrym porównaniem do tego, co trzeba przejść do wersji TCP i UDP z większą ilością bitów w nagłówku portu. A jeśli nie zauważyłeś, to był powolny i bolesny proces, aby uzyskać globalne wdrożenie IPv6 tam, gdzie jest teraz (przy 1-2% ruchu na całym świecie z niego korzysta). W przypadku IPv4 konieczna była przemiana - wyczerpanie. Z drugiej strony brak miejsca w portach w tych protokołach nie jest częstym problemem, więc nie ma istotnej potrzeby wprowadzania ogromnych zmian, które byłyby konieczne, aby to się stało.
Shane Madden

Och, to ma więcej sensu. Dzięki. Może kiedyś poczujemy potrzebę, ale przypuszczam, że masz rację, że tej potrzeby już nie ma.
trysis

Mam nadzieję, że jeśli kiedykolwiek przejdziemy te wszystkie kłopoty, możemy wymyślić coś lepszego niż adresowanie portów oparte na liczbach całkowitych. Coś takiego jak porty oparte na UUID byłoby niesamowite. Albo rzeczywiste przestrzenie nazw byłyby jeszcze bardziej opisowe i wyeliminowałyby potencjalne konflikty między aplikacjami. Wyobraź sobie ustawienie portu do przekazywania dla przestrzeni nazw „com.windows.local.yourdomain.server001” lub coś w tym rodzaju.
njbair

więc jeśli dwa komputery razem tworzą 65 535 połączeń lub są podobne do komputerów PC spoza NAT, żaden inny komputer nie będzie miał dostępu do itnernet. Mam rację?
Denis
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.