다음을 통해 공유


무선 호스팅 네트워크, 인터넷 연결 공유 사용

무선 호스팅 네트워크는 Windows 7 및 Windows 8 지원되는 새로운 WLAN 기능입니다. 무선 LAN 서비스가 설치된 Windows Server 2012 및 Windows Server 2008 R2에서도 지원됩니다. 이 기능은 다음 두 가지 주요 함수를 구현합니다.

  • 가상 Wi-Fi라고도 하는 두 개 이상의 가상 무선 어댑터로 실제 무선 어댑터를 가상화합니다.
  • 지정된 가상 무선 어댑터를 사용하는 SoftAP라고도 하는 AP(소프트웨어 기반 무선 액세스 지점).

ICS(인터넷 연결 공유)는 SharedAccess 서비스를 통해 제공되는 Windows의 기능입니다. 엄밀히 말하면 SharedAccess는 공유 네트워크 액세스가 반드시 인터넷에 대한 액세스를 제공하지 않는 컴퓨터를 통해 네트워크 공유를 가능하게 합니다. 인터넷 연결 공유는 무선 호스팅 네트워크의 주요 시나리오이며 ICS 용어는 사용자 커뮤니티에 더 잘 알려지므로 이 섹션에서는 ICS 및 SharedAccess라는 용어를 서로 교환하여 사용합니다.

무선 호스팅 네트워크는 ICS와 긴밀하게 연결되어 PAN(무선 개인 영역 네트워크)과 인터넷 공유 시나리오를 모두 사용할 수 있습니다. 이 섹션에서는 공용 무선 호스트 네트워크 및 ICS API를 사용하여 무선 호스트 네트워크 및 ICS를 통합하는 방법에 대한 일반적인 권장 사항을 애플리케이션 개발자에게 제공합니다.

인터넷 연결 공유

ICS 서비스는 가능한 두 가지 모드 중 하나로 작동합니다.

  • 독립 실행형 모드

    ICS 서비스가 호출될 때 DHCPv4 서버 함수만 작동합니다. ICS용 특수 작업 모드이며 무선 호스트 네트워크를 통해서만 사용할 수 있습니다. 사용자 또는 애플리케이션은 공용 ICS API 또는 netsh 명령을 통해 독립 실행형 ICS를 직접 시작하고 중지할 수 없습니다. 무선 호스트 네트워크를 시작하려면 일반적으로 독립 실행형 모드에서 ICS를 시작하여 DHCPv4 서버 함수를 사용하여 연결된 디바이스에 대한 개인 IPv4 주소를 제공해야 합니다. 연결된 디바이스에 대한 네트워크 통신은 연결된 디바이스와 무선 호스트 네트워크를 호스트하는 로컬 컴퓨터와 연결된 디바이스 간에 네트워크 패킷을 보내고 받는 것으로 제한됩니다. 이를 통해 무선 호스팅 네트워크에 대한 무선 개인 영역 네트워크 시나리오를 효과적으로 사용할 수 있습니다.

  • 전체 모드

    IPv4 및 IPv6 모두에 대한 네트워크 주소 변환 및 DHCP 서버 함수와 같이 서비스가 호출될 때 ICS의 모든 기능이 작동합니다. 이는 ICS에 대한 일반적인 작업 모드입니다. 사용자 또는 애플리케이션은 공용 API 또는 netshell 명령을 통해 전체 ICS 모드를 시작하고 중지할 수 있습니다. 예를 들어 이 서비스는 관리자 권한 명령 프롬프트에서 net stop sharedaccess를 사용하여 중지할 수 있습니다. 무선 호스트 네트워크를 전체 ICS와 결합하면 연결된 디바이스에 대한 네트워크 통신은 무선 PAN으로 제한되지 않습니다. 연결된 모든 디바이스는 무선 호스트 네트워크를 실행하는 컴퓨터에서 공유 네트워크 연결을 통해 네트워크(예: 인터넷)에 액세스할 수 있습니다. 이를 통해 무선 호스팅 네트워크에 대한 네트워크 공유 시나리오를 효과적으로 사용할 수 있습니다.

이 섹션에서는 전체 ICS라는 용어를 사용하여 모든 ICS 함수가 ICS 서비스에서 호출되는 경우를 의미하여 무선 호스티드 네트워크를 통해 모든 전체 ICS 기능에 대한 액세스를 제공합니다.

