Jeśli istnieje ograniczenie liczby portów, które może posiadać jedna maszyna, a gniazdo może powiązać tylko z nieużywanym numerem portu, w jaki sposób serwery doświadczające bardzo dużych ilości (więcej niż maksymalna liczba portów) żądań sobie z tym poradzą? Czy to po prostu dlatego, że system jest rozproszony, tzn. Wiele serwerów na wielu komputerach?
29
Mylisz się - wyjątkowość gniazda zależy od czterech czynników:
Oferując usługi sieciowe, 1. i 2. zazwyczaj są statyczne (np. IP 10.0.0.1, port 80), ale chyba że oczekujesz tysięcy połączeń od jednego klienta (lub pojedynczej bramy NAT), nie będziesz naciskał granice dla możliwych kombinacji 3. i 4. zanim zabraknie zasobów lokalnych.
Tak więc, chociaż praktycznie klient nie użyje portu, który jest już używany do połączenia, aby otworzyć połączenie z innym docelowym adresem IP, wyczerpanie numeru portu będzie najmniejszym problemem dla prawie każdej aplikacji - na serwerze lub Strona klienta.
Problem jest bardzo realny w przypadku bram NAT (routerów) obsługujących klientów z dużą liczbą otwartych połączeń wychodzących (np. Torrentów) - tam zobaczysz zmniejszenie numeru portu po opróżnieniu puli portów dostępnej dla NAT. W takim przypadku brama NAT nie może utworzyć żadnych dodatkowych powiązań, co skutecznie odcina klientów od Internetu.
źródło
Pytanie brzmiało, jak obsługiwać duże (> 64k) liczby połączeń. Dwie najczęściej stosowane metody to:
Dodanie większej liczby serwerów, co zwiększa liczbę adresów src / dst i krotek numerów portów. Istnieje wiele sposobów podziału obciążenia na wiele serwerów; Okrągły robin DNS to jeden; są inni
Wdróż „NAT klasy operatorskiej” (którą przyjaciel szyderczo i poprawnie moim zdaniem określa jako „NAT klasy crummier”). Zasadniczo jest to NAT NAT. Ma to bardzo złe konsekwencje dla aplikacji, ale robią to niektórzy duzi dostawcy, gdy zabraknie miejsca na IPv4 i / lub numerów portów i / lub nie chcą przejść na IPv6.
źródło
(more than the max port number)
.