IPPROTO_IP opções de soquete
As tabelas a seguir descrevem IPPROTO_IP opções de soquete que se aplicam a soquetes criados para a família de endereços IPv4 (AF_INET). Consulte as páginas de referência getsockopt e função setsockopt para obter mais informações sobre como obter e definir opções de soquete.
Para enumerar protocolos e descobrir propriedades suportadas para cada protocolo instalado, use o WSAEnumProtocols, WSCEnumProtocolsou WSCEnumProtocols32 função.
Algumas opções de soquete exigem mais explicações do que essas tabelas podem transmitir; tais opções contêm links para páginas adicionais.
Opções
Opção | Obter | Conjunto | Tipo de optval | Descrição |
---|---|---|---|---|
IP_ADD_IFLIST | Sim | DWORD (IF_INDEX) | Adiciona um índice de interface à IFLIST associada à opção IP_IFLIST. | |
IP_ADD_MEMBERSHIP | Sim | ip_mreq | Junte o soquete ao grupo de multicast fornecido na interface especificada. | |
IP_ADD_SOURCE_MEMBERSHIP | Sim | ip_mreq_source | Junte-se ao grupo de multicast fornecido na interface fornecida e aceite dados provenientes do endereço de origem fornecido. | |
IP_BLOCK_SOURCE | Sim | ip_mreq_source | Remove a fonte dada como remetente para o grupo e a interface de multicast fornecidos. | |
IP_DEL_IFLIST | Sim | DWORD (IF_INDEX) | Remove um índice de interface da IFLIST associado à opção IP_IFLIST. As entradas podem ser removidas apenas pelo aplicativo, portanto, esteja ciente de que as entradas podem ficar obsoletas quando uma interface for removida. | |
IP_DONTFRAGMENT | Sim | Sim | DWORD (booleano) | Indica que os dados não devem ser fragmentados independentemente da MTU local. Válido apenas para protocolos orientados a mensagens. Os fornecedores de TCP/IP da Microsoft respeitam esta opção para UDP e ICMP. |
IP_DROP_MEMBERSHIP | Sim | ip_mreq | Deixa o grupo de multicast especificado da interface especificada. Os provedores de serviços devem oferecer suporte a essa opção quando o multicast é suportado. O suporte é indicado na estrutura WSAPROTOCOL_INFO retornada por uma WSAEnumProtocols chamada de função com o seguinte: XPI_SUPPORT_MULTIPOINT=1, XP1_MULTIPOINT_CONTROL_PLANE=0, XP1_MULTIPOINT_DATA_PLANE=0. | |
IP_DROP_SOURCE_MEMBERSHIP | Sim | ip_mreq_source | Descarta a associação para o grupo, interface e endereço de origem de multicast fornecidos. | |
IP_GET_IFLIST | Sim | DWORD[] (IF_INDEX[]) | Obtém a IFLIST atual associada à opção IP_IFLIST. Retorna erro se IP_IFLIST não estiver habilitado. | |
IP_HDRINCL | Sim | Sim | DWORD (booleano) | Quando definido como TRUE, indica que o aplicativo fornece o cabeçalho IP. Aplica-se apenas a SOCK_RAW soquetes. O provedor de serviços TCP/IP pode definir o campo ID, se o valor fornecido pelo aplicativo for zero. A opção IP_HDRINCL é aplicada apenas ao SOCK_RAW tipo de protocolo. Um provedor de serviços TCP/IP que ofereça suporte a SOCK_RAW também deve oferecer suporte a IP_HDRINCL. |
IP_IFLIST | Sim | Sim | DWORD (booleano) | Obtém ou define o estado IP_IFLIST do soquete. Quando essa opção é definida como true, a receção do Datagram é restrita às interfaces que estão na IFLIST. Os datagramas recebidos em quaisquer outras interfaces são ignorados. IFLIST começa vazio. Use IP_ADD_IFLIST e IP_DEL_IFLIST para editar a IFLIST. |
IP_MTU | Sim | DWORD | Obtém a estimativa do sistema do caminho MTU. O soquete deve estar conectado. | |
IP_MTU_DISCOVER | Sim | Sim | DWORD (PMTUD_STATE) | Obtém ou define o estado de descoberta de MTU do caminho para o soquete. O valor padrão é IP_PMTUDISC_NOT_SET. Para soquetes de fluxo, IP_PMTUDISC_NOT_SET e IP_PMTUDISC_DO executarão a descoberta de MTU de caminho. IP_PMTUDISC_DONT e IP_PMTUDISC_PROBE desativarão a descoberta de MTU do caminho. Para soquetes de datagrama, IP_PMTUDISC_DO forçará todos os pacotes de saída a terem o bit DF definido e uma tentativa de enviar pacotes maiores que o MTU de caminho resultará em um erro. IP_PMTUDISC_DONT forçará todos os pacotes de saída a terem o bit DF não definido, e os pacotes serão fragmentados de acordo com a MTU da interface. IP_PMTUDISC_PROBE forçará todos os pacotes de saída a terem o bit DF definido, e uma tentativa de enviar pacotes maiores que a MTU da interface resultará em um erro. |
IP_MULTICAST_IF | Sim | Sim | DWORD | Obtém ou define a interface de saída para enviar tráfego de multicast IPv4. Esta opção não altera a interface padrão para receber tráfego de multicast IPv4. O valor de entrada para definir essa opção é um endereço IPv4 de 4 bytes na ordem de bytes da rede. Este parâmetro DWORD também pode ser um índice de interface na ordem de bytes da rede. Qualquer endereço IP no bloco 0.x.x.x (primeiro octeto de 0), exceto o endereço IPv4 0.0.0.0, é tratado como um índice de interface. Um índice de interface é um número de 24 bits e o bloco de endereços IPv4 0.0.0.0/8 não é usado (esse intervalo é reservado). O índice de interface pode ser usado para especificar a interface padrão para o tráfego de multicast para IPv4. Se optval for zero, a interface padrão para receber multicast será especificada para o envio de tráfego de multicast. Ao obter essa opção, o optval retorna o índice de interface padrão atual para enviar tráfego IPv4 multicast na ordem de bytes do host. |
IP_MULTICAST_LOOP | Sim | Sim | DWORD (booleano) | Para um soquete que está unido a um ou mais grupos de multicast, isso controla se ele receberá uma cópia de pacotes de de saída enviados para esses grupos de multicast por meio da interface de multicast selecionada. Por padrão, IP_MULTICAST_LOOP está habilitado (valor 1/TRUE), portanto, os soquetes receberão pacotes multicast correspondentes enviados pela máquina atual. Desativar essa opção (definindo-a como 0/FALSE) significa que esse soquete não receberá multicasts enviados da máquina local, mesmo que o soquete esteja aberto na interface de loopback. Isso não é compatível com a versão POSIX do IP_MULTICAST_LOOP — a opção deve ser definida no soquete de receção; enquanto a opção POSIX deve ser definida no soquete de envio. |
IP_MULTICAST_TTL | Sim | Sim | DWORD | Define / obtém o valor TTL associado ao tráfego de multicast IP no soquete. |
IP_OPTIONS | Sim | Sim | char [] | Especifica as opções de IP a serem inseridas em pacotes de saída. A definição de novas opções substitui todas as opções especificadas anteriormente. Definir optval como zero remove todas as opções especificadas anteriormente. IP_OPTIONS apoio não é necessário; Para verificar se IP_OPTIONS é suportado, use GetSockopt para obter as opções atuais. Se getsockopt falhar, IP_OPTIONS não é suportado. |
IP_ORIGINAL_ARRIVAL_IF | Sim | Sim | DWORD (booleano) | Indica se a funçãoLPFN_WSARECVMSG (WSARecvMsg) deve retornar dados de controle opcionais contendo a interface de chegada onde o pacote foi recebido para soquetes de datagrama. Essa opção permite que a interface IPv4 onde o pacote foi recebido seja retornada na estruturaWSAMSG. Esta opção só é válida em datagramas e soquetes brutos (o tipo de soquete deve ser SOCK_DGRAM ou SOCK_RAW). |
IP_PKTINFO | Sim | Sim | DWORD | Indica que as informações do pacote devem ser retornadas pela função WSARecvMsg. |
IP_RECEIVE_BROADCAST | Sim | Sim | DWORD (booleano) | Permite ou bloqueia a receção de transmissão. |
IP_RECVIF | Sim | Sim | DWORD (booleano) | Indica se a pilha IP deve preencher o buffer de controle com detalhes sobre qual interface recebeu um pacote com um soquete de datagrama. Quando esse valor for true, a funçãoLPFN_WSARECVMSG (WSARecvMsg) retornará dados de controle opcionais contendo a interface onde o pacote foi recebido para soquetes de datagrama. Essa opção permite que a interface IPv4 onde o pacote foi recebido seja retornada na estruturaWSAMSG. Esta opção só é válida em datagramas e soquetes brutos (o tipo de soquete deve ser SOCK_DGRAM ou SOCK_RAW). |
IP_RECVTOS | Sim | Sim | DWORD (booleano) | Indica se a pilha de IP deve preencher o buffer de controle com uma mensagem contendo o campo de cabeçalho IPv4 Tipo de Serviço (TOS) em um datagrama recebido. Quando esse valor for true, a funçãoLPFN_WSARECVMSG (WSARecvMsg) retornará dados de controle opcionais contendo o valor do campo de cabeçalho IPv4 TOS do datagrama recebido. Essa opção permite que o campo de cabeçalho IPv4 TOS do datagrama recebido seja retornado na estruturaWSAMSG. O tipo de mensagem retornada será IP_TOS. Todos os bits DSCP e ECN do campo TOS serão retornados. Esta opção só é válida em soquetes de datagrama (o tipo de soquete deve ser SOCK_DGRAM). |
IP_RECVECN | Sim | Sim | DWORD (booleano) | Indica se a pilha de IP deve preencher o buffer de controle com uma mensagem contendo os bits ECN do campo de cabeçalho IPv4 do tipo de serviço (TOS) em um datagrama recebido. Quando esse valor for true, a funçãoLPFN_WSARECVMSG (WSARecvMsg) retornará dados de controle opcionais contendo os bits ECN do valor do campo de cabeçalho IPv4 TOS do datagrama recebido. Esta opção permite que os bits ECN do campo de cabeçalho IPv4 TOS do datagrama recebido sejam retornados na estruturaWSAMSG. O tipo de mensagem retornada será IP_ECN. Todos os 2 bits ECN do campo TOS serão devolvidos. Esta opção só é válida em datagramas e soquetes brutos (o tipo de soquete deve ser SOCK_DGRAM ou SOCK_RAW). Para segurança de tipo, você deve usar o WSAGetRecvIPEcn e WSASetRecvIPEcn funções em vez de usar a opção de soquete diretamente. |
IP_RECVTTL | Sim | Sim | DWORD (booleano) | Indica que as informações de salto (TTL) devem ser retornadas na funçãoLPFN_WSARECVMSG (WSARecvMsg). Se optval estiver definido como 1 na chamada para setsockopt, a opção estará ativada. Se definido como 0, a opção está desativada. Esta opção só é válida para datagrama e soquetes brutos (o tipo de soquete deve ser SOCK_DGRAM ou SOCK_RAW). |
IP_TOS | Sim | Sim | DWORD (booleano) | Não utilizar. As configurações de tipo de serviço (TOS) só devem ser definidas usando a API de Qualidade de Serviço. Consulte de Serviços Diferenciados na seção Qualidade de Serviço do SDK da plataforma para obter mais informações. |
IP_TTL | Sim | Sim | DWORD (booleano) | Altera o valor padrão definido pelo provedor de serviços TCP/IP no campo TTL do cabeçalho IP em datagramas de saída. IP_TTL apoio não é necessário; Para verificar se IP_TTL é suportado, use GetSockopt para obter as opções atuais. Se getsockopt falhar, IP_TTL não é suportado. |
IP_UNBLOCK_SOURCE | Sim | ip_mreq_source | Adiciona a fonte fornecida como remetente ao grupo e interface de multicast fornecidos. | |
IP_UNICAST_IF | Sim | Sim | DWORD (IF_INDEX) | Obtém ou define a interface de saída para enviar tráfego IPv4. Esta opção não altera a interface padrão para receber tráfego IPv4. Esta opção é importante para computadores multihomed. O valor de entrada para definir essa opção é um endereço IPv4 de 4 bytes na ordem de bytes da rede. Este parâmetro DWORD deve ser um índice de interface na ordem de bytes da rede. Qualquer endereço IP no bloco 0.x.x.x (primeiro octeto de 0), exceto o endereço IPv4 0.0.0.0, é tratado como um índice de interface. Um índice de interface é um número de 24 bits e o bloco de endereços IPv4 0.0.0.0/8 não é usado (esse intervalo é reservado). O índice de interface pode ser usado para especificar a interface padrão para enviar tráfego para IPv4. O função GetAdaptersAddresses pode ser usado para obter as informações do índice da interface. Se optval for zero, a interface padrão para enviar tráfego será definida como não especificada. Ao obter essa opção, o optval retorna o índice de interface padrão atual para enviar tráfego IPv4 na ordem de bytes do host. |
IP_USER_MTU | Sim | Sim | DWORD | Obtém ou define um limite superior na MTU da camada IP (em bytes) para o soquete determinado. Se o valor for maior do que a estimativa do sistema do caminho MTU (que você pode recuperar em um soquete conectado consultando a opção de soquete IP_MTU), a opção não terá efeito. Se o valor for menor, os pacotes de saída maiores do que isso serão fragmentados ou não serão enviados, dependendo do valor de IP_DONTFRAGMENT. O valor padrão é IP_UNSPECIFIED_USER_MTU (MAXULONG). Para segurança de tipo, você deve usar o WSAGetIPUserMtu e WSASetIPUserMtu funções em vez de usar a opção de soquete diretamente. |
IP_WFP_REDIRECT_CONTEXT | Sim | Sim | WSACMSGHDR com dados de controlo | Um tipo de dados auxiliar de soquete de datagrama (cmsg_type) para indicar o contexto de redirecionamento para um soquete UDP usado por um serviço de redirecionamento WFP (Plataforma de Filtragem do Windows) de modo de usuário. |
IP_WFP_REDIRECT_RECORDS | Sim | Sim | WSACMSGHDR com dados de controlo | Um tipo de dados auxiliar de soquete de datagrama (cmsg_type) para indicar o registro de redirecionamento para um soquete UDP usado por um serviço de redirecionamento WFP (Plataforma de Filtragem do Windows) de modo de usuário. |
Suporte do Windows para opções de IP_PROTO
Opção | Janelas 10 | Janelas 8 | Windows Server 2012 | Janelas 7 | Windows Server 2008 | Windows Vista |
---|---|---|---|---|---|---|
IP_ADD_IFLIST | A partir do Windows 10, versão 1803 | |||||
IP_ADD_MEMBERSHIP | Sim | Sim | Sim | Sim | Sim | Sim |
IP_ADD_SOURCE_MEMBERSHIP | Sim | Sim | Sim | Sim | Sim | Sim |
IP_BLOCK_SOURCE | Sim | Sim | Sim | Sim | Sim | Sim |
IP_DEL_IFLIST | A partir do Windows 10, versão 1803 | |||||
IP_DONTFRAGMENT | Sim | Sim | Sim | Sim | Sim | Sim |
IP_DROP_MEMBERSHIP | Sim | Sim | Sim | Sim | Sim | Sim |
IP_DROP_SOURCE_MEMBERSHIP | Sim | Sim | Sim | Sim | Sim | Sim |
IP_GET_IFLIST | A partir do Windows 10, versão 1803 | |||||
IP_HDRINCL | Sim | Sim | Sim | Sim | Sim | Sim |
IP_IFLIST | A partir do Windows 10, versão 1803 | |||||
IP_MULTICAST_IF | Sim | Sim | Sim | Sim | Sim | Sim |
IP_MULTICAST_LOOP | Sim | Sim | Sim | Sim | Sim | Sim |
IP_MULTICAST_TTL | Sim | Sim | Sim | Sim | Sim | Sim |
IP_OPTIONS | Sim | Sim | Sim | Sim | Sim | Sim |
IP_ORIGINAL_ARRIVAL_IF | Sim | Sim | Sim | Sim | ||
IP_PKTINFO | Sim | Sim | Sim | Sim | Sim | Sim |
IP_RECEIVE_BROADCAST | Sim | Sim | Sim | Sim | Sim | Sim |
IP_RECVIF | A partir do Windows 10, versão 1703 | Sim | Sim | Sim | Sim | Sim |
IP_RECVTTL | Sim | |||||
IP_TOS | Sim | Sim | Sim | |||
IP_TTL | Sim | Sim | Sim | Sim | Sim | Sim |
IP_UNBLOCK_SOURCE | Sim | Sim | Sim | Sim | Sim | Sim |
IP_UNICAST_IF | Sim | Sim | Sim | Sim | Sim | Sim |
IP_WFP_REDIRECT_CONTEXT | Sim | Sim | Sim | |||
IP_WFP_REDIRECT_RECORDS | Sim | Sim | Sim |
Opção | Windows Server 2003 | Janelas XP |
---|---|---|
IP_ADD_IFLIST | ||
IP_ADD_MEMBERSHIP | Sim | Sim |
IP_ADD_SOURCE_MEMBERSHIP | Sim | Sim |
IP_BLOCK_SOURCE | Sim | Sim |
IP_DEL_IFLIST | ||
IP_DONTFRAGMENT | Sim | Sim |
IP_DROP_MEMBERSHIP | Sim | Sim |
IP_DROP_SOURCE_MEMBERSHIP | Sim | Sim |
IP_GET_IFLIST | ||
IP_HDRINCL | Sim | Sim |
IP_IFLIST | ||
IP_MULTICAST_IF | Sim | Sim |
IP_MULTICAST_LOOP | Sim | Sim |
IP_MULTICAST_TTL | Sim | Sim |
IP_OPTIONS | Sim | Sim |
IP_ORIGINAL_ARRIVAL_IF | ||
IP_PKTINFO | Sim | Sim |
IP_RECEIVE_BROADCAST | Sim | Sim |
IP_RECVIF | ||
IP_RECVTTL | ||
IP_TOS | ||
IP_TTL | Sim | Sim |
IP_UNBLOCK_SOURCE | Sim | Sim |
IP_UNICAST_IF | ||
IP_WFP_REDIRECT_CONTEXT | ||
IP_WFP_REDIRECT_RECORDS |
Comentários
No Microsoft Windows Software Development Kit (SDK) lançado para Windows Vista e posterior, a organização dos arquivos de cabeçalho foi alterada e IPPROTO_IP nível é definido no arquivo de cabeçalho Ws2def.h que é incluído automaticamente no arquivo de cabeçalho Winsock2.h. Algumas das opções de soquete IPPROTO_IP são definidas no arquivo de cabeçalho Ws2ipdef.h que é incluído automaticamente pelo arquivo de cabeçalho Ws2tcpip.h. As opções de soquete IPPROTO_IP restantes são definidas no arquivo de cabeçalho Wsipv6ok.h que é incluído automaticamente pelo arquivo de cabeçalho Winsock2.h. O Ws2def.h, Ws2ipdef.he Wsipv6ok.h arquivos de cabeçalho nunca devem ser usados diretamente.
No Platform SDK lançado para Windows Server 2003 e Windows XP, o nível de IPPROTO_IP é definido no Winsock2.h arquivo de cabeçalho. Algumas das opções de soquete IPPROTO_IP são definidas no arquivo de cabeçalho Ws2tcpip.h. As opções de soquete IPPROTO_IP restantes são definidas no arquivo de cabeçalho Wsipv6ok.h que é incluído automaticamente pelo arquivo de cabeçalho Winsock2.h. O arquivo de cabeçalho Wsipv6ok.h nunca deve ser usado diretamente.
Requerimentos
Exigência | Valor |
---|---|
Cabeçalho |
|