Entête IGMP
par _SebF

1 - Définition du protocole
2 - Structure de l'entête
3 - Définition des différents champs
        3.1 - Type
        3.2 - Temps de réponse max
        3.3 - Checksum
        3.4 - Adresse du groupe
4 - Discussion autour de la documentation
5 - Suivi du document

1 - Définition du protocole

Le protocole IGMP (Internet Group Management Protocol) permet de gérer les déclarations d'appartenance à un ou plusieurs groupes auprès des routeurs Multicast. Les inscriptions sont soit spontanées soit après requête du routeur. Pour cela, l'hôte envoi une trame IGMP destinées à ce ou ces groupes. Il existe 2 version du protocole IGMP.

Vous trouverez tous les détails du protocole  IGMP version 1 dans la Rfc 1112.

Vous trouverez tous les détails du protocole  IGMP version 2 dans la Rfc 2236.

2 - Structure de l'entête

Voici la structure de l'entête IGMP V2 basé sur 8 octets.

TCPIP IPV6 VOIP VPN IP IPV4

De la même manière qu'ICMP, IGMP est un protocole de couche 3. Il est encapsulé dans IP afin d'être véhiculé sur un réseau IP. Le terme "Encapsulé" relate pourquoi ce protocole est en couche 3 et non pas en niveau 4.

3 - Définition des différents champs

3.1 - Type

Le champ Type est codé sur 8 bits et détermine la nature du message IGMP. Voici les 4 types de messages existant :

- 11 - 00001011 - Requête pour identifier les groupes ayant des membres actifs.
- 12 - 00001100 - Rapport d'appartenance au groupe émis par un membre actif du groupe (IGMP version 1)
- 16 - 00010000 - Rapport d'appartenance au groupe émis par un membre actif du groupe (IGMP version 2)
- 17 - 00010001 - Un membre annonce son départ du groupe

3.2 - Temps de réponse max

Ce champ n'est utilisé que pour les messages de type 11. Il indique le temps d'attente maximum pour un client avant l'émission du rapport d'appartenance. L'unité utilisée est le 1/10 de seconde. Pour les autres types, ce champ est marqué à 0.

3.3 - Checksum

Le champ Checksum est codé sur 16 bits et représente la validité du paquet de la couche 3 IGMP. Pour pouvoir calculer le Checksum, il faut positionner le champ du checksum a 0. Ce calcul est strictement le même que celui du protocole ICMP.

Voici un exemple de fonction permettant le calcul du checksum IGMP :

unsigned short calcul_du_checksum(bool liberation, unsigned short *data, int taille)
    {
    unsigned long checksum=0;
    // ********************************************************
    // Complément à 1 de la somme des complément à 1 sur 16 bits
    // ********************************************************
    while(taille>1)
        {
        if (liberation==TRUE)
            liberation_du_jeton(); // Rend la main à la fenêtre principale
        checksum=checksum+*data++;
        taille=taille-sizeof(unsigned short);
        }

    if(taille)
        checksum=checksum+*(unsigned char*)data;

    checksum=(checksum>>16)+(checksum&0xffff);
    checksum=checksum+(checksum>>16);

    return (unsigned short)(~checksum);
    }

unsigned short calcul_du_checksum_igmp(bool liberation, struct igmp igmp_tampon,char data_tampon[65535])
      {
      char tampon[65535];
      unsigned short checksum;

      // ********************************************************
      // Initialisation du checksum
      // ********************************************************
      igmp_tampon.checksum=0; // Doit être à 0 pour le calcul

      // ********************************************************
      // Calcul du IGMP
      // ********************************************************
      memcpy(tampon,(unsigned short *)&igmp_tampon,sizeof(struct igmp));
      memcpy(tampon+sizeof(struct igmp),data_tampon,strlen(data_tampon));
      checksum=calcul_du_checksum(liberation,(unsigned short*)tampon,sizeof(struct igmp)+strlen(data_tampon));

      return(checksum);
      }

3.4 - Adresse du groupe

Le champ Adresse du groupe est codé sur 32 bits et contient une adresse IP. Celle ci représente l'adresse du groupe d'appartenance ou 0 si l'inscription n'a pas encore eu lieu. Le type 11 place ce champ à 0 et les autres types marquent l'IP.

4 - Discussion autour de la documentation

Vous pouvez poser toutes vos questions, vos remarques et vos expériences à propos de l'entête IGMP. Pour cela, rendez-vous sur le Forum "TCP-IP".

5 - Suivi du document

Le 14 novembre 2003, par _SebF, intégration de la version 2 d'IGMP.

Le 23 septembre 2003, par _SebF, création du document.



mot clé : ipv6 adresse igmp datagramme igmp datagramme reponse tout sur igmp datatgrame igmp tous sur igmp connaitre igmp entete igmp ip temps comprendre igmp requete igmp resolution igmp reponse igmp champs protocole igmp liaison igmp frame igmp vpn max groupe rfc 1112 rfc 2236 decouverte igmp couche 3 protocol igmp voip ipv4 trame igmp negociation igmp couche 4 tcpip

Copyright © 2011-2015 FrameIP TcpIP. Tous droits réservés. Les marques et marques commerciales mentionnées appartiennent à leurs propriétaires respectifs. L'utilisation de ce site Web TcpIP implique l'acceptation des conditions d'utilisation et du règlement sur le respect de la vie privée.
Sécurité entreprise Téléphonie entreprise Expert de votre Infrastructure Test ADSL Serinya Operateur Telecom