네트워크 연결 문제 해결 및 디버깅(Windows 런타임 앱)

[ 이 문서는 Windows 런타임 앱을 작성하는 Windows에서 8.x 및 Windows Phone 8.x 개발자를 대상으로 합니다. Windows 10용으로 개발하는 경우에는 최신 설명서를 참조하세요.]

네트워크 문제 때문에 응용 프로그램이 응답을 중지하거나, 충돌하거나 작동하지 않는 대화 상자를 표시하거나 사용자에게 혼란을 주는 오류 메시지를 표시할 수 있습니다. 네트워킹 스택의 어디서든 오류가 발생할 가능성이 있으므로 이 오류를 해결하고 디버깅하는 것이 어려울 수 있습니다.

영향 범위

소켓 등을 사용하여 직접적으로 또는 결국 네트워크를 사용하게 될 API를 통해 간접적으로 네트워크를 사용하는 모든 Windows 런타임 앱은 네트워크 문제의 영향을 받을 가능성이 있습니다. 운영 체제가 응용 프로그램을 대신하여 자동으로 네트워크 오류 조건을 처리하는 것이 바람직하며, 그렇지 못할 경우 응용 프로그램에서 오류를 처리할 수 있도록 대비해야 합니다.

알맞은 네트워크 접근 권한 값 선택

Windows 런타임 앱에서 네트워크에 액세스하려면 그 앱의 매니페스트에서 일부 네트워킹 격리 접근 권한 값을 사용하도록 설정해야 합니다. 일반적으로 이 접근 권한 값은 앱을 개발할 때 Microsoft Visual Studio 2013을 사용하여 구성합니다. 이 접근 권한 값은 Windows에서 적용합니다. 알맞은 네트워킹 접근 권한 값이 설정되지 않은 경우 네트워크 액세스가 차단될 수 있습니다.

그러므로 네트워크 문제를 해결하기 위한 첫 단계는 그 앱에 대해 알맞은 네트워크 접근 권한 값이 구성되었는지 확인하는 것입니다.

네트워크 접근 권한 값 설명

privateNetworkClientServer

  • 일반적으로 이는 개인 "프로필"(로컬 서브넷 및 루프백 접근 권한 값 포함)입니다. 엔터프라이즈 설정에서는 여기에 로컬 서브넷 및 Active Directory 사이트/도메인도 포함됩니다.

  • 이 설정을 사용하도록 설정하면 집이나 회사의 개인 네트워크에서 앱을 사용할 것임을 의미합니다.

internetClient

  • 인터넷의 서비스와의 통신을 허용합니다. 필요하다면 프록시를 거칩니다. 이는 internetClientServer 접근 권한 값과 비슷하지만, 모든 통신이 클라이언트에서 시작해야 합니다. 클라이언트는 다른 호스트로부터의 연결을 수신하지 않습니다. 로컬 서브넷 또는 루프백과의 연결은 허용되지 않습니다.

internetClientServer

  • 인터넷의 서비스와의 통신을 허용합니다. 필요하다면 프록시를 거칩니다. 이 설정은 인터넷 및 클라이언트에서 시작한 아웃바운드 작업으로부터의 인바운드 연결을 모두 가능하게 합니다.

참고  이 접근 권한 값이 인바운드 통신을 가능하게 하지만 통신의 작동이 보장되지는 않습니다. 엔터프라이즈 네트워크의 에지 프록시 및 방화벽이 인바운드 통신을 차단할 수도 있습니다.
 

proximity

물리적으로 근접한(최대 1피트 거리) 두 시스템이 Windows.Networking.Proximity 네임스페이스 기능을 사용하여 상호 작용할 수 있게 합니다.

 

앱에 필요한 네트워크 액세스를 결정했다면 알맞은 네트워크 접근 권한 값 설정이 구성되었는지 확인합니다. 그렇지 않으면 네트워크 액세스가 차단됩니다.

네트워크 액세스를 위해 루프백을 사용하도록 설정하고 네트워크 격리 문제를 해결하는 방법에 대한 자세한 내용은 루프백을 사용하도록 설정하고 네트워크 격리를 디버깅하는 방법을 참조하세요.

네트워크 상태 변경에 대처하기

