IPPROTO_TCP 소켓 옵션

다음 표에서는 프로토콜 매개 변수가 TCP(IPPROTO_TCP )로 지정된 소켓 함수에 대한 프로토콜 매개 변수를 사용하여 IPv4 및 IPv6 주소 패밀리(AF_INET 및 AF_INET6)에 대해 만든 소켓에 적용되는 IPPROTO_TCP 소켓 옵션에 대해 설명합니다. 소켓 옵션을 가져오고 설정하는 방법에 대한 자세한 내용은 getsockoptsetsockopt 함수 참조 페이지를 참조하세요.

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

옵션

옵션 가져오기 설정 Optval 유형 Description
TCP_BSDURGENT DWORD(부울) TRUE이면 서비스 공급자는 신속한 데이터를 처리하기 위해 BSD(Berkeley Software Distribution) 스타일(기본값)을 구현합니다. 이 옵션은 TCP_EXPEDITED_1122 옵션의 역입니다. 이 옵션은 연결에서 한 번만 설정할 수 있습니다. 이 옵션을 설정하면 이 옵션을 끌 수 없습니다. 이 옵션은 서비스 공급자가 구현할 필요가 없습니다. 옵션은 기본적으로 사용하도록 설정됩니다( TRUE로 설정).
TCP_EXPEDITED_1122 DWORD(부울) TRUE이면 서비스 공급자는 RFC-1222에 지정된 대로 신속한 데이터를 구현합니다. 그렇지 않으면 BSD(Berkeley Software Distribution) 스타일(기본값)이 사용됩니다. 이 옵션은 연결에서 한 번만 설정할 수 있습니다. 이 옵션을 설정하면 이 옵션을 끌 수 없습니다. 이 옵션은 서비스 공급자가 구현할 필요가 없습니다.
TCP_FAIL_CONNECT_ON_ICMP_ERROR DWORD(부울) TRUE이면 WSAEHOSTUNREACH 값이 있는 ICMP 오류가 수신되면 연결 API 호출이 반환됩니다. 그러면 오류의 원본 주소는 TCP_ICMP_ERROR_INFO 소켓 옵션을 통해 사용할 수 있습니다. FALSE이면 소켓이 정상적으로 작동합니다. 기본값은 사용하지 않도록 설정됩니다( FALSE로 설정). 형식 안전성을 위해 소켓 옵션을 직접 사용하는 대신 WSAGetFailConnectOnIcmpErrorWSASetFailConnectOnIcmpError 함수를 사용해야 합니다.
TCP_ICMP_ERROR_INFO 아니요 ICMP_ERROR_INFO 실패한 연결 호출 중에 TCP 소켓에서 수신한 ICMP 오류의 정보를 검색합니다. TCP_FAIL_CONNECT_ON_ICMP_ERROR 이전에 사용하도록 설정되었고 연결 이 WSAEHOSTUNREACH를 반환한 TCP 소켓에서만 유효합니다. 쿼리가 차단되지 않습니다. 쿼리가 성공적으로 완료되고 반환된 optlen 값이 0이면 마지막 연결 호출 이후 ICMP 오류가 수신되지 않습니다. ICMP 오류가 수신되면 연결 이 다시 호출될 때까지 해당 정보를 사용할 수 있습니다. 정보는 ICMP_ERROR_INFO 구조로 반환됩니다. 형식 안전의 경우 소켓 옵션을 직접 사용하는 대신 WSAGetIcmpErrorInfo 함수를 사용해야 합니다.
TCP_KEEPCNT DWORD 연결이 종료되기 전에 전송될 TCP keep alive 프로브의 수를 가져오거나 설정합니다. TCP_KEEPCNT 255보다 큰 값으로 설정하는 것은 불법입니다.
TCP_MAXRT DWORD 이 값이 음수가 아닌 경우 원하는 연결 시간 제한(초)을 나타냅니다. -1인 경우 연결 시간 제한을 사용하지 않도록 설정하는 요청을 나타냅니다(즉, 연결이 영원히 다시 전송됨). 연결 시간 제한을 사용하지 않도록 설정하면 재전송 시간 제한이 각 재전송에 대해 기하급수적으로 증가하여 최대값인 60초까지 유지됩니다.
TCP_NODELAY DWORD(부울) TCP 소켓에 Nagle 알고리즘을 사용하거나 사용하지 않도록 설정합니다. 이 옵션은 기본적으로 사용하지 않도록 설정됩니다(FALSE로 설정).
TCP_TIMESTAMPS DWORD(부울) RFC 1323 타임스탬프를 사용하거나 사용하지 않도록 설정합니다. (set/get)-nettcpsetting에는 타임스탬프(기본값은 꺼져 있음), "타임스탬프"에 대한 전역 구성도 있습니다. 이 소켓 옵션을 설정하면 전역 구성 설정이 재정의됩니다.
TCP_FASTOPEN DWORD(부울) 연결을 여는 3방향 핸드셰이크 단계에서 데이터 전송을 시작할 수 있는 RFC 7413 TCP Fast Open을 사용하거나 사용하지 않도록 설정합니다. 빠른 열기를 사용하려면 ConnectEx 를 사용하여 초기 연결을 만들고 핸드셰이크 프로세스 중에 전송할 해당 함수의 lpSendBuffer 매개 변수에 데이터를 지정해야 합니다. lpSendBuffer의 일부 데이터는 Fast Open 프로토콜에 따라 전송됩니다.
TCP_KEEPIDLE DWORD 유지 프로브가 원격으로 전송되기 전에 TCP 연결이 유휴 상태로 유지되는 시간(초)을 가져오거나 설정합니다.

참고:
이 옵션은 Windows 10 버전 1709부터 사용할 수 있습니다.


TCP_KEEPINTVL DWORD TCP 연결이 다른 유지 프로브를 보내기 전에 유지 응답을 기다리는 시간(초)을 가져오거나 설정합니다.

참고:
이 옵션은 Windows 10 버전 1709부터 사용할 수 있습니다.


IPPROTO_TCP 옵션에 대한 Windows 지원

옵션 Windows 10 Windows 7 Windows Server 2008 Windows Vista
TCP_BSDURGENT x x x x
TCP_EXPEDITED_1122 x x x x
TCP_KEEPCNT Windows 10 버전 1703부터
TCP_MAXRT x x x x
TCP_NODELAY x x x x
TCP_TIMESTAMPS x x x x
TCP_FASTOPEN Windows 10 버전 1607부터

  옵션 Windows Server 2003 Windows XP Windows 2000 Windows NT4 Windows 9x/Me
TCP_BSDURGENT x x x x
TCP_EXPEDITED_1122 x x x
TCP_KEEPCNT
TCP_MAXRT
TCP_NODELAY x x x x
TCP_TIMESTAMPS
TCP_FASTOPEN

설명

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

요구 사항

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