답변:
포트 번호는 매우 잘못 이해합니다. 서버는 한 포트에서만 수신하고 클라이언트가 해당 포트에 연결하는 개방형 소켓을 많이 가질 수 있습니다.
TCP 레벨에서 튜플 (소스 IP, 소스 포트, 대상 IP, 대상 포트)은 각 동시 연결마다 고유해야합니다. 이는 단일 클라이언트가 서버에 대한 65535 개 이상의 동시 연결을 열 수 없음을 의미합니다. 그러나 서버는 클라이언트 당 (이론적으로) 서버 65535 동시 연결을 할 수 있습니다 .
따라서 실제로 서버는 서버에 대한 TCP 연결 수가 아니라 요청을 처리해야하는 CPU 전력, 메모리 등으로 인해 제한됩니다.
당신은 착각합니다-소켓의 독창성은 4 가지 요소에 의해 결정됩니다 :
네트워크 서비스를 제공 할 때 1. 및 2.는 일반적으로 고정되어 있지만 (예 : IP 10.0.0.1, 포트 80) 단일 클라이언트 (또는 단일 NAT 게이트웨이) 에서 수천 개의 연결 을 기대하지 않는 한 로컬 리소스가 부족하기 전에 3. 및 4.의 가능한 조합에 대한 경계.
따라서 실제로 클라이언트는 다른 대상 IP 주소에 대한 연결을 열기 위해 연결에 이미 사용중인 포트를 사용하지 않더라도 거의 모든 응용 프로그램에서 포트 번호 고갈은 최소한의 문제가 될 것입니다. 고객 입장에서.
문제는 개방형 아웃 바운드 연결 (예 : 토렌트)이 많은 클라이언트에 NAT 게이트웨이 (라우터)가있는 실제 문제입니다. NAT에 사용 가능한 포트 풀이 비워지면 포트 번호가 고갈되는 것을 볼 수 있습니다. 이 경우 NAT 게이트웨이는 추가 연결을 만들 수 없으므로 클라이언트가 인터넷을 효과적으로 차단합니다.
문제는 대규모 (> 64k) 연결 수를 처리하는 방법이었습니다. 가장 일반적인 두 가지 방법은 다음과 같습니다.
서버를 추가하면 src / dst 주소 수와 포트 번호 튜플이 증가합니다. 여러 서버에서로드를 공유하는 여러 가지 방법이 있습니다. DNS 라운드 로빈은 하나입니다. 다른 사람이있다
"캐리어 등급 NAT"를 배포합니다 (제 생각에 친구가 정확하고 정확하게 "크루 미어 등급 NAT"라고 함). 이것은 본질적으로 NAT의 NAT입니다. 이는 응용 프로그램에 매우 나쁜 영향을 미치지 만 일부 대형 공급자는 IPv4 공간 및 / 또는 포트 번호가 부족하거나 IPv6으로 이동하고 싶지 않을 때 수행하는 작업입니다.
(more than the max port number)
.