두 ICS 작업 모드는 전체 ICS가 더 높은 우선 순위를 가지는 상호 배타적입니다. ICS 서비스는 독립 실행형 모드에서 전체 모드로 전환할 수 있지만 전체 모드에서 독립 실행형 모드로 전환할 수는 없습니다. ICS 독립 실행형 모드는 무선 호스트 네트워크 기능과 함께 무선 LAN 서비스가 설치된 Windows 7 및 Windows Server 2008 R2에서 도입되었습니다. 이전 버전의 Windows에서는 사용할 수 없습니다.

모든 전체 ICS 작업에는 시스템의 두 가지 네트워크 어댑터가 포함됩니다.

  • 공용 인터페이스입니다. 인터넷에 액세스할 수 있는 네트워크 인터페이스입니다. ICS를 실행하는 로컬 컴퓨터가 SoftAP를 통해 연결하는 클라이언트 및 디바이스와 인터넷을 공유하는 데 사용하는 인터페이스입니다.
  • 프라이빗 인터페이스입니다. 다른 디바이스가 ICS를 실행하는 로컬 컴퓨터에 연결하는 데 사용하는 네트워크 인터페이스입니다. DHCPv4 서버는 다른 원격 컴퓨터에 개인 로컬 IP 주소를 제공하기 위해 이 프라이빗 인터페이스에서 실행됩니다.

공용 인터페이스에 인터넷에 액세스할 수 없는 경우 프라이빗 인터페이스의 DHCP 서버는 연결된 디바이스에 로컬 IP 주소를 계속 제공합니다. 독립 실행형 ICS에는 SoftAP가 실행되는 프라이빗 인터페이스만 포함됩니다. 공용 인터페이스는 포함되지 않습니다.

언제든지 로컬 컴퓨터에서 실행되는 전체 ICS의 최대 instance 있습니다. 전체 ICS가 이미 로컬 컴퓨터에서 실행 중인 경우 다른 전체 ICS를 시작하면 다음과 같은 기능 동작이 표시됩니다.

  • 새 전체 ICS의 공용 및 프라이빗 인터페이스가 기존 전체 ICS와 동일한 경우 두 번째 전체 ICS를 시작하는 것은 no-op과 동일합니다.
  • 새 공용 인터페이스가 이전 공용 인터페이스와 다르지만 새 프라이빗 인터페이스가 이전 프라이빗 인터페이스와 동일한 경우 두 번째 전체 ICS를 시작하면 동일한 프라이빗 인터페이스의 연결된 디바이스에 거의 영향을 주지 않습니다. 인터넷에 액세스하는 기능은 새 공용 인터페이스로 변경 될 수 있습니다.
  • 새 프라이빗 인터페이스가 이전 프라이빗 인터페이스와 다른 경우 ICS 함수는 이전 프라이빗 인터페이스에서 작업을 중지하고 새 프라이빗 인터페이스에 적용을 시작합니다. 이전 프라이빗 인터페이스를 사용하여 로컬 컴퓨터에 연결하는 모든 원격 디바이스는 로컬 컴퓨터에 대한 IP 연결을 잃게 됩니다.

전체 ICS가 이미 실행 중인 경우 두 번째 ICS 통합이 다른 새 프라이빗 인터페이스를 사용하는 한 두 번째 전체 ICS 호출은 이전 프라이빗 인터페이스를 사용하여 원격으로 연결된 디바이스에 지장을 줍니다.

ICS 서비스를 관리하고 사용하여 무선 호스트 네트워크와의 ICS 통합을 지원하려면 먼저 소프트웨어 애플리케이션 이 INetSharingManager 인터페이스를 가져와야 합니다. INetSharingManager 인터페이스는 ICS API의 다른 모든 COM 인터페이스에 직접 또는 간접적으로 액세스를 제공합니다. INetSharingManager 인터페이스의 get_SharingInstalled 메서드는 로컬 컴퓨터가 연결 공유를 지원하는지 여부를 보고합니다. INetSharingManager 인터페이스의 get_EnumEveryConnection 메서드는 연결 폴더의 모든 연결에 대한 열거형 인터페이스를 검색합니다. get_INetSharingConfigurationForINetConnection 메서드는 지정된 연결에 대한 INetSharingConfiguration 인터페이스를 검색합니다. INetSharingConfiguration 인터페이스의 메서드를 사용하여 ICS 설정을 쿼리하고 변경할 수 있습니다.

