Datagramas IP Multicast que chegam são recebidos pelos protocolos de níveis superiores usando a mesma operação "Receive IP", como se fossem datagramas unicast. Seleção de um protocolo de nível superior destino é baseado no campo protocolo no cabeçalho do IP, independente do endereço IP destino. Contudo, antes que quaisquer datagramas destinados a um grupo particular sejam recebidos, um protocolo de nível superior deve pedir ao módulo IP para participar do grupo. Deste modo, a interface de serviço IP deve ser estendida para oferecer duas novas operações:
JoinHostGroup (endereço-grupo, interface)
e
LeaveHostGroup(endereço-grupo, interface)
A operação JoinHostGroup faz uma requisição solicitando que o host torne-se membro do grupo de host identificado pelo "endereço-grupo" em uma determinada interface de rede. O argumento interface pode ser omitido em hosts que suportem apenas uma interface. Para hosts associados a mais de uma rede, o protocolo de nível superior pode não especificar a interface; neste caso, a requisição será atendida através de uma interface default para enviar datagramas multicast.
É possível participar do mesmo grupo em mais de uma interface, sendo que neste caso datagramas multicast duplicados podem ser recebidos. Também é possível que mais de um protocolo de nível superior faça a requisição para participar de um mesmo grupo.
Ambas as operações devem retornar imediatamente por serem não-bloqueantes, indicando sucesso ou falha. A operação pode falhar devido a endereços de grupo ou interfaces inválidas. JoinHostGroup pode falhar ainda pela falta de recursos locais. LeaveHostGroup pode falhar se o host não pertencer ao grupo determinado. Esta operação pode retornar com sucesso, mas a associação pode continuar existindo se mais de um protocolo superior tiver requisitado participação no mesmo grupo.
Para suportar a recepção de datagramas IP Multicast, o módulo IP deve ser estendido para manter uma lista de participantes de grupos de host associados a cada interface de rede. Quando um datagrama é recebido, destinado a um deste grupos, é realizado exatamente da mesma maneira como datagramas destinados a um endereço individual de host.
Pacotes que estejam chegando destinados a grupos aos quais o host não pertença são descartados sem gerar nenhuma informação de erro ou log. Em hosts com mais de uma interface de rede, se um datagrama chega via uma dada interface, destinada a um grupo para o qual o host pertence em outra interface, o datagrama é também descartado.
Um datagrama não é rejeitado por ter um time-to-live de 1 ( isto é, o time-to-live não é automaticamente decrementado em datagramas que chegam e que não sejam reenviados ). Um datagrama que chegue com um endereço de grupo em seu campo endereço fonte é descartado. Um mensagem de erro ICMP (destino inalcançavel, tempo excedido, problema com parâmetros) nunca é gerada em resposta a um datagrama destinado a um grupo de host.
A lista de participantes de grupos são atualizadas sempre que as primitivas JoinHostGroup e LeaveHostGroup são requisitadas por níveis superiores. Cada associação deve ter um contador de referência ou mecanismo similar para manipular várias requisições de join e leave para o mesmo grupo. Na primeira requisição de join e na última requisição de leave em uma determinada interface, o módulo de rede local daquela interface é notificado, de modo que ele possa atualizar seus filtros de recepção multicast.
Pacotes multicast que chegam a rede local são entregues ao módulo IP utilizando a mesma operação "Receive Local" como pacotes unicast da rede local. Para permitir o módulo IP informar ao módulo de rede local que pacotes multicast aceitar, a interface de serviço de rede local é estendida com a finalidade de incrementar duas novas operações:
JoinLocalGroup (endereço-grupo) e
LeaveLocalGroup (endereço-grupo)
onde endereço-grupo é o endereço de grupo de host. A operação JoinLocalGroup requisita ao módulo de rede local que aceite e entregue os pacotes subsequentes destinados a um dado endereço de grupo. A operação LeaveLocalGroup requisita ao módulo de rede local que pare de entregar pacotes destinados a um dado endereço de grupo de host. O módulo de rede local deve mapear os endereços IP Multicast para endereços de rede local como é requerido para atualizar seus filtros de recepção multicast. Qualquer módulo de rede local é livre para ignorar requisições LeaveLocalGroup, e pode entregar pacote destinados a mais endereços que apenas aqueles especificados nas requisições JoinLocalGroup, se ele é incapaz de filtrar pacotes.
O módulo de rede local não deve entregar a ele mesmo pacotes multicast que tenha sido transmitido por ele próprio. Loopback de multicast é manipulado no nível IP ou superior.
Para suportar a recepção de datagramas IP Multicast, um módulo Ethernet deve ser capaz de receber pacotes destinados a endereços Ethernet Multicast que correspondam a endereços de grupo. É altamente desejável aproveitar as capacidades de filtragem, de modo que o host receba apenas pacotes destinados a ele.
Infelizmente, muitas interfaces Ethernet possuem um limite pequeno de número de endereços que o hardware é capaz de reconhecer. Deste modo, uma implementação deve ser capaz de "escutar"um número de endereços multicast arbitrário, que pode significar "abertura" dos filtros de endereço para aceitar todos os pacotes multicast durante estes períodos quando o número de endereços excede o limite do filtro.