Porty efemeryczne to tymczasowe porty klienta używane podczas połączeń z serwerem. System operacyjny przydziela je podczas połączeń wychodzących. Dzięki nim aplikacja może połączyć się z portem usługi na serwerze bez zajmowania stałego portu nasłuchującego. Połączenie klienta ma więc zwykle dwa różne porty: tymczasowy port po stronie klienta oraz port usługi po stronie serwera.
Spis treści
Jak działa połączenie klienta z serwerem
Gdy aplikacja, na przykład przeglądarka, nawiązuje połączenie z serwerem, system operacyjny przypisuje jej wolny lokalny port efemeryczny. Aplikacja korzysta z niego jako z portu źródłowego. Port docelowy należy do usługi działającej na serwerze.
- Aplikacja klienta wybiera adres serwera i port docelowy usługi.
- System operacyjny przypisuje klientowi tymczasowy port lokalny.
- Klient wysyła pakiet z własnym adresem i portem źródłowym oraz adresem i portem docelowym serwera.
- Serwer odbiera żądanie na porcie, na którym nasłuchuje dana usługa.
- Odpowiedź serwera wraca do tymczasowego portu klienta.
Połączenie jest rozpoznawane nie tylko po numerze portu. Znaczenie ma zestaw informacji obejmujący adres źródłowy, port źródłowy, adres docelowy i port docelowy. Dzięki temu jeden komputer może jednocześnie otworzyć wiele połączeń do tej samej usługi.
Port efemeryczny a port usługi
Port efemeryczny nie jest tym samym co port, na którym działa usługa. Serwer może nasłuchiwać na stałym porcie, a klient używa za każdym razem tymczasowego portu źródłowego.
| Element połączenia | Rola |
|---|---|
| Port źródłowy klienta | Tymczasowy port efemeryczny przypisany do połączenia wychodzącego. |
| Port docelowy serwera | Port, na którym nasłuchuje usługa serwera. |
| Port nasłuchujący | Stały port otwarty przez aplikację oczekującą na połączenia. |
Reguła zapory może więc dotyczyć portu docelowego serwera albo lokalnego portu źródłowego klienta. Zablokowanie ruchu na porcie usługi i wyczerpanie puli portów efemerycznych to dwa różne problemy. W pierwszym przypadku klient może mieć wolne porty, ale nie może dotrzeć do usługi. W drugim usługa może być dostępna, lecz system klienta nie ma wolnego portu do utworzenia kolejnego połączenia.
Jakie zakresy mają porty efemeryczne
Zakres portów efemerycznych zależy od systemu operacyjnego i jego konfiguracji. Nie istnieje jeden zakres obowiązujący na wszystkich urządzeniach.
- W systemach Windows używany zakres dynamiczny obejmuje porty
49152-65535. Szczegóły działania zakresu dynamicznego opisuje dokumentacja Microsoft dotycząca wyczerpania portów TCP/IP: TCP/IP port exhaustion troubleshooting. - W systemach Linux często spotyka się zakres
32768-60999. Zakres portów efemerycznych i zarezerwowanych opisano w materiale Ephemeral Reserved Port Numbers. - Na komputerach Mac zakres portów efemerycznych jest opisywany jako zakres używany przez system do krótkotrwałych połączeń wychodzących. Przegląd tej roli portów zawiera materiał What Are Ephemeral Ports?.
Podane zakresy są przykładami zależnymi od systemu. Przy diagnostyce należy sprawdzić zakres obowiązujący na konkretnym urządzeniu, ponieważ konfiguracja może go zmieniać.
Co zmienia NAT
NAT, czyli translacja adresów sieciowych, zmienia prywatny adres i port źródłowy klienta na publiczny adres i port używany podczas komunikacji z Internetem. Router lub brama NAT utrzymuje mapowanie, aby odpowiedź serwera mogła wrócić do właściwego urządzenia w sieci lokalnej.
Wspólny publiczny adres może obsługiwać połączenia wielu klientów. Każde mapowanie musi jednak pozwalać rozróżnić połączenie. Gdy urządzenia tworzą bardzo wiele połączeń, pula dostępnych mapowań lub portów może się wyczerpać. Taki problem jest nazywany wyczerpaniem portów NAT. Jego opis i wpływ na połączenia wychodzące przedstawia dokumentacja Understanding NAT Port Exhaustion.
Jak rozpoznać blokadę albo wyczerpanie portów
Najpierw ustal, po której stronie występuje problem: na kliencie, na serwerze czy na urządzeniu wykonującym NAT. Następnie sprawdź:
- czy aplikacja tworzy połączenie wychodzące i jaki port docelowy wykorzystuje,
- czy zapora zezwala na ruch do portu usługi,
- czy klient ma wolne porty efemeryczne,
- czy brama NAT nie utrzymuje zbyt wielu aktywnych mapowań,
- czy problem dotyczy wszystkich połączeń, czy tylko określonego serwera lub portu.
Jeśli próby połączenia kończą się przy konkretnym porcie usługi, sprawdź reguły zapory oraz dostępność tego portu. Jeśli problem pojawia się przy wielu różnych usługach, sprawdź liczbę aktywnych połączeń klienta i stan mapowań NAT. Dokumentacja Microsoft opisuje diagnostykę sytuacji, w której system Windows nie może przydzielić kolejnych portów TCP: TCP/IP port exhaustion troubleshooting.
Najważniejsze zasady
- Port efemeryczny jest tymczasowym portem źródłowym klienta.
- Port usługi jest portem docelowym, na którym serwer przyjmuje połączenia.
- Zakres portów efemerycznych zależy od systemu operacyjnego.
- NAT może zmieniać adres i port źródłowy oraz tworzyć własne mapowania.
- Blokada portu usługi i wyczerpanie portów efemerycznych wymagają odrębnej diagnostyki.