연결 폴더의 모든 연결을 열거하려면 INetSharingManager 인터페이스에서 get_EnumEveryConnection 메서드를 호출하기 전에 무선 호스트 네트워크를 시작해야 합니다.

ICS 설정을 쿼리하고 변경하는 데 사용할 수 있는 ICS 및 공용 인터페이스 및 메서드에 대한 자세한 내용은 인터넷 연결 공유 및 인터넷 연결 방화벽 정보 설명서를 참조하세요.

호스트된 네트워크 및 ICS 통합

전체 ICS가 실행되지 않는 경우 무선 호스트 네트워크를 시작하면 무선 호스트 네트워크 인터페이스에서 연결된 디바이스에 대한 IP 주소를 할당하는 DHCPv4 서버 함수만 있는 독립 실행형 모드에서도 ICS 서비스가 내부적으로 시작됩니다. 독립 실행형 DHCPv4 서버의 서브넷 주소 범위는 192.168.173.0/24입니다. 이는 전체 ICS와 함께 사용되는 서브넷 범위 192.168.137.0/24와 다릅니다.

전체 ICS를 사용하여 무선 호스트 네트워크를 시작하면 다음 논리가 사용됩니다.

  • 전체 ICS가 아직 실행되고 있지 않으면 무선 호스트 네트워크를 시작하면 독립 실행형 DHCPv4 서버로 ICS 서비스도 시작됩니다.
  • 전체 ICS가 이미 실행 중이고 프라이빗 인터페이스가 무선 호스트 네트워크 인터페이스인 경우 무선 호스트 네트워크를 시작합니다.
  • 전체 ICS가 이미 실행 중이지만 프라이빗 인터페이스가 무선 호스티드 네트워크 인터페이스가 아닌 경우 무선 호스트 네트워크 인터페이스의 DHCPv4 서버 함수 없이 무선 호스트 네트워크가 시작됩니다.

위의 논리의 영향은 다음과 같은 사실을 강조 표시합니다.

  • ICS는 전체 모드에서 독립 실행형 모드로 전환되지 않습니다.
  • 독립 실행형 모드는 ICS가 전체 모드로 실행되지 않는 경우에만 무선 호스트 네트워크에서 호출할 수 있습니다.
  • ICS가 독립 실행형 모드에서 실행되는 경우 사용자 또는 애플리케이션이 전체 모드에서 ICS를 시작하는 경우 전체 모드로 선점됩니다.
  • 전체 ICS의 프라이빗 인터페이스가 SoftAP용 인터페이스와 동일하지 않으면 ICS에서 독립 실행형 모드에서 전체 모드로 전환하면 무선 PAN의 연결된 디바이스에 지장을 줄 수 있습니다.

전체 또는 독립 실행형 모드에서 로컬 컴퓨터에서 ICS 서비스를 시작하거나 중지하는 데 시간이 걸립니다. 애플리케이션은 NotifyServiceStatusChange 함수를 사용하여 ICS 서비스의 상태를 검사 ICS 서비스가 ICS 통합에 사용하기 위해 무선 호스트 네트워크를 시작하거나 중지하기 전에 시작/중지 보류 상태에 있지 않은지 확인해야 합니다.

무선 호스팅 네트워크 시작 및 중지

Windows는 둘 이상의 동시 애플리케이션이 동시에 무선 호스트 네트워크를 관리할 수 있는 플랫폼을 제공합니다. 특히 각 애플리케이션은 다른 애플리케이션에 대한 사전 지식 없이 자체적으로 무선 호스트 네트워크를 시작하고 중지할 수 있습니다.

호스트된 네트워크를 시작하고 중지하는 두 가지 함수 집합이 있습니다.

