Czy serwer TCP jest ograniczony do 65535 klientów?


10

Można by pomyśleć, że nakłada to sztywny limit na liczbę klientów obsługiwanych przez jeden komputer / aplikację.

Można nadzorować serwer WWW i wymagać, aby można go było skalować do poziomów użytkowania, które przekraczają około 65 000 połączeń.

W przypadku oprogramowania istnieją pewne osobne kwestie ( /programming/1575453/how-many-socket-connections-can-a-web-server-handle )


Czy jakaś odpowiedź ci pomogła? Jeśli tak, powinieneś zaakceptować odpowiedź, aby pytanie nie wyskakiwało wiecznie, szukając odpowiedzi. Alternatywnie możesz podać i zaakceptować własną odpowiedź.
Ron Maupin

Odpowiedzi:


16

Krótka odpowiedź brzmi: nie, to nie jest limit.

Pole TCP Port jest 2x bajty i posiada pewną ilość 65536. Liczba ta ogranicza ilość adresów serwer może mieć. Ale to nie ogranicza liczby klientów do ~ 64 tys. Każdy pakiet TCP ma dwa pola Port, jedno dla miejsca docelowego i jedno dla źródła (a także dwa adresy IP).

Dane połączenie TCP jest krotką źródła i miejsca docelowego, każde z adresem IP i numerem portu. Miejsce docelowe (po stronie serwera) pozostaje stałe, ale adres źródłowy (po stronie klienta) może się różnić zarówno dla portu I adresu IP.

Rozważać:

  • Adres IP serwera - 100.0.0.1 (Naprawiony)
  • Port serwera - 80 (naprawiony)
  • Adres IP klienta - 0.0.0.0 - 255.255.255.255 (zakres 32-bitowy)
  • Port klienta - 0 - 65535 (zakres 16 bitów)

Tak, klient (lub biuro) z jednym adresem IP może połączyć się z serwerem tylko 65535 razy jednocześnie, ale jeśli ten klient (lub biuro) miał wiele adresów IPv4, może połączyć wiele wielokrotności tego więcej.

Zazwyczaj miliony adresów IP są używane na wielu urządzeniach klienckich, a jeśli miałyby używać tylko jednego portu źródłowego, aby połączyć się z portem jednego serwera, to już widać potencjał, by wyjść poza liczbę 65536.

Teoretyczna matematyczna granica protokołu IP / TCP wynosi 2 ^ 32 * 2 ^ 16. Praktycznie liczba adresów IP jest mniejsza - trzeba by odjąć dla niektórych zastrzeżonych bloków IP. Praktycznie także liczba portów po stronie klienta jest niższa, ponieważ typowy komputer kliencki będzie uruchamiał wiele aplikacji łączących się z innymi serwerami, co również zmniejsza pulę portów TCP, ale ta pula jest rzadko wykorzystywana - po zakończeniu sesji TCP numer portu jest ponownie dostępny w basenie.

Uwaga: W przypadku IPv6 liczba adresów IP znacznie wzrasta, ale pole Port dla TCP pozostaje tego samego rozmiaru.

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.