4.2 Diagrama de Transição de Estados
O comportamento IGMP é mais formalmente
especificado pelo diagrama de transição de estados abaixo.
Um host pode estar em um dos três estados possíveis, para
cada grupo de host IP em qualquer interface de rede ( Vide Figura 4.2 abaixo
):

Figura 4.2 - Diagrama de transição de estados
do protocolo IGMP
- Estado Non-Member - quando o host não
pertence ao grupo na interface. Este é o estado inicial para todos
os grupos em todas as interfaces de rede; não requer armazenamento
no host.
- Estado Delaying Member - quando o host
pertence ao grupo na interface e tem um temporizador de report executando
para aquela associação.
- Estado Idle Member - Quando um host pertence
ao grupo na interface e não possui um temporizador executando para
aquela associação.
Há cinco eventos significativos que podem
causar transições de estado:
- "join group" ocorre quando o host decide
participar do grupo na interface. Pode ocorrer apenas no estado Non-Member.
- "leave group" ocorre quando um host
decide abandonar um grupo na interface. Pode acontecer apenas nos estados
Delaying Member e Idle Member.
- "query received" ocorre quando um host
recebe uma mensagem Host Membership Query. Para ser válida,
esta mensagem de ter pelo menos 8 octetos, ter um checksum correto e um
endereço IP destino de 224.0.0.1. Uma simples consulta se aplica
a todos os grupos na interface que recebe a solicitação.
É ignorada para grupos nos estados Non-Member ou Delaying
Member.
- "report receive" ocorre quando o host
recebe uma mensagem Host Membership Report. Para ser válida,
esta de ter pelo menos 8 octetos, ter um checksum correto, e conter o mesmo
endereço IP de grupo no seu campo de destino e no campo de endereço
de grupo IGMP. Um report se aplica apenas para os participantes no grupo
identificado pelo report, na interface onde este é recebido.
É ignorado para grupos no estado Non-member ou Idle Member.
- "timer expired" ocorre quando o temporizador
de atraso para o grupo na interface expira. Só pode ocorrer no estado
Delaying Member.
Há três ações possíveis
que podem ser dadas em resposta aos eventos acima:
- "send report" para o grupo na
interface.
- "start timer" para o grupo na interface,
usando uma atraso randômico entre 0 e D segundos.
- "stop timer" para o grupo na
interface.