여러 애플리케이션에서 무선 호스트 네트워크를 사용해야 할 수 있습니다. WlanHostedNetworkStartUsingWlanHostedNetworkStopUsing 함수는 다른 동시 애플리케이션과 호환되는 방식으로 무선 호스트 네트워크를 시작하고 중지합니다. WlanHostedNetworkStartUsingWlanHostedNetworkStopUsing 함수를 사용하면 애플리케이션이 무선 호스트 네트워크에 대한 참조를 가질 수 있습니다. 이 메커니즘은 하나 이상의 다른 애플리케이션이 무선 호스티드 네트워크에 대한 현재 참조가 있는 경우 무선 호스팅 네트워크를 계속 실행합니다. 모든 사용자가 이러한 함수를 호출할 수 있습니다. WlanHostedNetworkStartUsing에 대한 성공적인 호출은 WlanHostedNetworkStopUsing 함수에 대한 호출과 일치해야 합니다. WlanHostedNetworkStartUsing 함수로 인한 호스트된 네트워크 상태 변경은 호출 애플리케이션이 호출 핸들을 닫거나(WlanHostedNetworkStartUsing에 전달된 동일한 hClientHandle 매개 변수를 사용하여 WlanCloseHandle을 호출하여) 프로세스가 종료되는 경우 자동으로 실행 취소됩니다.

WlanHostedNetworkForceStartWlanHostedNetworkForceStop 함수는 무선 호스트 네트워크를 강제로 시작하고 중지합니다. 이러한 함수는 사용자에게 적절한 상승된 권한이 있는 경우에만 호출할 수 있습니다. WlanHostedNetworkForceStart에 대한 성공적인 호출은 결국 애플리케이션 디자인에 따라 WlanHostedNetworkForceStop 함수에 대한 호출과 일치할 수 있습니다. 이러한 함수는 요청을 애플리케이션의 호출 핸들과 연결하지 않고 무선 호스트 네트워크 상태를 전환합니다. WlanHostedNetworkForceStart 함수로 인한 호스트된 네트워크 상태 변경은 호출 애플리케이션이 호출 핸들을 닫거나(WlanHostedNetworkStartUsing에 전달된 동일한 hClientHandle 매개 변수를 사용하여 WlanCloseHandle을 호출하여) 프로세스가 종료되는 경우 자동으로 실행 취소되지 않습니다. WlanHostedNetworkForceStart 함수를 호출한 애플리케이션이 무선 호스트 네트워크를 중지하기 위해 함수 중 하나를 호출하지 않고 닫히면 호스트된 네트워크가 계속 실행됩니다. 상승된 시스템 사용자가 무선 호스티드 네트워크 실행과 관련된 향상된 전원 요구 사항을 장시간 수락하도록 한 후 애플리케이션에서 WlanHostedNetworkForceStart 함수를 호출할 수 있습니다.

무선 호스팅 네트워크를 시작하고 중지하기 위해 호출하는 기능에 대한 일반적인 권장 사항은 다음과 같습니다.

  • 애플리케이션 내에서 WlanHostedNetworkStartUsingWlanHostedNetworkStopUsing 함수를 사용하여 무선 호스트 네트워크를 시작하고 중지합니다.
  • WlanHostedNetworkForceStart 함수를 사용하여 무선 호스트 네트워크를 시작하지 마세요. WlanHostedNetworkForceStart 함수에는 상승된 권한도 필요합니다.
  • WlanHostedNetworkForceStop 함수만 복구 방법으로 사용합니다. WlanHostedNetworkForceStop 함수를 사용하면 무선 호스트 네트워크가 즉시 중지됩니다. 무선 호스팅 네트워크 알림을 수신 대기하는 다른 애플리케이션은 복구 작업을 수행해야 할 수 있습니다. 자세한 내용은 무선 호스트 네트워크에 대한 복구 순서에 대한 아래 설명을 참조하세요.

무선 호스팅 네트워크에 대한 시퀀스 시작

전체 ICS를 사용하여 무선 호스트 네트워크를 시작하는 애플리케이션의 경우 무선 호스트 네트워크를 시작한 다음 전체 ICS를 시작하는 것이 좋습니다. 무선 호스트 네트워크가 이미 실행 중인 경우 애플리케이션은 WlanHostedNetworkForceStop 함수를 사용하여 전체 ICS가 필요하지만 호스트된 네트워크가 시작되기 전에 사용하도록 설정되지 않은 경우에만 무선 호스트 네트워크를 중지해야 합니다. 이렇게 하면 다른 애플리케이션이 전체 ICS 시작으로 인한 잠재적인 중단으로부터 복구할 수 있습니다. 자세한 내용은 무선 호스트 네트워크에 대한 복구 순서에 대한 아래 설명을 참조하세요. 결합된 작업은 전체적으로 성공하고 실패해야 합니다.

