IPPROTO_IP 소켓 옵션

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

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

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

옵션

옵션 가져오기 설정 Optval 유형 Description
IP_ADD_IFLIST DWORD(IF_INDEX) IP_IFLIST 옵션과 연결된 IFLIST에 인터페이스 인덱스 추가
IP_ADD_MEMBERSHIP ip_mreq 지정된 인터페이스에서 제공된 멀티캐스트 그룹에 소켓을 조인합니다.
IP_ADD_SOURCE_MEMBERSHIP ip_mreq_source 제공된 멀티캐스트 그룹을 지정된 인터페이스에 조인하고 제공된 원본 주소에서 제공된 데이터를 수락합니다.
IP_BLOCK_SOURCE ip_mreq_source 제공된 멀티캐스트 그룹 및 인터페이스에 보낸 사람으로 지정된 소스를 제거합니다.
IP_DEL_IFLIST DWORD(IF_INDEX) IP_IFLIST 옵션과 연결된 IFLIST에서 인터페이스 인덱스를 제거합니다. 애플리케이션에서만 항목을 제거할 수 있으므로 인터페이스가 제거되면 항목이 부실해질 수 있습니다.
IP_DONTFRAGMENT DWORD(부울) 로컬 MTU에 관계없이 데이터를 조각화해서는 안 됨을 나타냅니다. 메시지 지향 프로토콜에만 유효합니다. Microsoft TCP/IP 공급자는 UDP 및 ICMP에 대해 이 옵션을 적용합니다.
IP_DROP_MEMBERSHIP ip_mreq 지정된 멀티캐스트 그룹을 지정된 인터페이스에서 그대로 둡니다. 서비스 공급자는 멀티캐스트가 지원되는 경우 이 옵션을 지원해야 합니다. 지원은 WSAEnumProtocols 함수 호출에서 반환된 WSAPROTOCOL_INFO 구조체에 XPI_SUPPORT_MULTIPOINT=1, XP1_MULTIPOINT_CONTROL_PLANE=0, XP1_MULTIPOINT_DATA_PLANE=0으로 표시됩니다.
IP_DROP_SOURCE_MEMBERSHIP ip_mreq_source 지정된 멀티캐스트 그룹, 인터페이스 및 원본 주소로 멤버 자격을 삭제합니다.
IP_GET_IFLIST DWORD[] (IF_INDEX[]) IP_IFLIST 옵션과 연결된 현재 IFLIST를 가져옵니다. IP_IFLIST 사용하도록 설정되지 않은 경우 오류를 반환합니다.
IP_HDRINCL DWORD(부울) TRUE로 설정하면 애플리케이션이 IP 헤더를 제공했음을 나타냅니다. SOCK_RAW 소켓에만 적용됩니다. 애플리케이션에서 제공하는 값이 0인 경우 TCP/IP 서비스 공급자는 ID 필드를 설정할 수 있습니다. IP_HDRINCL 옵션은 SOCK_RAW 프로토콜 유형에만 적용됩니다. SOCK_RAW 지원하는 TCP/IP 서비스 공급자도 IP_HDRINCL 지원해야 합니다.
IP_IFLIST DWORD(부울) 소켓의 IP_IFLIST 상태를 가져오거나 설정합니다. 이 옵션을 true로 설정하면 Datagram 수신이 IFLIST에 있는 인터페이스로 제한됩니다. 다른 인터페이스에서 받은 데이터그램은 무시됩니다. IFLIST가 비어 있는 것으로 시작합니다. IP_ADD_IFLISTIP_DEL_IFLIST 사용하여 IFLIST를 편집합니다.
IP_MTU DWORD 시스템의 MTU 경로 추정치를 가져옵니다. 소켓을 연결해야 합니다.
IP_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 나가는 모든 패킷에 DF 비트가 설정되어 있고 경로 MTU보다 큰 패킷을 보내려고 하면 오류가 발생합니다. IP_PMTUDISC_DONT 나가는 모든 패킷이 DF 비트를 설정하지 않도록 하고 인터페이스 MTU에 따라 패킷이 조각화됩니다. IP_PMTUDISC_PROBE 나가는 모든 패킷에 DF 비트가 설정되어 있어야 하며 인터페이스 MTU보다 큰 패킷을 보내려고 하면 오류가 발생합니다.
IP_MULTICAST_IF DWORD IPv4 멀티캐스트 트래픽을 보내기 위한 나가는 인터페이스를 가져오거나 설정합니다. 이 옵션은 IPv4 멀티캐스트 트래픽을 수신하기 위한 기본 인터페이스를 변경하지 않습니다. 이 옵션을 설정하기 위한 입력 값은 네트워크 바이트 순서로 4 바이트 IPv4 주소입니다. 이 DWORD 매개 변수는 네트워크 바이트 순서의 인터페이스 인덱스일 수도 있습니다. IPv4 주소 0.0.0.0을 제외한 0.x.x.x 블록의 모든 IP 주소(0의 첫 번째 8진수)는 인터페이스 인덱스로 처리됩니다. 인터페이스 인덱스는 24비트 숫자이며 0.0.0.0/8 IPv4 주소 블록은 사용되지 않습니다(이 범위는 예약되어 있습니다). 인터페이스 인덱스 는 IPv4의 멀티캐스트 트래픽에 대한 기본 인터페이스를 지정하는 데 사용할 수 있습니다. optval이 0이면 멀티캐스트 트래픽을 보내기 위해 멀티캐스트를 받기 위한 기본 인터페이스가 지정됩니다. 이 옵션을 가져오면 optval 은 멀티캐스트 IPv4 트래픽을 호스트 바이트 순서로 보내기 위한 현재 기본 인터페이스 인덱스 를 반환합니다.
IP_MULTICAST_LOOP DWORD(부울) 하나 이상의 멀티캐스트 그룹에 조인된 소켓의 경우 선택한 멀티캐스트 인터페이스를 통해 해당 멀티캐스트 그룹에 전송 된 나가는 패킷의 복사본을 받을지 여부를 제어합니다. 기본적으로 IP_MULTICAST_LOOP 사용하도록 설정되므로(값 1/TRUE) 소켓 현재 컴퓨터에서 보낸 일치하는 멀티캐스트 패킷을 수신합니다. 이 옵션을 0/FALSE로 설정하면 소켓이 루프백 인터페이스에서 열려 있더라도 이 소켓이 로컬 컴퓨터에서 전송된 멀티캐스트를 수신하지 않습니다.

