IPPROTO_IPV6 소켓 옵션
다음 표에서는 IPv6 주소 패밀리(AF_INET6)에 대해 만든 소켓에 적용되는 IPPROTO_IPV6 소켓 옵션에 대해 설명합니다. 소켓 옵션 가져오기 및 설정에 대한 자세한 내용은 getsockopt 및 setsockopt 함수 참조 페이지를 참조하세요.
프로토콜을 열거하고 설치된 각 프로토콜에 대해 지원되는 속성을 검색하려면 WSAEnumProtocols, WSCEnumProtocols 또는 WSCEnumProtocols32 함수를 사용합니다.
일부 소켓 옵션에는 이러한 테이블이 전달할 수 있는 것보다 더 많은 설명이 필요합니다. 이러한 옵션에는 추가 정보에 대한 링크가 포함되어 있습니다.
옵션
옵션 | get | set | Optval 형식 | 설명 |
---|---|---|---|---|
IP_ORIGINAL_ARRIVAL_IF | 예 | 예 | DWORD(부울) | LPFN_WSARECVMSG(WSARecvMsg) 함수가 데이터그램 소켓에 대해 패킷을 받은 원래 도착 인터페이스를 포함하는 선택적 컨트롤 데이터를 반환해야 하는지 여부를 나타냅니다. 이 옵션은 IPv6 호스트가 IP4 네트워크를 트래버스하여 다른 IPv6 네트워크에 연결해야 하는 경우 유니캐스트 IPv6 트래픽에 대한 주소 할당 및 호스트 간 자동 터널링을 제공하는 IPv6 전환 기술(예: 6to4, ISATAP 및 Teredo 터널)에 사용됩니다. IPv6 패킷은 IPv4 패킷으로 터널링되어 전송됩니다. 이 옵션을 사용하면 패킷이 수신된 원래 IPv4 인터페이스가 WSAMSG 구조체에서 반환될 수 있습니다. |
IPV6_ADD_IFLIST | 예 | DWORD(IF_INDEX) | IP_IFLIST 옵션과 연결된 IFLIST에 인터페이스 인덱스 추가 | |
IPV6_ADD_MEMBERSHIP | 예 | ipv6_mreq | 지정된 인터페이스에서 제공된 멀티캐스트 그룹에 소켓을 조인합니다. 이 옵션은 데이터그램 및 원시 소켓에서만 유효합니다(소켓 유형은 SOCK_DGRAM 또는 SOCK_RAW 있어야 합니다). | |
IPV6_DEL_IFLIST | 예 | DWORD(IF_INDEX) | IP_IFLIST 옵션과 연결된 IFLIST에서 인터페이스 인덱스를 제거합니다. 애플리케이션에서만 항목을 제거할 수 있으므로 인터페이스가 제거되면 항목이 부실해질 수 있습니다. | |
IPV6_DROP_MEMBERSHIP | 예 | ipv6_mreq | 제공된 멀티캐스트 그룹을 지정된 인터페이스에서 그대로 둡니다. 이 옵션은 데이터그램 및 원시 소켓에서만 유효합니다(소켓 유형은 SOCK_DGRAM 또는 SOCK_RAW 있어야 합니다). | |
IPV6_GET_IFLIST | 예 | DWORD[](IF_INDEX[]) | IP_IFLIST 옵션과 연결된 현재 IFLIST를 가져옵니다. IP_IFLIST 사용하도록 설정되지 않은 경우 오류를 반환합니다. | |
IPV6_HDRINCL | 예 | 예 | DWORD(boolean) | 애플리케이션이 나가는 모든 데이터에 대해 IPv6 헤더를 제공했음을 나타냅니다. setsockopt 호출 시 optval 매개 변수를 1로 설정하면 옵션이 활성화됩니다. optval을 0으로 설정하면 옵션이 비활성화됩니다. 기본값은 사용 안 함입니다. 이 옵션은 데이터그램 및 원시 소켓에만 유효합니다(소켓 유형은 SOCK_DGRAM 또는 SOCK_RAW 있어야 합니다). SOCK_RAW 지원하는 TCP/IP 서비스 공급자도 IPV6_HDRINCL 지원해야 합니다. |
IPV6_HOPLIMIT | 예 | 예 | DWORD(부울) | 홉(TTL) 정보가 LPFN_WSARECVMSG(WSARecvMsg) 함수에 반환되어야 임을 나타냅니다. setsockopt 호출 시 optval이 1로 설정된 경우 옵션이 활성화됩니다. 0으로 설정하면 옵션이 비활성화됩니다. 이 옵션은 데이터그램 및 원시 소켓에만 유효합니다(소켓 유형은 SOCK_DGRAM 또는 SOCK_RAW 있어야 합니다). |
IPV6_IFLIST | 예 | 예 | DWORD(부울) | 소켓의 IP_IFLIST 상태를 가져오거나 설정합니다. 이 옵션을 true로 설정하면 Datagram 수신이 IFLIST에 있는 인터페이스로 제한됩니다. 다른 인터페이스에서 받은 데이터그램은 무시됩니다. IFLIST가 비어 시작합니다. IP_ADD_IFLIST 및 IP_DEL_IFLIST 사용하여 IFLIST를 편집합니다. |
IPV6_JOIN_GROUP | 예 | ipv6_mreq | IPV6_ADD_MEMBERSHIP 동일 | |
IPV6_LEAVE_GROUP | 예 | ipv6_mreq | IPV6_DROP_MEMBERSHIP 동일 | |
IPV6_MTU | 예 | DWORD | 시스템의 예상 경로 MTU를 가져옵니다. 소켓을 연결해야 합니다. | |
IPV6_MTU_DISCOVER | 예 | 예 | DWORD(PMTUD_STATE) | 소켓의 경로 MTU 검색 상태를 가져오거나 설정합니다. 기본값은 IP_PMTUDISC_NOT_SET. 스트림 소켓의 경우 IP_PMTUDISC_NOT_SET 및 IP_PMTUDISC_DO 경로 MTU 검색을 수행합니다. IP_PMTUDISC_DONT 및 IP_PMTUDISC_PROBE 경로 MTU 검색을 해제합니다. 데이터그램 소켓의 경우 IP_PMTUDISC_DO 설정하면 경로 MTU보다 큰 패킷을 보내려고 하면 오류가 발생합니다. IP_PMTUDISC_DONT 설정하면 인터페이스 MTU에 따라 패킷이 조각화됩니다. IP_PMTUDISC_PROBE 설정하면 인터페이스 MTU보다 큰 패킷을 보내려고 하면 오류가 발생합니다. |
IPV6_MULTICAST_HOPS | 예 | 예 | DWORD | 소켓에서 IPv6 멀티캐스트 트래픽과 연결된 TTL 값을 가져오거나 설정합니다. TTL을 255보다 큰 값으로 설정하는 것은 불법입니다. 이 옵션은 데이터그램 및 원시 소켓에만 유효합니다(소켓 유형은 SOCK_DGRAM 또는 SOCK_RAW 있어야 합니다). |
IPV6_MULTICAST_IF | 예 | 예 | DWORD | IPv6 멀티캐스트 트래픽을 보내기 위한 나가는 인터페이스를 가져오거나 설정합니다. 이 옵션은 IPv6 멀티캐스트 트래픽을 수신하기 위한 기본 인터페이스를 변경하지 않습니다. 이 옵션은 멀티홈 컴퓨터에 중요합니다. 이 옵션을 설정하기 위한 입력 값은 원하는 나가는 인터페이스의 4 바이트 인터페이스 인덱스(호스트 바이트 순서)입니다. GetAdaptersAddresses 함수를 사용하여 인터페이스 인덱스 정보를 가져올 수 있습니다. setsockopt 호출 시 optval이 NULL로 설정된 경우 기본 IPv6 인터페이스가 사용됩니다. optval이 0이면 멀티캐스트를 받기 위한 기본 인터페이스가 멀티캐스트 트래픽을 보내기 위해 지정됩니다. 이 옵션을 가져오면 optval은 멀티캐스트 IPv6 트래픽을 호스트 바이트 순서로 보내기 위한 현재 기본 인터페이스 인덱스가 반환됩니다. |
IPV6_MULTICAST_LOOP | 예 | 예 | DWORD(부울) | 소켓에 전송된 멀티캐스트 데이터가 대상 멀티캐스트 그룹에 조인된 경우 소켓 수신 버퍼에 에코됨을 나타냅니다. setsockopt 호출 시 optval이 1로 설정된 경우 옵션이 활성화됩니다. 0으로 설정하면 옵션이 비활성화됩니다. 이 옵션은 데이터그램 및 원시 소켓에만 유효합니다(소켓 유형은 SOCK_DGRAM 또는 SOCK_RAW 있어야 합니다). |
IPV6_PKTINFO | 예 | 예 | DWORD(부울) | LPFN_WSARECVMSG(WSARecvMsg) 함수에서 패킷 정보를 반환해야 임을 나타냅니다. |
IPV6_PROTECTION_LEVEL | 예 | 예 | INT | 동일한 링크 로컬 또는 사이트 로컬 접두사를 사용하는 주소와 같이 지정된 범위에 소켓을 제한할 수 있습니다. 다양한 제한 수준 및 기본 설정을 제공합니다. 자세한 내용은 IPV6_PROTECTION_LEVEL 참조하세요. |
IPV6_RECVIF | 예 | 예 | DWORD(부울) | IP 스택이 데이터그램 소켓으로 패킷을 받은 인터페이스에 대한 세부 정보로 컨트롤 버퍼를 채워야 하는지 여부를 나타냅니다. 이 값이 true 이면 LPFN_WSARECVMSG(WSARecvMsg) 함수는 데이터그램 소켓에 대해 패킷이 수신된 인터페이스를 포함하는 선택적 컨트롤 데이터를 반환합니다. 이 옵션을 사용하면 패킷이 수신된 IPv6 인터페이스를 WSAMSG 구조체에서 반환할 수 있습니다. 이 옵션은 데이터그램 및 원시 소켓에만 유효합니다(소켓 유형은 SOCK_DGRAM 또는 SOCK_RAW 있어야 합니다). |
IPV6_RECVTCLASS | 예 | 예 | DWORD(부울) | IP 스택이 수신된 데이터그램의 트래픽 클래스 IPv6 헤더 필드가 포함된 메시지로 컨트롤 버퍼를 채워야 하는지 여부를 나타냅니다. 이 값이 true 이면 LPFN_WSARECVMSG(WSARecvMsg) 함수는 수신된 데이터그램의 Traffic Class IPv6 헤더 필드 값을 포함하는 선택적 컨트롤 데이터를 반환합니다. 이 옵션을 사용하면 수신된 데이터그램의 트래픽 클래스 IPv6 헤더 필드를 WSAMSG 구조로 반환할 수 있습니다. 반환된 메시지 유형은 IPV6_TCLASS. 트래픽 클래스 필드의 모든 DSCP 및 ECN 비트가 반환됩니다. 이 옵션은 데이터그램 소켓에서만 유효합니다(소켓 유형은 SOCK_DGRAM 있어야 합니다). |
IPV6_RECVECN | 예 | 예 | DWORD(부울) | IP 스택이 수신된 데이터그램에서 트래픽 클래스 IPv6 헤더 필드의 ECN 비트를 포함하는 메시지로 컨트롤 버퍼를 채워야 하는지 여부를 나타냅니다. 이 값이 true 이면 LPFN_WSARECVMSG(WSARecvMsg) 함수는 수신된 데이터그램의 Traffic Class IPv6 헤더 필드 값의 ECN 비트를 포함하는 선택적 컨트롤 데이터를 반환합니다. 이 옵션을 사용하면 수신된 데이터그램의 트래픽 클래스 IPv6 헤더 필드의 ECN 비트를 WSAMSG 구조체에 반환할 수 있습니다. 반환된 메시지 유형은 IPV6_ECN. 트래픽 클래스 필드의 모든 2 ECN 비트가 반환됩니다. 이 옵션은 데이터그램 및 원시 소켓에서만 유효합니다(소켓 유형은 SOCK_DGRAM 또는 SOCK_RAW 있어야 합니다). 형식 안전을 위해 소켓 옵션을 직접 사용하는 대신 WSAGetRecvIPEcn 및 WSASetRecvIPEcn 함수를 사용해야 합니다. |
IPV6_UNICAST_HOPS | 예 | 예 | DWORD | 유니캐스트 트래픽에 대한 IPv6 소켓과 연결된 현재 TTL 값을 가져오거나 설정합니다. TTL을 255보다 큰 값으로 설정하는 것은 불법입니다. |
IPV6_UNICAST_IF | 예 | 예 | DWORD(IF_INDEX) | IPv6 트래픽을 보내기 위한 나가는 인터페이스를 가져오거나 설정합니다. 이 옵션은 IPv6 트래픽을 수신하기 위한 기본 인터페이스를 변경하지 않습니다. 이 옵션은 멀티홈 컴퓨터에 중요합니다. 이 옵션을 설정하기 위한 입력 값은 원하는 나가는 인터페이스의 4 바이트 인터페이스 인덱스(호스트 바이트 순서)입니다. GetAdaptersAddresses 함수를 사용하여 인터페이스 인덱스 정보를 가져올 수 있습니다. optval이 0이면 IPv6 트래픽을 보내기 위한 기본 인터페이스가 지정되지 않음으로 설정됩니다. 이 옵션을 가져오면 optval은 호스트 바이트 순서로 IPv6 트래픽을 전송하기 위한 현재 기본 인터페이스 인덱스입니다. |
IPV6_USER_MTU | 예 | 예 | DWORD | 지정된 소켓에 대한 IP 계층 MTU(바이트)의 상한을 가져오거나 설정합니다. 값이 시스템의 예상 경로 MTU(IPV6_MTU 소켓 옵션을 쿼리하여 연결된 소켓에서 검색할 수 있음)보다 높은 경우 이 옵션은 효과가 없습니다. 값이 낮으면 이보다 큰 아웃바운드 패킷이 조각화되거나 IPV6_DONTFRAG 값에 따라 전송에 실패합니다. 기본값은 IP_UNSPECIFIED_USER_MTU(MAXULONG)입니다. 형식 안전을 위해 소켓 옵션을 직접 사용하는 대신 WSAGetIPUserMtu 및 WSASetIPUserMtu 함수를 사용해야 합니다. |
IPV6_V6ONLY | 예 | 예 | DWORD(부울) | AF_INET6 주소 패밀리에 대해 만든 소켓을 IPv6 통신에만 사용하도록 제한할지 여부를 나타냅니다. AF_INET6 주소 패밀리에 대해 만든 소켓은 IPv6 및 IPv4 통신 모두에 사용할 수 있습니다. 애플리케이션에 따라 AF_INET6 주소 패밀리에 대해 만든 소켓을 IPv6 통신에만 사용하도록 제한할 수 있습니다. 이 값이 0이 아닌 경우(Windows의 기본값) AF_INET6 주소 패밀리에 대해 만든 소켓을 사용하여 IPv6 패킷만 보내고 받을 수 있습니다. 이 값이 0이면 AF_INET6 주소 패밀리에 대해 만든 소켓을 IPv6 주소 또는 IPv4 주소에서 패킷을 보내고 받는 데 사용할 수 있습니다. IPv4 주소를 조작할 수 있으려면 IPv4로 매핑된 주소를 사용해야 합니다. 이 소켓 옵션은 Windows Vista 이상에서 지원됩니다. |
IPPROTO_IPV6 소켓 옵션에 대한 Windows 지원
옵션 | Windows 8 | Windows Server 2012 | Windows 7 | Windows Server 2008 | Windows Vista |
---|---|---|---|---|---|
IP_ORIGINAL_ARRIVAL_IF | 예 | 예 | 예 | ||
IPV6_ADD_IFLIST | Windows 10 버전 1803부터 | ||||
IPV6_ADD_MEMBERSHIP | 예 | 예 | 예 | 예 | 예 |
IPV6_DEL_IFLIST | Windows 10 버전 1803부터 | ||||
IPV6_DROP_MEMBERSHIP | 예 | 예 | 예 | 예 | 예 |
IPV6_GET_IFLIST | Windows 10 버전 1803부터 | ||||
IPV6_HDRINCL | 예 | 예 | 예 | 예 | 예 |
IPV6_HOPLIMIT | 예 | 예 | 예 | 예 | 예 |
IPV6_IFLIST | Windows 10 버전 1803부터 | ||||
IPV6_JOIN_GROUP | 예 | 예 | 예 | 예 | 예 |
IPV6_LEAVE_GROUP | 예 | 예 | 예 | 예 | 예 |
IPV6_MULTICAST_HOPS | 예 | 예 | 예 | 예 | 예 |
IPV6_MULTICAST_IF | 예 | 예 | 예 | 예 | 예 |
IPV6_MULTICAST_LOOP | 예 | 예 | 예 | 예 | 예 |
IPV6_PKTINFO | 예 | 예 | 예 | 예 | 예 |
IPV6_PROTECTION_LEVEL | 예 | 예 | 예 | 예 | 예 |
IPV6_RECVIF | 예 | 예 | 예 | 예 | 예 |
IPV6_UNICAST_HOPS | 예 | 예 | 예 | 예 | 예 |
IPV6_UNICAST_IF | 예 | 예 | 예 | 예 | 예 |
IPV6_V6ONLY | 예 | 예 | 예 | 예 | 예 |
옵션 | Windows Server 2003 | Windows XP |
---|---|---|
IP_ORIGINAL_ARRIVAL_IF | ||
IPV6_ADD_IFLIST | ||
IPV6_ADD_MEMBERSHIP | 예 | 예 |
IPV6_DEL_IFLIST | ||
IPV6_DROP_MEMBERSHIP | 예 | 예 |
IPV6_GET_IFLIST | ||
IPV6_HDRINCL 예 | 예 | |
IPV6_HOPLIMIT 예 | 예 | |
IPV6_IFLIST | ||
IPV6_JOIN_GROUP | 예 | 예 |
IPV6_LEAVE_GROUP | 예 | 예 |
IPV6_MULTICAST_HOPS | 예 | 예 |
IPV6_MULTICAST_IF | 예 | 예 |
IPV6_MULTICAST_LOOP | 예 | 예 |
IPV6_PKTINFO | 예 | 예 |
IPV6_PROTECTION_LEVEL | 예 | 예 |
IPV6_RECVIF | ||
IPV6_UNICAST_HOPS | 예 | 예 |
IPV6_UNICAST_IF | ||
IPV6_V6ONLY |
설명
Windows Vista 이상용으로 릴리스된 Microsoft Windows SDK(소프트웨어 개발 키트)에서 헤더 파일의 구성이 변경되었으며 IPPROTO_IPV6 수준이 Winsock2.h 헤더 파일에 자동으로 포함되는 Ws2def.h 헤더 파일에 정의됩니다. IPPROTO_IPV6 소켓 옵션은 Ws2ipdef.h 헤더 파일에 정의되며 Ws2tcpip.h 헤더 파일에 자동으로 포함됩니다. Ws2def.h 및 Ws2ipdef.h 헤더 파일은 직접 사용해서는 안 됩니다.
IP_ORIGINAL_ARRIVAL_IF 소켓 옵션은 Windows Server 2008 R2 및 Windows 7에서 지원됩니다.
요구 사항
요구 사항 | 값 |
---|---|
헤더 |
|