참고

IEnumNetSharingEveryConnection 인터페이스를 사용하여 해당 어댑터를 열거하기 전에 무선 호스트 네트워크를 시작해야 합니다.

 

다음 순서가 지정된 단계는 전체 ICS가 있는 무선 호스트 네트워크를 사용하는 애플리케이션에서 권장되는 시작 시퀀스입니다.

  • WlanHostedNetworkInitSettings 함수를 호출하여 무선 Hosted Network가 구성되어 있고 사용할 준비가 되었는지 확인합니다.
  • WlanHostedNetworkQueryStatusWlanHostedNetworkQueryProperty 함수를 호출하여 무선 Hosted Network가 허용되고 사용 가능한지 확인합니다. 무선 호스트 네트워크가 허용되지 않고 사용할 수 없는 경우 오류를 반환합니다.
  • 전체 ICS에 사용되는 ICS 서비스가 허용되는지 테스트합니다. ICS 서비스를 시작할 수 없는 경우 오류를 반환합니다.
  • WlanHostedNetworkForceStop 함수를 호출하여 무선 호스티드 네트워크를 강제로 중지합니다.
  • WlanHostedNetworkStartUsing 함수를 호출하여 무선 호스트 네트워크를 시작합니다.
  • 무선 Hosted Network가 시작되지 않으면 오류를 반환합니다.
  • 전체 ICS가 이미 실행 중이고 현재 공용 또는 프라이빗 인터페이스가 사용할 새 인터페이스와 다른 경우 현재 공용 및 프라이빗 인터페이스를 캐시합니다. ICS 통합이 이미 실행 중인 경우 애플리케이션에서 오류를 반환하거나 사용자에게 메시지를 표시하도록 선택할 수도 있습니다.
  • 퍼블릭 및 프라이빗 인터페이스에 대한 새 설정으로 전체 ICS를 시작합니다.
  • 전체 ICS가 이러한 설정으로 시작되지 않으면 전체 ICS가 이전에 실행된 경우 캐시된 공용 및 프라이빗 인터페이스를 사용하여 전체 ICS 서비스를 시작합니다. WlanHostedNetworkForceStop 함수를 호출하여 무선 호스트 네트워크를 중지하고 오류를 반환합니다.
  • 무선 호스티드 네트워크 및 전체 ICS가 성공한 성공을 반환합니다.

무선 호스트 네트워크에 대한 시퀀스 중지

전체 ICS에서 무선 호스트 네트워크를 사용하는 경우 작업을 완료한 애플리케이션은 무선 호스트 네트워크 및 전체 ICS에 사용되는 ICS 서비스를 중지할 수 있습니다. 이 경우 WlanHostedNetworkStopUsing 함수를 호출하는 대신 호스트된 네트워크를 중지하기 위해 WlanHostedNetworkForceStop 함수를 호출하는 것이 좋습니다. WlanHostedNetworkForceStop 함수는 무선 Hosted Network를 중지하고 다른 애플리케이션이 복구될 수 있도록 하는 역할을 합니다. 자세한 내용은 무선 호스트 네트워크에 대한 복구 순서에 대한 아래 설명을 참조하세요.

다음 순서가 지정된 단계는 무선 호스트 네트워크 및 전체 ICS를 사용하는 애플리케이션에서 권장되는 중지 시퀀스입니다.

  • 전체 ICS를 중지합니다.
  • WlanHostedNetworkForceStop 함수를 호출하여 무선 호스트 네트워크를 중지합니다.