Windows 8.1, Windows Phone 8.1 또는 Windows Server 2012 R2에서 새 네트워크를 발견하면 자동으로 새 연결 옵션을 제공합니다. 예를 들어 사용자가 3G 네트워크를 사용하여 데이터를 스트리밍하다가 나중에 Wi-Fi 네트워크 영역에 들어갈 경우, 가능하다면 그 응용 프로그램에 대한 새 연결 옵션을 사용할 수 있게 됩니다.

모든 모바일 장치의 경우 네트워크 연결이 종종 끊어질 수 있습니다. 사용자의 집 또는 회사에서 3G 네트워크 범위로부터 벗어났는데 Wi-Fi 연결은 계속 사용 가능한 경우도 있습니다. 또한 사용자가 집이나 회사에서 나오면 Wi-Fi 연결이 끊길 수 있습니다. 또한 네트워크를 사용할 수 없는 경우도 있습니다. Wi-Fi 및 모바일 광대역 네트워크의 확산으로 인해 그러한 네트워크 상태 변경(네트워크 연결, 사용 불가)이 점점 일반화될 것입니다. 원활하게 새로운 네트워크로 자동 연결되지는 않으며, 응용 프로그램 작업이 있어야 연결됩니다. 데이터 통신 연결 네트워크보다 무제한 네트워크를, 저속 네트워크보다 고속 네트워크를 우선적으로 선택하는 것이 Windows 8.1, Windows Phone 8.1 및 Windows Server 2012 R2의 기본 정책입니다.

언제든지 네트워크 변경이 일어나면 네트워크 액세스에 영향을 줄 수 있습니다. 네트워크 상태 변경 알림(onNetworkStatusChanged)에 앱을 등록하여 네트워크 변경이 일어날 때 알림을 받을 수 있습니다. 앱에서 사용하던 연결을 더 이상 사용할 수 없으면(오류로 표시됨) 앱에서 다음 중 하나를 수행해야 합니다.

  • 작업을 다시 시도합니다. 실패할 경우 다시 NetworkStatusChanged 알림을 받을 때까지 기다립니다.
  • 네트워크 요금을 확인하고 다른 네트워크에 연결하도록 시도합니다.

기본적인 문제 해결 지침

Windows 런타임 앱에서는 다음을 수행해야 합니다.

  • 네트워킹 오류가 발생했다면 적절한 경우에 작업을 다시 시도합니다. 예를 들어 인증에 실패한 경우 작업을 다시 시도하지 않습니다. 그러나 사용하던 무선 네트워크가 사라지고 다른 무선 네트워크가 사용 가능해졌다면 작업을 다시 시도할 수 있습니다. 상당수의 오류는 작업을 다시 시도하면 간단하게 해결됩니다. 다시 시도할 때 네트워크 상태 변경에 대처하기의 지침을 따릅니다.

  • UI 스레드에서 차단하는 호출이 없도록 비동기 API를 사용해야 합니다. 네트워킹 작업을 마치는 데 오랜 시간이 걸리거나 오류가 발생할 경우 응용 프로그램이 응답을 중지해서는 안 됩니다. 비동기적인 Windows 런타임에서 동기적 동작을 에뮬레이트하지 않아야 합니다.

  • 오류 처리를 위한 모델을 미리 계획합니다. 응용 프로그램을 설계할 때 사용자에게 오류 정보를 표시할 방법을 생각해 봅니다. 예를 들어 Outlook은 신중한 네트워크 표시기를 사용합니다. Communicator는 "전체 UI를 바꾸는" 방식입니다. Internet Explorer는 다운로드를 위한 작업 지향적인 대화 상자를 제공하여 네트워크 오류를 표시합니다. 오류 및 (예외가 throw된 경우) 예외를 catch합니다. 각 오류 문자열을 이해하고 사용자에게 적절히 알려줍니다.

  • 다양한 네트워킹 환경에서 연결 끊기, 다시 연결하기, 일시 정지 또는 다시 시작, 다른 네트워크로 전환 등의 작업을 수행하면서 응용 프로그램을 테스트합니다.

  • 응용 프로그램을 테스트하다가 당장 눈에 띄지 않는 오류를 찾아낼 경우 ETW 추적으로 오류에 대한 세부 정보를 수집하게 할 수 있습니다.

관련 항목

네트워킹 지원 추가

ETW 추적

네트워크 격리 접근 권한 값을 구성하는 방법

루프백을 사용하도록 설정하고 네트워크 격리를 디버깅하는 방법