다음을 통해 공유


SO_PORT_SCALABILITY

SO_PORT_SCALABILITY 소켓 옵션을 사용하면 소켓에 대한 로컬 포트 확장성을 사용할 수 있습니다.

SO_PORT_SCALABILITY

0x3006

SO_PORT_SCALABILITY 소켓 옵션을 사용하면 로컬 컴퓨터의 다른 로컬 주소 포트 쌍에 대해 와일드카드 포트를 여러 번 할당하여 포트 할당을 최대화하여 로컬 포트 확장성을 사용할 수 있습니다.

설명

참고: SO_PORT_SCALABILITY 및 SO_REUSE_UNICASTPORT 모두 지원되는 플랫폼에서는 SO_REUSE_UNICASTPORT 사용하는 것을 선호합니다.

프록시 서버 환경에는 제한된 로컬 포트 가용성으로 인해 확장성 문제가 있습니다. 이 작업을 수행하는 한 가지 방법은 컴퓨터에 IP 주소를 더 추가하는 것입니다. 그러나 기본적으로 바인딩 함수와 함께 사용되는 와일드카드 포트는 로컬 컴퓨터의 IP 주소 수에 관계없이 로컬 컴퓨터의 동적 포트 범위 크기(최대 64K 포트는 64K 포트 이하)로 제한됩니다. 이 문제를 해결하려면 애플리케이션이 포트 예약을 사용하거나 추론을 사용하여 자체 포트 풀을 유지 관리해야 합니다.

확장성이 필요한 모든 애플리케이션이 자체 포트 풀을 관리하는 것을 방지하고 애플리케이션 호환성을 유지하면서 확장성을 높이기 위해 Windows Server 2008에서는 와일드카드 포트 할당을 최대화하는 데 도움이 되는 SO_PORT_SCALABILITY 소켓 옵션을 도입했습니다. 각 고유한 로컬 주소 및 포트 쌍에 대해 애플리케이션이 와일드카드 포트를 할당할 수 있도록 하여 포트 할당이 최대화됩니다. 따라서 로컬 머신에 4개의 IP 주소가 있는 경우 와일드카드 바인딩 함수 요청에 의해 최대 256K 와일드카드 포트(64K 포트 × 4개의 IP 주소)를 할당할 수 있습니다.

소켓에 SO_PORT_SCALABILITY 소켓 옵션이 설정되고 지정된 주소 및 와일드카드 포트(이름 매개 변수가 특정 주소 및 포트 0으로 설정됨)에 대해 바인딩 함수를 호출하면 Winsock은 지정된 주소에 대한 포트를 할당합니다. 이 할당은 로컬 컴퓨터에서 가능한 모든 IP 주소 및 포트/주소당을 기반으로 합니다. SO_PORT_SCALABILITY 옵션을 사용하여 와일드카드 포트를 가져오는 경우 SO_PORT_SCALABILITY옵션 없이 는 다른 소켓에서 해당 포트를 할당할 수 없습니다. 와일드카드 로컬 포트를 다시 사용할 수 없다고 가정하는 애플리케이션의 이전 버전과의 호환성 문제를 방지하기 위해 이 제한이 적용됩니다. 즉, SO_PORT_SCALABILITY 사용하여 많은 수의 포트를 획득하는 애플리케이션은 포트의 레거시 애플리케이션을 굶어 버리게 됩니다. SO_PORT_SCALABILITY 를 사용하여 하나 이상의 주소에 대해 사용 가능한 모든 임시 포트를 획득한 경우 소켓 옵션 없이는 와일드카드 포트 할당이 더 이상 불가능합니다.

영향을 주려면 바인딩 함수가 호출되기 전에 SO_PORT_SCALABILITY 옵션을 설정해야 합니다. 주소가 두 개 있는 컴퓨터에서 이 방법을 사용하는 방법의 예는 다음과 같습니다.

  • 소켓 함수는 소켓을 만드는 프로세스에 의해 호출됩니다.
  • setsockopt 함수는 새로 만든 소켓에서 SO_PORT_SCALABILITY 소켓 옵션을 사용하도록 설정하기 위해 호출됩니다.
  • 바인딩 함수는 로컬 컴퓨터의 IP 주소 및 포트 0 중 하나에서 바인딩을 수행하도록 호출됩니다.
  • 그런 다음 연결 함수가 호출되어 원격 IP 주소에 연결합니다. 소켓은 필요에 따라 애플리케이션에서 사용됩니다.
  • 소켓 함수는 동일한 프로세스(아마도 다른 스레드)에 의해 호출되어 두 번째 소켓을 만듭니다.
  • setsockopt 함수는 새로 만든 두 번째 소켓에서 SO_PORT_SCALABILITY 소켓 옵션을 사용하도록 설정하기 위해 호출됩니다.
  • 바인딩 함수는 로컬 컴퓨터의 두 번째 IP 주소 및 포트 0을 사용하여 호출됩니다. 모든 포트가 이전에 할당된 경우에도 로컬 컴퓨터에서 사용할 수 있는 IP 주소가 여러 개 있고 동일한 프로세스의 두 소켓에서 SO_PORT_SCALABILITY 소켓 옵션이 설정되었기 때문에 이 호출이 성공합니다.
  • 그런 다음 연결 함수가 호출되어 원격 IP 주소에 연결합니다. 두 번째 소켓은 필요에 따라 애플리케이션에서 사용됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트
지원되는 버전 없음
지원되는 최소 서버
Windows Server 2008 [데스크톱 앱만 해당]
헤더
Ws2def.h

추가 정보

getsockopt

setsockopt

SOL_SOCKET 소켓 옵션

소켓 옵션