이는 POSIX 버전의 IP_MULTICAST_LOOP 호환되지 않습니다. 옵션은 수신 소켓에서 설정해야 합니다. 보내는 소켓에서 POSIX 옵션을 설정해야 합니다.
IP_MULTICAST_TTL DWORD 소켓의 IP 멀티캐스트 트래픽과 연결된 TTL 값을 설정/가져옵니다.
IP_OPTIONS char [] 나가는 패킷에 삽입할 IP 옵션을 지정합니다. 새 옵션을 설정하면 이전에 지정한 모든 옵션이 덮어씁니다. optval을 0으로 설정해도 이전에 지정한 모든 옵션이 제거됩니다. IP_OPTIONS 지원은 필요하지 않습니다. IP_OPTIONS 지원되는지 여부를 검사 getockopt를 사용하여 현재 옵션을 가져옵니다. getsockopt가 실패하면 IP_OPTIONS 지원되지 않습니다.
IP_ORIGINAL_ARRIVAL_IF DWORD(부울) LPFN_WSARECVMSG(WSARecvMsg) 함수가 데이터그램 소켓에 대해 패킷이 수신된 도착 인터페이스를 포함하는 선택적 제어 데이터를 반환해야 하는지를 나타냅니다. 이 옵션을 사용하면 패킷이 수신된 IPv4 인터페이스를 WSAMSG 구조체에서 반환할 수 있습니다. 이 옵션은 데이터그램 및 원시 소켓에서만 유효합니다(소켓 유형은 SOCK_DGRAM 또는 SOCK_RAW 있어야 합니다).
IP_PKTINFO DWORD WSARecvMsg 함수에서 패킷 정보를 반환해야 했음을 나타냅니다.
IP_RECEIVE_BROADCAST DWORD(부울) 브로드캐스트 수신을 허용하거나 차단합니다.
IP_RECVIF DWORD(부울) IP 스택이 데이터그램 소켓을 사용하여 패킷을 받은 인터페이스에 대한 세부 정보로 컨트롤 버퍼를 채워야 하는지 여부를 나타냅니다. 이 값이 true이면 LPFN_WSARECVMSG(WSARecvMsg) 함수는 데이터그램 소켓에 대해 패킷이 수신된 인터페이스를 포함하는 선택적 제어 데이터를 반환합니다. 이 옵션을 사용하면 패킷이 수신된 IPv4 인터페이스를 WSAMSG 구조체에서 반환할 수 있습니다. 이 옵션은 데이터그램 및 원시 소켓에서만 유효합니다(소켓 유형은 SOCK_DGRAM 또는 SOCK_RAW 있어야 합니다).
IP_RECVTOS DWORD(부울) IP 스택이 수신된 데이터그램의 TOS(서비스 유형) IPv4 헤더 필드가 포함된 메시지로 컨트롤 버퍼를 채워야 하는지 여부를 나타냅니다. 이 값이 true이면 LPFN_WSARECVMSG(WSARecvMsg) 함수는 수신된 데이터그램의 TOS IPv4 헤더 필드 값이 포함된 선택적 컨트롤 데이터를 반환합니다. 이 옵션을 사용하면 수신된 데이터그램의 TOS IPv4 헤더 필드가 WSAMSG 구조에 반환될 수 있습니다. 반환된 메시지 유형이 IP_TOS. TOS 필드의 모든 DSCP 및 ECN 비트가 반환됩니다. 이 옵션은 데이터그램 소켓에서만 유효합니다(소켓 유형은 SOCK_DGRAM 있어야 합니다).
IP_RECVTTL DWORD(부울) LPFN_WSARECVMSG (WSARecvMsg) 함수에 홉(TTL) 정보가 반환되어야 했음을 나타냅니다. setsockopt 호출 시 optval1로 설정된 경우 옵션이 사용하도록 설정됩니다. 0으로 설정하면 옵션이 비활성화됩니다. 이 옵션은 데이터그램 및 원시 소켓에만 유효합니다(소켓 유형은 SOCK_DGRAM 또는 SOCK_RAW).
IP_TOS DWORD(부울) 사용하지 마십시오. TOS(서비스 유형) 설정은 서비스 품질 API를 사용하여 설정해야 합니다. 자세한 내용은 플랫폼 SDK의 서비스 품질 섹션에서 차별화된 서비스를 참조하세요.
IP_TTL DWORD(부울) 나가는 데이터그램에서 IP 헤더의 TTL 필드에서 TCP/IP 서비스 공급자가 설정한 기본값을 변경합니다. IP_TTL 지원은 필요하지 않습니다. IP_TTL 지원되는지 여부를 검사 하려면 getsockopt를 사용하여 현재 옵션을 가져옵니다. getsockopt가 실패하면 IP_TTL 지원되지 않습니다.
IP_UNBLOCK_SOURCE ip_mreq_source 제공된 멀티캐스트 그룹 및 인터페이스에 지정된 소스를 보낸 사람으로 추가합니다.
IP_UNICAST_IF DWORD(IF_INDEX) IPv4 트래픽을 보내기 위한 나가는 인터페이스를 가져오거나 설정합니다. 이 옵션은 IPv4 트래픽을 수신하기 위한 기본 인터페이스를 변경하지 않습니다. 이 옵션은 멀티홈 컴퓨터에 중요합니다. 이 옵션을 설정하기 위한 입력 값은 네트워크 바이트 순서로 4 바이트 IPv4 주소입니다. 이 DWORD 매개 변수는 네트워크 바이트 순서의 인터페이스 인덱스여야 합니다. IPv4 주소 0.0.0.0을 제외한 0.x.x.x 블록의 모든 IP 주소(0의 첫 번째 8진수)는 인터페이스 인덱스로 처리됩니다. 인터페이스 인덱스는 24비트 숫자이며 0.0.0.0/8 IPv4 주소 블록은 사용되지 않습니다(이 범위는 예약되어 있습니다). 인터페이스 인덱스 는 IPv4에 대한 트래픽을 보내기 위한 기본 인터페이스를 지정하는 데 사용할 수 있습니다. GetAdaptersAddresses 함수를 사용하여 인터페이스 인덱스 정보를 가져올 수 있습니다. optval이 0이면 트래픽을 보내기 위한 기본 인터페이스가 지정되지 않음으로 설정됩니다. 이 옵션을 가져오면 optval 은 호스트 바이트 순서로 IPv4 트래픽을 보내기 위한 현재 기본 인터페이스 인덱스 를 반환합니다.
IP_USER_MTU DWORD 지정된 소켓에 대한 IP 계층 MTU(바이트)의 상한을 가져오거나 설정합니다. 값이 시스템의 예상 경로 MTU( IP_MTU 소켓 옵션을 쿼리하여 연결된 소켓에서 검색할 수 있음)보다 높은 경우 옵션은 적용되지 않습니다. 값이 낮으면 이보다 큰 아웃바운드 패킷이 조각화되거나 IP_DONTFRAGMENT 값에 따라 전송되지 않습니다. 기본값은 IP_UNSPECIFIED_USER_MTU (MAXULONG)입니다. 형식 안전의 경우 소켓 옵션을 직접 사용하는 대신 WSAGetIPUserMtuWSASetIPUserMtu 함수를 사용해야 합니다.
IP_WFP_REDIRECT_CONTEXT 제어 데이터가 있는 WSACMSGHDR 사용자 모드 WFP(Windows 필터링 플랫폼) 리디렉션 서비스에서 사용하는 UDP 소켓의 리디렉션 컨텍스트를 나타내는 데이터그램 소켓 보조 데이터 형식(cmsg_type)입니다.
IP_WFP_REDIRECT_RECORDS 제어 데이터가 있는 WSACMSGHDR 사용자 모드 WFP(Windows 필터링 플랫폼) 리디렉션 서비스에서 사용하는 UDP 소켓의 리디렉션 레코드를 나타내는 데이터그램 소켓 보조 데이터 형식(cmsg_type)입니다.

