IPPROTO_IP 소켓 옵션
다음 표에서는 IPv4 주소 패밀리(AF_INET)에 대해 만든 소켓에 적용되는 IPPROTO_IP 소켓 옵션에 대해 설명합니다. 소켓 옵션 가져오기 및 설정에 대한 자세한 내용은 getsockopt 및 setsockopt 함수 참조 페이지를 참조하세요.
프로토콜을 열거하고 설치된 각 프로토콜에 대해 지원되는 속성을 검색하려면 WSAEnumProtocols, WSCEnumProtocols 또는 WSCEnumProtocols32 함수를 사용합니다.
일부 소켓 옵션에는 이러한 테이블이 전달할 수 있는 것보다 더 많은 설명이 필요합니다. 이러한 옵션에는 추가 페이지에 대한 링크가 포함됩니다.
옵션
옵션 | 가져오기 | 설정 | Optval 형식 | 설명 |
---|---|---|---|---|
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_IFLIST 및 IP_DEL_IFLIST 사용하여 IFLIST를 편집합니다. |
IP_MTU | 예 | DWORD | 시스템의 예상 경로 MTU를 가져옵니다. 소켓을 연결해야 합니다. | |
IP_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 나가는 모든 패킷이 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 지원되는지 확인하려면 getsockopt를 사용하여 현재 옵션을 가져옵니다. 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_RECVECN | 예 | 예 | DWORD(부울) | IP 스택이 수신된 데이터그램에서 TOS(서비스 유형) IPv4 헤더 필드의 ECN 비트를 포함하는 메시지로 컨트롤 버퍼를 채워야 하는지 여부를 나타냅니다. 이 값이 true 이면 LPFN_WSARECVMSG(WSARecvMsg) 함수는 수신된 데이터그램의 TOS IPv4 헤더 필드 값의 ECN 비트를 포함하는 선택적 컨트롤 데이터를 반환합니다. 이 옵션을 사용하면 받은 데이터그램의 TOS IPv4 헤더 필드의 ECN 비트를 WSAMSG 구조체에 반환할 수 있습니다. 반환된 메시지 유형은 IP_ECN. TOS 필드의 ECN 비트 2개 모두 반환됩니다. 이 옵션은 데이터그램 및 원시 소켓에서만 유효합니다(소켓 유형은 SOCK_DGRAM 또는 SOCK_RAW 있어야 합니다). 형식 안전을 위해 소켓 옵션을 직접 사용하는 대신 WSAGetRecvIPEcn 및 WSASetRecvIPEcn 함수를 사용해야 합니다. |
IP_RECVTTL | 예 | 예 | DWORD(부울) | 홉(TTL) 정보가 LPFN_WSARECVMSG(WSARecvMsg) 함수에 반환되어야 임을 나타냅니다. setsockopt 호출 시 optval이 1로 설정된 경우 옵션이 활성화됩니다. 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)입니다. 형식 안전을 위해 소켓 옵션을 직접 사용하는 대신 WSAGetIPUserMtu 및 WSASetIPUserMtu 함수를 사용해야 합니다. |
IP_WFP_REDIRECT_CONTEXT | 예 | 예 | 제어 데이터가 있는 WSACMSGHDR | 사용자 모드 WFP(Windows Filtering Platform) 리디렉션 서비스에서 사용하는 UDP 소켓의 리디렉션 컨텍스트를 나타내는 데이터그램 소켓 보조 데이터 형식(cmsg_type)입니다. |
IP_WFP_REDIRECT_RECORDS | 예 | 예 | 제어 데이터가 있는 WSACMSGHDR | 사용자 모드 WFP(Windows Filtering Platform) 리디렉션 서비스에서 사용하는 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 | 예 | 예 | 예 | 예 | 예 | 예 |
IP_ADD_SOURCE_MEMBERSHIP | 예 | 예 | 예 | 예 | 예 | 예 |
IP_BLOCK_SOURCE | 예 | 예 | 예 | 예 | 예 | 예 |
IP_DEL_IFLIST | Windows 10 버전 1803부터 | |||||
IP_DONTFRAGMENT | 예 | 예 | 예 | 예 | 예 | 예 |
IP_DROP_MEMBERSHIP | 예 | 예 | 예 | 예 | 예 | 예 |
IP_DROP_SOURCE_MEMBERSHIP | 예 | 예 | 예 | 예 | 예 | 예 |
IP_GET_IFLIST | Windows 10 버전 1803부터 | |||||
IP_HDRINCL | 예 | 예 | 예 | 예 | 예 | 예 |
IP_IFLIST | Windows 10 버전 1803부터 | |||||
IP_MULTICAST_IF | 예 | 예 | 예 | 예 | 예 | 예 |
IP_MULTICAST_LOOP | 예 | 예 | 예 | 예 | 예 | 예 |
IP_MULTICAST_TTL | 예 | 예 | 예 | 예 | 예 | 예 |
IP_OPTIONS | 예 | 예 | 예 | 예 | 예 | 예 |
IP_ORIGINAL_ARRIVAL_IF | 예 | 예 | 예 | 예 | ||
IP_PKTINFO | 예 | 예 | 예 | 예 | 예 | 예 |
IP_RECEIVE_BROADCAST | 예 | 예 | 예 | 예 | 예 | 예 |
IP_RECVIF | Windows 10 버전 1703부터 | 예 | 예 | 예 | 예 | 예 |
IP_RECVTTL | 예 | |||||
IP_TOS | 예 | 예 | 예 | |||
IP_TTL | 예 | 예 | 예 | 예 | 예 | 예 |
IP_UNBLOCK_SOURCE | 예 | 예 | 예 | 예 | 예 | 예 |
IP_UNICAST_IF | 예 | 예 | 예 | 예 | 예 | 예 |
IP_WFP_REDIRECT_CONTEXT | 예 | 예 | 예 | |||
IP_WFP_REDIRECT_RECORDS | 예 | 예 | 예 |
옵션 | Windows Server 2003 | Windows XP |
---|---|---|
IP_ADD_IFLIST | ||
IP_ADD_MEMBERSHIP | 예 | 예 |
IP_ADD_SOURCE_MEMBERSHIP | 예 | 예 |
IP_BLOCK_SOURCE | 예 | 예 |
IP_DEL_IFLIST | ||
IP_DONTFRAGMENT | 예 | 예 |
IP_DROP_MEMBERSHIP | 예 | 예 |
IP_DROP_SOURCE_MEMBERSHIP | 예 | 예 |
IP_GET_IFLIST | ||
IP_HDRINCL | 예 | 예 |
IP_IFLIST | ||
IP_MULTICAST_IF | 예 | 예 |
IP_MULTICAST_LOOP | 예 | 예 |
IP_MULTICAST_TTL | 예 | 예 |
IP_OPTIONS | 예 | 예 |
IP_ORIGINAL_ARRIVAL_IF | ||
IP_PKTINFO | 예 | 예 |
IP_RECEIVE_BROADCAST | 예 | 예 |
IP_RECVIF | ||
IP_RECVTTL | ||
IP_TOS | ||
IP_TTL | 예 | 예 |
IP_UNBLOCK_SOURCE | 예 | 예 |
IP_UNICAST_IF | ||
IP_WFP_REDIRECT_CONTEXT | ||
IP_WFP_REDIRECT_RECORDS |
설명
Windows Vista 이상용으로 릴리스된 Microsoft Windows SDK(소프트웨어 개발 키트)에서 헤더 파일의 구성이 변경되었으며 IPPROTO_IP 수준이 Winsock2.h 헤더 파일에 자동으로 포함되는 Ws2def.h 헤더 파일에 정의됩니다. 일부 IPPROTO_IP 소켓 옵션은 Ws2tcpip.h 헤더 파일에 의해 자동으로 포함되는 Ws2ipdef.h 헤더 파일에 정의됩니다. 나머지 IPPROTO_IP 소켓 옵션은 Winsock2.h 헤더 파일에 의해 자동으로 포함되는 Wsipv6ok.h 헤더 파일에 정의됩니다. Ws2def.h, Ws2ipdef.h 및 Wsipv6ok.h 헤더 파일은 직접 사용하면 안 됩니다.
Windows Server 2003 및 Windows XP용으로 릴리스된 플랫폼 SDK에서 IPPROTO_IP 수준은 Winsock2.h 헤더 파일에 정의됩니다. 일부 IPPROTO_IP 소켓 옵션은 Ws2tcpip.h 헤더 파일에 정의되어 있습니다. 나머지 IPPROTO_IP 소켓 옵션은 Winsock2.h 헤더 파일에 의해 자동으로 포함되는 Wsipv6ok.h 헤더 파일에 정의됩니다. Wsipv6ok.h 헤더 파일은 직접 사용하면 안 됩니다.
요구 사항
요구 사항 | 값 |
---|---|
헤더 |
|