Compartilhar via


MLD e IGMP usando soquetes do Windows

O Windows Sockets habilita o MLD (Multicast Listener Discovery) no IPv6 e o IGMP (Protocolo de Gerenciamento de Grupo da Internet) em IPv4 para aplicativos multicast por meio do uso de opções de soquete e IOCTLs. Esta página descreve as opções de soquete que habilitam a programação multicast e descreve como elas são usadas. Para obter definições de cada opção de soquete, consulte a página Opções de Soquete .

Para obter informações sobre como usar IOCTLs para programação multicast, consulte Programação multicast baseada em estado final mais adiante nesta seção.

No Windows Vista e posteriores, um conjunto de opções de soquete está disponível para programação multicast que dá suporte a endereços IPv6 e IPv4. Essas opções de soquete são independentes de IP e podem ser usadas no IPv6 e no IPv4. No IPv6, essas opções de soquete usam MLDv2. No IPv4, essas opções de soquete usam IGMPv3. Essas opções independentes de IP são as opções de soquete preferenciais para programação multicast no Windows Vista e posteriores. O Windows Sockets usa as seguintes opções de soquete:

Opção de soquete Tipo de argumento
MCAST_BLOCK_SOURCE estrutura GROUP_SOURCE_REQ
MCAST_JOIN_GROUP estrutura GROUP_REQ
MCAST_JOIN_SOURCE_GROUP estrutura GROUP_SOURCE_REQ
MCAST_LEAVE_GROUP estrutura GROUP_REQ
MCAST_LEAVE_SOURCE_GROUP estrutura GROUP_SOURCE_REQ
MCAST_UNBLOCK_SOURCE estrutura GROUP_SOURCE_REQ

 

Um conjunto de opções de soquete está disponível para programação multicast que dá suporte apenas a endereços IPv6. Essas opções de soquete usam MLDv1 ou MLDv2. A versão do MLD usada depende da versão do Windows. O MLDv2 tem suporte no Windows Vista e posterior. O Windows Sockets usa as seguintes opções de soquete:

Opção de soquete Tipo de argumento
IPV6_ADD_MEMBERSHIP estrutura ipv6_mreq
IPV6_DROP_MEMBERSHIP estrutura ipv6_mreq

 

Um conjunto de opções de soquete está disponível para programação multicast que dá suporte apenas a endereços IPv4. Essas opções de soquete usam IGMPv3 ou IGMPv2. A versão do IGMP usada depende da versão do Windows. O IGMPv3 tem suporte no Windows Vista e posterior. O Windows Sockets usa as seguintes opções de soquete:

Opção de soquete Tipo de argumento
IP_ADD_MEMBERSHIP estrutura ip_mreq
IP_ADD_SOURCE_MEMBERSHIP estrutura ip_mreq_source
IP_BLOCK_SOURCE estrutura ip_mreq_source
IP_DROP_MEMBERSHIP estrutura ip_mreq
IP_DROP_SOURCE_MEMBERSHIP estrutura ip_mreq_source
IP_UNBLOCK_SOURCE estrutura ip_mreq_source

 

Quando o IGMPv3 está disponível, as opções IP_ADD_SOURCE_MEMBERSHIP, IP_BLOCK_SOURCE, IP_DROP_SOURCE_MEMBERSHIP e IP_UNBLOCK_SOURCE são tratadas com mais eficiência, pois o roteador pode lidar com a filtragem. Quando apenas IGMPv2 estiver disponível, o host deverá manipular a filtragem.

Há duas categorias nas quais a maioria dos aplicativos provavelmente cairá: qualquer fonte e fonte controlada.

  • Os aplicativos de origem aceitam todas as fontes por padrão, permitindo que fontes individuais sejam desativadas conforme necessário. Um exemplo de um aplicativo de qualquer fonte é uma chamada em videoconferência que permite que todos os destinatários participem.
  • Aplicativos de origem controlada limitam as fontes a uma determinada lista, como uma estação de rádio da Internet ou a transmissão de um evento notável. O processo de usar opções de soquete é ligeiramente diferente para cada um.

No Windows Vista e posteriores, as seguintes etapas se aplicam a aplicativos de origem qualquer:

  • Use MCAST_JOIN_GROUP para ingressar em um grupo.
  • Use MCAST_BLOCK_SOURCE para desativar uma determinada fonte, se necessário.
  • Use MCAST_UNBLOCK_SOURCE para permitir novamente uma fonte bloqueada, se necessário.
  • Use MCAST_LEAVE_GROUP para sair do grupo.

No Windows Vista e posteriores, as seguintes etapas se aplicam a aplicativos de origem controlada:

  • Use MCAST_JOIN_SOURCE_GROUP para unir cada grupo/par de origem.
  • Use MCAST_LEAVE_SOURCE_GROUP para deixar cada grupo/fonte ou use MCAST_LEAVE_GROUP para deixar todas as fontes, se o mesmo endereço de grupo for usado por todas as fontes.

As seguintes etapas se aplicam a aplicativos de origem:

  • Use IP_ADD_MEMBERSHIP para ingressar em um grupo (IPV6_ADD_MEMBERSHIP para IPv6).
  • Use IP_BLOCK_SOURCE para desativar uma determinada fonte, se necessário.
  • Use IP_UNBLOCK_SOURCE para permitir novamente uma fonte bloqueada, se necessário.
  • Use IP_DROP_MEMBERSHIP para sair do grupo (IPV6_DROP_MEMBERSHIP para IPv6).

As seguintes etapas se aplicam a aplicativos de origem controlada:

  • Use IP_ADD_SOURCE_MEMBERSHIP para unir cada grupo/par de origem.
  • Use IP_DROP_SOURCE_MEMBERSHIP para deixar cada grupo/fonte ou use IP_DROP_MEMBERSHIP para deixar todas as fontes, se o mesmo endereço de grupo for usado por todas as fontes.

A ordem na qual essas opções de soquete são definidas tem regras associadas. Para obter informações e informações de solução de problemas sobre opções de soquete multicast, consulte Comportamento da opção de soquete multicast.