IP_PROTO 옵션에 대한 Windows 지원

옵션 Windows 10 Windows 8 Windows Server 2012 Windows 7 Windows Server 2008 Windows Vista
IP_ADD_IFLIST Windows 10 버전 1803부터
IP_ADD_MEMBERSHIP x x x x x x
IP_ADD_SOURCE_MEMBERSHIP x x x x x x
IP_BLOCK_SOURCE x x x x x x
IP_DEL_IFLIST Windows 10 버전 1803부터
IP_DONTFRAGMENT x x x x x x
IP_DROP_MEMBERSHIP x x x x x x
IP_DROP_SOURCE_MEMBERSHIP x x x x x x
IP_GET_IFLIST Windows 10 버전 1803부터
IP_HDRINCL x x x x x x
IP_IFLIST Windows 10 버전 1803부터
IP_MULTICAST_IF x x x x x x
IP_MULTICAST_LOOP x x x x x x
IP_MULTICAST_TTL x x x x x x
IP_OPTIONS x x x x x x
IP_ORIGINAL_ARRIVAL_IF x x x x
IP_PKTINFO x x x x x x
IP_RECEIVE_BROADCAST x x x x x x
IP_RECVIF Windows 10 버전 1703부터 x x x x x
IP_RECVTTL x
IP_TOS x x x
IP_TTL x x x x x x
IP_UNBLOCK_SOURCE x x x x x x
IP_UNICAST_IF x x x x x x
IP_WFP_REDIRECT_CONTEXT x x x
IP_WFP_REDIRECT_RECORDS x x x

