Partilhar via


MLD e IGMP usando soquetes do Windows

O Windows Sockets habilita o MLD (Multicast Listener Discovery) no IPv6 e o IGMP (Internet Group Management Protocol) no 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 permitem 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 Final-State-Based Programação Multicast mais adiante nesta seção.

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

Opção de soquete Tipo de argumento
BLOQUEAR_FONTE_MULTICAST GROUP_SOURCE_REQ estrutura
MCAST_JOIN_GROUP GROUP_REQ estrutura
MCAST_JOIN_SOURCE_GROUP GROUP_SOURCE_REQ estrutura
MCAST_LEAVE_GROUP estrutura GROUP_REQ
MCAST_LEAVE_SOURCE_GROUP GROUP_SOURCE_REQ estrutura
Desbloquear origem MCAST (MCAST_UNBLOCK_SOURCE) GROUP_SOURCE_REQ estrutura

 

Um conjunto de opções de soquete está disponível para programação multicast que suporta apenas 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 é suportado no Windows Vista e versões posteriores. O Windows Sockets usa as seguintes opções de soquete:

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

 

Um conjunto de opções de soquete está disponível para programação multicast que suporta apenas 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 é suportado no Windows Vista e versões posteriores. O Windows Sockets usa as seguintes opções de soquete:

Opção de soquete Tipo de argumento
IP_ADD_MEMBERSHIP ip_mreq estrutura
IP_ADD_SOURCE_MEMBERSHIP ip_mreq_source estrutura
IP_BLOCK_SOURCE ip_mreq_source estrutura
IP_DROP_MEMBERSHIP ip_mreq estrutura
Cancelamento da Associação de Fonte IP ip_mreq_source estrutura
ORIGEM_DESBLOQUEAR_IP ip_mreq_source estrutura

 

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 de forma mais eficiente, uma vez que o roteador pode lidar com a filtragem. Quando apenas IGMPv2 está disponível, o host deve manipular a filtragem.

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

  • Os aplicativos de de qualquer fonte 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 de videoconferência que permite que todos os destinatários participem.
  • Aplicações de de fonte 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 utilização das opções de socket é ligeiramente diferente para cada uma.

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

  • Use MCAST_JOIN_GROUP para entrar num 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 o comando MCAST_LEAVE_GROUP para sair do grupo.

No Windows Vista e versões posteriores, as seguintes etapas se aplicam a aplicativos de código-fonte controlado:

  • Utilize MCAST_JOIN_SOURCE_GROUP para unir cada par grupo/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 etapas a seguir se aplicam a aplicativos de qualquer 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 etapas a seguir se aplicam a aplicativos de código-fonte controlado:

  • Use IP_ADD_SOURCE_MEMBERSHIP para unir cada par grupo/fonte.
  • 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 em que essas opções de soquete são definidas tem regras associadas. Para obter informações e solução de problemas sobre opções de soquete multicast, consulte Comportamento da opção de soquete multicast.