IP 버전 6 지원
IE7 이상부터 WinINet은 호스트 이름에서 IPv6 리터럴과 URI의 기관 구성 요소를 지원합니다. 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 리터럴 주소에는 scope ID가 포함될 수 있습니다. scope ID는 [FE80::1%1]과 같은 인터페이스 ID일 수 있습니다. RFC 3986에 설명된 URI 표준은 scope ID에 대한 구문을 정의하지 않으며 scope ID가 있는 경우 URI가 균일하지 않은 것으로 간주됩니다. 그러나 WinINet은 URI의 기관 구성 요소와 호스트 이름 IPv6 리터럴의 scope ID를 허용합니다.
IPv6 리터럴 주소의 백분율 문자(%)는 URI에 있을 때 백분율 이스케이프되어야 합니다. 예를 들어 scope ID FE80::2%3은 URI에 "https://[FE80::2%253]/"로 표시되어야 합니다. 여기서 %25는 16진수로 인코딩된 백분율 문자(%)입니다. 애플리케이션이 Winsock WSAAddressToString API와 같은 유니코드 API에서 URI를 검색하는 경우 애플리케이션은 URI의 호스트 이름에 이스케이프된 버전의 백분율 문자(%)를 추가해야 합니다. 이스케이프된 URI 버전을 만들기 위해 애플리케이션은 dwFlags 매개 변수가 ICU_ESCAPE_AUTHORITY 설정된 InternetCreateUrl 및 lpUrlComponents 매개 변수에 지정된 URL 구성 요소 구조에 지정된 IPv6 호스트 이름을 호출합니다.
모든 소켓 작업의 경우 WinINet은 scope ID를 사용합니다. 그러나 scope ID는 로컬 호스트에만 의미가 있으므로 요청에서 HTTP 프로토콜 헤더의 일부로 전송되지 않습니다. 예를 들어 InternetOpenUrl 호출은 lpszUrl 매개 변수에서 다음 URL을 사용하여 호출됩니다.
https://[fec0::2%251]:80/path.htm
URL의 scope ID 부분은 이 URL에 대한 HTTP 요청이 전송될 때 WinINet에 의해 제거됩니다. 요청에는 다음 헤더가 포함됩니다.
GET path.htm HTTP/1.1
Host: [fec0::2]
참고
WinINet은 서버 구현을 지원하지 않습니다. 또한 서비스에서 사용하지 않아야 합니다. 서버 구현 또는 서비스의 경우 WinHTTP(Microsoft Windows HTTP 서비스)를 사용합니다.