다음을 통해 공유


IP 버전 6 지원

IE7 이상부터 WinINet은 호스트 이름 및 URI의 기관 구성 요소에서 IPv6 리터럴을 지원합니다. WinINet은 위치 헤더와 같은 HTTP 프로토콜의 관련 부분에서 IPv6 리터럴의 사용도 지원합니다.

호스트 이름 IPv6 리터럴 및 URI 구성 요소

WinINet은 RFC 3513의 사양에 따라 IPv6 리터럴을 구현합니다. 이 RFC에 지정된 대로 URI의 IPv6 리터럴은 대괄호로 묶어야 합니다. 예를 들어 https://[::1]/은 유효한 IPv6 URI입니다. 대괄호(https://::1/) 없는 양식이 잘못되었습니다. 그러나 URI의 일부가 아닌 호스트 이름 IPv6 리터럴은 대괄호로 묶을 필요가 없습니다. WinINet은 두 폼 중 하나를 사용할 수 있습니다. 예를 들어 "::1" 및 "[::1]"은 모두 IPv6 호스트 이름 리터럴의 허용 가능한 형태입니다. WinSock API와 같은 다른 API도 두 양식을 모두 수락합니다. 따라서 애플리케이션은 두 형태의 IPv6 호스트 이름 리터럴을 모두 처리하도록 준비해야 합니다.

범위 ID

URI의 IPv6 리터럴 주소에는 범위 ID가 포함될 수 있습니다. 범위 ID는 [FE80::1%1]과 같은 인터페이스 ID일 수 있습니다. RFC 3986에 문서화된 URI 표준은 범위 ID의 구문을 정의하지 않으며 범위 ID가 있는 경우 URI는 균일하지 않은 것으로 간주됩니다. 그러나 WinINet은 URI의 기관 구성 요소 및 호스트 이름 IPv6 리터럴에서 범위 ID를 허용합니다.

IPv6 리터럴 주소의 백분율 문자(%)는 URI에 있을 때 백분율 이스케이프되어야 합니다. 예를 들어 범위 ID FE80::2%3URI에 "https://[FE80::2%253]/"로 나타나야 합니다. 여기서 %25 16진수로 인코딩된 백분율 문자(%)입니다. 애플리케이션이 Winsock WSAAddressToString API와 같은 유니코드 API에서 URI를 검색하는 경우 애플리케이션은 URI의 호스트 이름에 이스케이프된 백분율 문자(%)의 버전을 추가해야 합니다. 이스케이프된 버전의 URI를 만들기 위해 애플리케이션은 dwFlags 매개 변수가 ICU_ESCAPE_AUTHORITY설정된 InternetCreateUrl 호출하고 lpUrlComponents 매개 변수에 지정된 URL 구성 요소 구조에 지정된 IPv6 호스트 이름을 호출합니다.

모든 소켓 작업의 경우 WinINet은 범위 ID를 사용합니다. 그러나 범위 ID에는 로컬 호스트 중요도만 있으므로 요청에서 HTTP 프로토콜 헤더의 일부로 전송되지 않습니다. 예를 들어 internetOpenUrl호출은 lpszUrl 매개 변수에서 다음 URL로 호출됩니다.

https://[fec0::2%251]:80/path.htm

URL의 범위 ID 부분은 이 URL에 대한 HTTP 요청이 전송될 때 WinINet에 의해 제거됩니다. 요청에는 다음 헤더가 포함됩니다.

GET path.htm HTTP/1.1
Host: [fec0::2]

메모

WinINet은 서버 구현을 지원하지 않습니다. 또한 서비스에서 사용하면 안 됩니다. 서버 구현 또는 서비스의 경우 WinHTTP(Microsoft Windows HTTP 서비스) 사용합니다.