IPPROTO_IPV6 소켓 옵션

다음 표에서는 IPv6 주소 패밀리(AF_INET6)에 대해 만든 소켓에 적용되는 IPPROTO_IPV6 소켓 옵션에 대해 설명합니다. 소켓 옵션을 가져오고 설정하는 방법에 대한 자세한 내용은 getsockoptsetsockopt 함수 참조 페이지를 참조하세요.

프로토콜을 열거하고 설치된 각 프로토콜에 대해 지원되는 속성을 검색하려면 WSAEnumProtocols, WSCEnumProtocols 또는 WSCEnumProtocols32 함수를 사용합니다.

일부 소켓 옵션에는 이러한 테이블이 전달할 수 있는 것보다 더 많은 설명이 필요합니다. 이러한 옵션에는 추가 정보에 대한 링크가 포함되어 있습니다.

옵션

옵션 Get set Optval 유형 설명
IP_ORIGINAL_ARRIVAL_IF DWORD(부울) LPFN_WSARECVMSG(WSARecvMsg) 함수가 데이터그램 소켓에 대해 패킷을 받은 원래 도착 인터페이스를 포함하는 선택적 제어 데이터를 반환해야 하는지를 나타냅니다. 이 옵션은 IPv6 호스트가 다른 IPv6 네트워크에 도달하기 위해 IP4 네트워크를 트래버스해야 하는 경우 유니캐스트 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로 설정하면 옵션이 활성화됩니다. optval0으로 설정하면 옵션이 비활성화됩니다. 기본값은 사용 안 함입니다. 이 옵션은 데이터그램 및 원시 소켓에만 유효합니다(소켓 유형은 SOCK_DGRAM 또는 SOCK_RAW). SOCK_RAW 지원하는 TCP/IP 서비스 공급자도 IPV6_HDRINCL 지원해야 합니다.
IPV6_HOPLIMIT DWORD(부울) LPFN_WSARECVMSG (WSARecvMsg) 함수에 홉(TTL) 정보가 반환되어야 했음을 나타냅니다. setsockopt 호출 시 optval1로 설정된 경우 옵션이 사용하도록 설정됩니다. 0으로 설정하면 옵션이 비활성화됩니다. 이 옵션은 데이터그램 및 원시 소켓에만 유효합니다(소켓 유형은 SOCK_DGRAM 또는 SOCK_RAW).
IPV6_IFLIST DWORD(부울) 소켓의 IP_IFLIST 상태를 가져오거나 설정합니다. 이 옵션을 true로 설정하면 Datagram 수신이 IFLIST에 있는 인터페이스로 제한됩니다. 다른 인터페이스에서 받은 데이터그램은 무시됩니다. IFLIST가 비어 있는 것으로 시작합니다. IP_ADD_IFLISTIP_DEL_IFLIST 사용하여 IFLIST를 편집합니다.
IPV6_JOIN_GROUP ipv6_mreq Same as 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_SETIP_PMTUDISC_DO 경로 MTU 검색을 수행합니다. IP_PMTUDISC_DONTIP_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 호출 시 optvalNULL로 설정된 경우 기본 IPv6 인터페이스가 사용됩니다. optval이 0이면 멀티캐스트를 수신하기 위한 기본 인터페이스가 멀티캐스트 트래픽을 전송하기 위해 지정됩니다. 이 옵션을 가져오면 optval 은 멀티캐스트 IPv6 트래픽을 호스트 바이트 순서로 보내기 위한 현재 기본 인터페이스 인덱스 를 반환합니다.
IPV6_MULTICAST_LOOP DWORD(부울) 소켓에 전송된 멀티캐스트 데이터가 대상 멀티캐스트 그룹에 조인된 경우 소켓 수신 버퍼에 에코됨을 나타냅니다. setsockopt 호출 시 optval1로 설정된 경우 옵션이 사용하도록 설정됩니다. 0으로 설정하면 옵션이 비활성화됩니다. 이 옵션은 데이터그램 및 원시 소켓에만 유효합니다(소켓 유형은 SOCK_DGRAM 또는 SOCK_RAW 있어야 합니다).
IPV6_PKTINFO DWORD(부울) LPFN_WSARECVMSG(WSARecvMsg) 함수에서 패킷 정보를 반환해야 했음을 나타냅니다.
IPV6_PROTECTION_LEVEL INT 로컬 또는 사이트 로컬 접두사 링크가 동일한 주소와 같이 지정된 scope 소켓을 제한할 수 있습니다. 다양한 제한 수준 및 기본 설정을 제공합니다. 자세한 내용은 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 헤더 필드 값이 포함된 선택적 컨트롤 데이터를 반환합니다. 이 옵션을 사용하면 수신된 데이터그램의 Traffic Class IPv6 헤더 필드를 WSAMSG 구조체에 반환할 수 있습니다. 반환된 메시지 유형은 IPV6_TCLASS. 트래픽 클래스 필드의 모든 DSCP 및 ECN 비트가 반환됩니다. 이 옵션은 데이터그램 소켓에서만 유효합니다(소켓 유형은 SOCK_DGRAM 있어야 합니다).
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)입니다. 형식 안전의 경우 소켓 옵션을 직접 사용하는 대신 WSAGetIPUserMtuWSASetIPUserMtu 함수를 사용해야 합니다.
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 x x x
IPV6_ADD_IFLIST Windows 10 버전 1803부터
IPV6_ADD_MEMBERSHIP x x x x x
IPV6_DEL_IFLIST Windows 10 버전 1803부터
IPV6_DROP_MEMBERSHIP x x x x x
IPV6_GET_IFLIST Windows 10 버전 1803부터
IPV6_HDRINCL x x x x x
IPV6_HOPLIMIT x x x x x
IPV6_IFLIST Windows 10 버전 1803부터
IPV6_JOIN_GROUP x x x x x
IPV6_LEAVE_GROUP x x x x x
IPV6_MULTICAST_HOPS x x x x x
IPV6_MULTICAST_IF x x x x x
IPV6_MULTICAST_LOOP x x x x x
IPV6_PKTINFO x x x x x
IPV6_PROTECTION_LEVEL x x x x x
IPV6_RECVIF x x x x x
IPV6_UNICAST_HOPS x x x x x
IPV6_UNICAST_IF x x x x x
IPV6_V6ONLY x x x x x