전체 ICS가 없는 무선 호스트 네트워크를 사용하는 애플리케이션은 무선 호스트 네트워크를 중지하려면 WlanHostedNetworkStopUsing 또는 WlanHostedNetworkForceStop 함수를 호출하면 됩니다. 무선 호스트 네트워크를 시작하기 위해 WlanHostedNetworkStartUsing 함수가 호출된 경우 애플리케이션은 WlanHostedNetworkStopUsing 함수를 호출하여 무선 호스티드 네트워크를 중지해야 합니다. 무선 호스티드 네트워크가 애플리케이션 또는 WlanHostedNetworkForceStart 함수라는 애플리케이션 전에 이미 시작된 경우 애플리케이션은 WlanHostedNetworkForceStop 함수를 호출하여 무선 호스트 네트워크를 중지하거나 시나리오에 따라 아무 작업도 수행하지 않습니다(무선 호스트된 네트워크 시작).

무선 호스트 네트워크에 대한 복구 시퀀스

무선 호스티드 네트워크를 사용하는 애플리케이션은 다른 애플리케이션의 작업의 영향을 받을 수 있습니다. ICS 서비스 및 ICS를 관리하기 위한 인터페이스는 애플리케이션이 ICS 변경 알림에 등록하는 방법을 제공하지 않습니다. 다른 애플리케이션이 INetSharingConfiguration 인터페이스에서 EnableSharing 또는 DisableSharing 메서드를 호출하여 연결에서 공유를 사용하거나 사용하지 않도록 설정하는 경우 메시지가 다른 애플리케이션이 아닌 로컬 컴퓨터의 사용자 인터페이스(화면)로 전송됩니다. 따라서 애플리케이션은 ICS 또는 무선 호스티드 네트워크 변경이 발생할 때 복구 작업을 수행하기 위해 무선 호스트된 네트워크 알림에 의존해야 합니다.

무선 호스트 네트워크를 사용하는 애플리케이션은 WlanRegisterNotification을 호출하여 무선 호스트 네트워크 알림을 등록해야 합니다. 무선 Hosted Network에 대한 알림만 필요한 경우 애플리케이션은 WlanRegisterNotification에 전달된 dwNotifSource 매개 변수의 WLAN_NOTIFICATION_SOURCE_HNWK 전달해야 합니다. 다른 무선 알림도 필요한 경우 WLAN_NOTIFICATION_SOURCE_HNWK 원하는 다른 유형의 무선 알림에 대한 알림 원본 상수와 결합하고 dwNotifSource 매개 변수에 이 값을 전달해야 합니다.

복구 순서는 애플리케이션이 ICS 서비스를 다시 시작하지 않으려는 경우 전체 ICS를 사용하거나 사용하지 않는 애플리케이션에 대해 동일합니다. 호스트된 네트워크가 중지되었다는 무선 호스트 네트워크 알림을 받으면 다음을 수행합니다.

연결된 디바이스에 대한 복구 시퀀스

무선 호스트 네트워크에 연결된 원격 디바이스 또는 컴퓨터는 ICS 및 무선 호스트 네트워크에 영향을 주는 다른 애플리케이션의 작업에 의해 영향을 받을 수 있습니다. 다행히 대부분의 디바이스는 신호 또는 로밍의 일시적인 손실을 처리하기 위해 디바이스 애플리케이션에서 재시도 논리를 구축했습니다.

무선 호스트 네트워크에 연결된 디바이스 또는 컴퓨터에서 접촉이 끊어질 수 있는 복구 순서는 다음과 같습니다.

  • 무선 디바이스 드라이버는 디바이스에서 네트워크 스택의 상층으로 미디어 연결이 끊어진 것을 나타냅니다.
  • 디바이스 애플리케이션은 무선 호스트 네트워크의 가용성에 대한 주기적인 검사를 시작합니다.
  • 디바이스 애플리케이션이 무선 호스트 네트워크를 다시 감지하면 디바이스가 무선 연결을 시작합니다.
  • 무선 호스트 네트워크와의 연결이 성공하면 디바이스 애플리케이션이 그에 따라 IP 설정을 업데이트합니다.

무선 호스트 네트워크 정보

무선 호스팅 네트워크 샘플

WlanHostedNetworkForceStart

WlanHostedNetworkInitSettings

WlanHostedNetworkQueryProperty

WlanHostedNetworkQuerySecondaryKey

WlanHostedNetworkQueryStatus

WlanHostedNetworkRefreshSecuritySettings

WlanHostedNetworkSetProperty

WlanHostedNetworkSetSecondaryKey

WlanHostedNetworkStartUsing

WlanHostedNetworkStopUsing

WlanRegisterVirtualStationNotification