옵션 Windows Server 2003 Windows XP
IP_ADD_IFLIST
IP_ADD_MEMBERSHIP x x
IP_ADD_SOURCE_MEMBERSHIP x x
IP_BLOCK_SOURCE x x
IP_DEL_IFLIST
IP_DONTFRAGMENT x x
IP_DROP_MEMBERSHIP x x
IP_DROP_SOURCE_MEMBERSHIP x x
IP_GET_IFLIST
IP_HDRINCL x x
IP_IFLIST
IP_MULTICAST_IF x x
IP_MULTICAST_LOOP x x
IP_MULTICAST_TTL x x
IP_OPTIONS x x
IP_ORIGINAL_ARRIVAL_IF
IP_PKTINFO x x
IP_RECEIVE_BROADCAST x x
IP_RECVIF
IP_RECVTTL
IP_TOS
IP_TTL x x
IP_UNBLOCK_SOURCE x x
IP_UNICAST_IF
IP_WFP_REDIRECT_CONTEXT
IP_WFP_REDIRECT_RECORDS

설명

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

Windows Server 2003 및 Windows XP용으로 릴리스된 플랫폼 SDK에서 IPPROTO_IP 수준은 Winsock2.h 헤더 파일에 정의됩니다. 일부 IPPROTO_IP 소켓 옵션은 Ws2tcpip.h 헤더 파일에 정의되어 있습니다. 나머지 IPPROTO_IP 소켓 옵션은 Winsock2.h 헤더 파일에 의해 자동으로 포함되는 Wsipv6ok.h 헤더 파일에 정의됩니다. Wsipv6ok.h 헤더 파일은 직접 사용하면 안 됩니다.

요구 사항

요구 사항
헤더
Ws2def.h(Winsock2.h 포함);
Ws2ipdef.h(Ws2tcpip.h 포함);
Wsipv6ok.h(Winsock2.h 포함)