옵션 Windows Server 2003 Windows XP
IP_ORIGINAL_ARRIVAL_IF
IPV6_ADD_IFLIST
IPV6_ADD_MEMBERSHIP x x
IPV6_DEL_IFLIST
IPV6_DROP_MEMBERSHIP x x
IPV6_GET_IFLIST
IPV6_HDRINCL x x
IPV6_HOPLIMIT x x
IPV6_IFLIST
IPV6_JOIN_GROUP x x
IPV6_LEAVE_GROUP x x
IPV6_MULTICAST_HOPS x x
IPV6_MULTICAST_IF x x
IPV6_MULTICAST_LOOP x x
IPV6_PKTINFO x x
IPV6_PROTECTION_LEVEL x x
IPV6_RECVIF
IPV6_UNICAST_HOPS x x
IPV6_UNICAST_IF
IPV6_V6ONLY

설명

Windows Vista 이상용으로 릴리스된 Microsoft Windows SDK(소프트웨어 개발 키트)에서 헤더 파일의 organization 변경되었으며 IPPROTO_IPV6 수준이 Winsock2.h 헤더 파일에 자동으로 포함된 Ws2def.h 헤더 파일에 정의됩니다. IPPROTO_IPV6 소켓 옵션은 Ws2ipdef.h 헤더 파일에 정의되며 Ws2tcpip.h 헤더 파일에 자동으로 포함됩니다. Ws2def.hWs2ipdef.h 헤더 파일은 직접 사용하면 안 됩니다.

IP_ORIGINAL_ARRIVAL_IF 소켓 옵션은 Windows Server 2008 R2 및 Windows 7에서도 지원됩니다.

요구 사항

요구 사항
헤더
Ws2def.h(Winsock2.h 포함);
Windows Server 2003 및 Windows XP의 Winsock2.h