> Théorie
PrograZine issue #10 - http://www.citeweb.net/discase/10/ip.htm Edito Sommaire Contribution Contacts


Le protocole internet (IP) version 4
par loubail - loubail@multimania.com http://www.multimania.com/loubail
Initié

    Salut a tous, Comme vous pouvez le constater j'ai decide de rediger une serie d'articles sur les protocoles de communication ! ;) Donc, dans les prochains numeros de prograzine, vous decouvrirez la description, detaillee, de nombreux protocoles de communications (J'ai deja prepare des articles sur les protocoles suivants : ICMP, TCP, UDP, FTP ;) ). Neanmoins j'ai decide, pour le moment, de ne pas inclure les techniques de programmation/codes permettant d'implementer/utiliser ces protocoles. :(

    Sans plus attendre je vais des a present vous presentez le protocole internet version 4 !
titre1>1. Introduction :

    Le protocole Internet a ete realise pour etre utilise dans des systemes interconnectes, des reseaux, afin de transferer des paquets de donnees.

    Le protocole Internet (IP) fournit des blocs de donnees appelees datagrammes depuis des sources en direction de destinations. ( les sources et les destinations sont des hotes designes par une adresse d'une longueur fixee ). Le Protocole Internet fournit evidemment un processus pour fragmenter et reassembler de longs datagrammes, si necessaire, pour la transmission via de petits paquets.
>2. Interfaces:

    Le protocol internet est appele par des protocoles reseaux locaux pour envoyer le datagramme internet a une passerelle (appelee "gateway") ou a l'hote destinataire.

    Par exemple, un module TCP va faire appel au module Internet pour mettre en place la source, le destinataire (via ce que l'on appelle les adresses IP).

    Le module TCP devrait ensuite fournir les adresses et autres parametres dans l'en-tete Internet au module Internet. Des lors le module Internet peut creer un datagramme Internet et faire appel a l'interface reseau local pour transmettre le datagramme Internet.
>3. Operations:

    Le protocole Internet implemente deux fonctions basiques : l'adressage et la fragmentation.

    Les modules internet utilisent les adresses portees par l'en-tete internet pour transmettre les datagrammes internet jusqu'a leurs destinations. La selection du chemin utilisee lors de la transmission, c'est a dire l'ensemble des hotes par lesquels passent les datagrammes internet avant d'atteindre leur destination, est appele routage.

    Les modules internet utilisent des champs dans l'en-tete internet pour fragmenter et reassembler les datagrammes internet quand il est necessaire de realiser une transmission par petits paquets.

    Le modele d'operation reside sur le fait qu'un module internet se situe dans chaque hote et passerelles ("gateway") qui reunissent les reseaux. Ces modules partagent les memes regles pour interpreter les champs d'adresses et pour fragmenter et reassembler les datagrammes internet. En plus, ces modules (et specifiquement dans les "gateways") ont des procedures pour prendre des decisions de routage et des decisions concernant d'autres fonctions.

    Le protocol internet traite ainsi chaque datagramme internet comme une entitee independante dissociee de n'importequel autre datagramme internet. Il n'y a aucune connection/lien entre les datagrammes internet.

    Le protocol internet utilise 4 mecanismes clefs pour fournir ses services : Type de service, temps de vie, options, en-tete checksum.

    Le type de service est utilise pour indiquer la qualite du service desire. c'est un ensemble de parametres qui caracterisent les choix fournis dans les reseaux constituant l'internet. Ces indications sont utilisees par des passerelles ("gateways") pour selectionner les parametres d'un reseau particulier, le reseau qui sera utiliser par le prochain hote ou la prochaine passerelle lors du routage du datagramme Internet.

    Le temps de vie indique le temps de vie d'un datagramme Internet. Durant le routage, le temps de vie diminue a chaque fois que le datagramme internet passe d'un hote ou d'une passerelle a un autre hote ou passerelle.

    Si le temps de vie atteint la valeur 0 avant que le datagramme internet atteigne sa destination alors le datagramme internet est detruit.

    Les options fournissent, pour le controle, des fonctions necessaires ou utiles dans certaines situations mais pas necessaires pour la plupart des communications. Les options incluent des renseignement sur le temps de postage, la securite et pour un routage special.

    L'en-tete Checksum fournit une verification pour savoir si l'information utilisee lors du traitement du datagramme internet a ete correctement transmise. La donnee peut contenir des erreurs. Si l'en-tete checksum est mauvais, le datagramme internet est tout de suite abandonnee par l'entitee qui a detecte l'erreur.

    Les erreurs detectees peuvent etre reportees via le protocol ICMP (Internet Control Message Protocol) qui est implante dans le module du protocol internet.

    Relation aux autres protocoles:

    Le diagramme suivant illustre la place du protocol internet dans la hierarchie des protocoles.
     Telnet    FTP     TFTP    ...
         !      !        !      !
         !      !        !      !
           TCP          UDP    ...
            !            !      !
            !            !      !
                  IP & ICMP
                      !
                      !
             Protocol reseau local
l
>4. Modele d'operation:

    Le modele d'operation pour transmettre un datagramme d'une application a une autre est illustree par le scenario suivant:

    On suppose qua la transmission va faire appel a une passerelle. Le programme qui va envoyer quelque chose, va preparer ses donnees et faire appel au module internet qui envoie ces donnees sous la forme d'un datagramme avec comme arguments l'adresse de destinations et d'autres parametres.

    Le module Internet prepare un en-tete datagramme et lui attache la donnee. Le module Internet determine une adresse reseau locale pour l'adresse internet, dans ce cas c'est l'adresse de la passerelle.

    Il envoie le datagramme et l'adresse du reseau local a l'interface reseau locale.

    L'interface reseau locale cree un en-tete reseau local et lui attache le datagramme. Il envoie alors le resultat via le reseau local.

    Le datagramme arrive a la passerelle inscrite dans l'en-tete reseau local, l'interface reseau local enleve cet en-tete et envoie le datgramme vers le module internet. Le module internet determine depuis l'adresse internet que le datagramme doit etre envoye a un autre hote dans un second reseau. Il fait appel a l'interface reseau local et ce reseau envoie le datagramme.

    Cet interface reseau local cree un en-tete reseau local et l'attache au datagramme et envoie le resultat a l'hote destinataire.

    Chez l'hote destinataire on enleve au datagramme l'en-tete qui a ete incluse precedemment et envoie le resultat au module internet. Le module Internet determine alors que le datagramme est destine a une application tournant sur l'hote. Il passe les donnees a l'application en reponse a un appel system en fournissant l'adresse de la source et d'autres parametres.
>5. Description du role du protocole internet:

    Le role ou le but du protocole internet est de deplacer des datagrammes a travers des reseaux interconnectes. Ceci est realise par le passage des datagrammes d'un module internet a un autre jusqu'a ce que le datagramme atteigne la destination.

    Les modules internet resident dans les hotes et les passerelles dans le systeme internet. Les datagrammes sont achemines d'un module internet a un autre a travers des reseaux individuels bases sur l'interpretation d'adresse internet. Ainsi le protocole internet possede un important mecanisme : l'adressage des adresses internet.

    Dans l'acheminage des messages d'un module internet a un autre, les datagrammes pourrait avoir besoin de passer par un reseau dont la taille maximum d'un paquet est plus petite que la taille du datagramme. Pour surmonter cette difficulte, un mecanisme de fragmentation est fournie par le protocole internet.
>Adressage:

    Une distinction est faite entre noms, adresses, et chemins. Un nom designe ce que nous cherchons. Une adresse indique ou ceci se situe. Un chemin indique comment s'y rendre.

    Le protocole Internet s'occupe d'abord des adresses.

    Cette tache consiste a transformer les noms en adresses. Le module internet transforme les adresses internet en adresses reseaux locales. Ensuite il faut passer des adresses reseaux locales aux chemins.

    Les adresses sont constitues de 4 octets. Leur longueur est donc fixee a 32 bits. Le premier octet represente un numero de reseau. Il est suivi par une adresse locale (l'adresse locale est donc constituee de 3 octets).

    Il y a 3 formes ou classes d'adresses internet :
>Fragmentation :

    La fragmentation d'un datagramme internet s'avere necessaire lorsqu'un reseau local limite la taille des paquets a une taille inferieur de celle des datagrammes.

    Un datagramme internet peut etre marque "ne pas fragmente" et dans ce cas il ne sera pas fragmente. Si un tel datagramme ne peut pas etre pris en compte, par exemple par un reseau local qui ne peut pas recevoir des datagrammes d'une certaine taille, il est alors abandonne.

    La fragmentation, la transmission et le reassemblage d'un cote et de l'autre d'un reseau local, qui est un processus invisible pour le module du protocol internet, est appelee fragmentation intranet et pourrait etre utilisee.

    Les procedures de fragmentation internet et de reassemblage ont besoin d'etre capable de casser le datagramme en un nombre arbitraire de morceaux qui pourront etre plus tard reassembles. Celui qui receptionne les fragments utilise le champ d'identification pour s'assurer que les fragments des differents datagrammes n'ont pas ete melangees. Le champ de l'offset du fragment donne au receveur l'adresse du fragment dans le datagramme original. L'offset du fragment et sa longueur determine la portion dans le datagramme original qui a ete recue. L'indicateur plus de fragments ("more-fragments"), par sa mise a zero, indique que le reassemblage du datagramme peut prendre place puisque le dernier fragment est arrive.

    Le champ identification est utilise pour distinguer les fragments d'un datagramme des fragments d'un autre. Ce champ doit rester le meme pour la source et la destination pendant tout le temps durant lequel le datagramme est valable dans le systeme internet. L'indicateur "more-fragment" et la valeur de l'offset du premier fragment du datagramme envoye sont mis a 0.

    Pour fragmenter un long datagramme internet, un module de protocole internet (par exemple dans une passerelle), cree 2 nouveaux datagrammes internet et copie les contenus des champs de l'en-tete internet du long datagramme dans les deux nouveaux en-tetes internet. Les donnees du long datagramme internet sont divisees en 2 portions dont la longueur des blocs est inferieur a 8 octets (64 bits). (Dans la seconde portion, la longueur des blocs peut ne pas etre un entier multiple des 8 octets mais dans le premier ils doivent l'etre). On compte le nombre de blocs de 8 octets dans la premiere portion NFB ( Nombre de blocs fragmentees ). La premiere portion de donnee est placee dans le premier nouveau datagramme, et on attribue au champ qui indique la longueur totale la longueur du premier datagramme. L'indicateur "more-fragments" est mis a 1. La seconde portion de donnee est placee dans le second nouveau datagramme, et on attribue au champ longueur totale la longueur du second datagramme. Cette fois-ci l'indicateur "more-fragments" a le meme etat que l'indicateur "more-fragments" du long datagramme. Le champ de l'offset du fragment du second nouveau datagramme internet possede alors comme valeur la valeur du champ de l'offset du fragment dans le long datagramme + NFB ( c'est a dire la longueur de la premiere portion ).

    Cette procedure peut etre generalisee pour un decoupage en n morceaux, au lieu du decoupage en 2 morceaux qui vient d'etre decrit.

     Pour assembler les fragments d'un datagramme internet, un module de protocole internet (par exemple chez l'hote destinataire) combine les datagrammes internet qui ont toutes la meme valeur pour les 4 champs: identification, source, destination, et protocol.

     La combinaison est faite en placant les portions de donnees de chaque fragment a une position indiquee par l'offset du fragment dans l'en-tete internet de ce meme fragment. Le premier fragment aura un offset de fragment nul et le dernier fragment aura l'indicateur "more-fragments" mis a 0.
>6. "Gateways": (passerelles) :

    Les passerelles implementent le protocole internet pour faire suivre les datagrammes d'un reseau a un autre. Les passerelles implementent ainsi le protocol Passerelle a Passerelle (GGP : Gateway to Gateway Protocol) pour coordonner le routage et les autres informations de controle internet.

    Dans une passerelle, les fonctions du GGP sont ajoutes au module IP.
>7. Specification:

    Format de l'en-tete internet:
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Version|  IHL  |Type of Service|          Total Length         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Identification        |Flags|      Fragment Offset    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Time to Live |    Protocol   |         Header Checksum       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       Source Address                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Destination Address                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Options                    |    Padding    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
l

    Il y a deux types de format

    l'option option-longueur compte l'octet option-type et l'octet option-longueur aussi bien que l'octet option-donnees.

    L'octet option-type possede 3 champs:

    L'indicateur copie indique que cette option est copiee dans tous les fragments lors d'une fragmentation.

    Les classes option sont:
      CLASS NUMBER LENGTH DESCRIPTION
      ----- ------ ------ -----------
        0     0      -    End of Option list.  Cette option occupe
                          1 octet
        0     1      -    No Operation.  Cette option occupe 1 octet
        0     2     11    Security.  Utilise pour fournir une compartimen
                          tation de securite
        0     3     var.  Loose Source Routing.  Utilise pour achemnier
                          le datagramme internet avec des informations
                          fournies par la source.
        0     9     var.  Strict Source Routing.  Utilise pour achemnier
                          le datagramme internet avec des informations
                          fournies par la source.
        0     7     var.  Record Route.  Utilise pour tracer le chemin
                          pris par un datagramme internet.
        0     8      4    Stream ID.  Utilise pour apporter l'identifiant
                          du flux.
        2     4     var.  Internet Timestamp.
l
>Definitions specifiques des options:
>End of Option List
        +--------+
        |00000000|
        +--------+
          Type=0
l

    Ceci indique la fin de la liste d'option. Ceci ne devrait pas coincider avec la fin de l'en-tete internet. Ceci est utilise a la fin de chaque option, et a seulement besoin d'etre utilise si la fin des options ne coincide pas avec la fin de l'en-tete internet. Il peut etre copie, introduit, efface lors d'une fragmentation ou pour tout autre raison.
>No Operation
        +--------+
        |00000001|
        +--------+
          Type=1
l

    Cette option peut etre utilisee entre des options, par exemple, pour aligner le debut d'une option posterieure sur une limite de 32 bits.

    Il peut etre copie, introduit, efface lors d'une fragmentation ou pour tout autre raison.
>Security

    Cette option fournit un moyen pour les hotes d'envoyer des parametres au sujet des compartiments, de la securite, des restrictions, et des TCC (groupe d'utilisateurs fermes)

    Format de cette option:
          +--------+--------+---//---+---//---+---//---+---//---+
          |10000010|00001011|SSS  SSS|CCC  CCC|HHH  HHH|  TCC   |
          +--------+--------+---//---+---//---+---//---+---//---+
           Type=130 Length=11
l

    Pour obtenir les valeurs il faut consulte HQ DCA Code 530

    Ils doivent etre copies lors d'une fragmentation.
>Loose Source and Record Route (LSRR)
        +--------+--------+--------+---------//--------+
        |10000011| length | pointer|     route data    |
        +--------+--------+--------+---------//--------+
         Type=131
l

    Il fournit un moyen pour la source du datagramme internet de fournir une information de routage qui sera utilisee par des passerelles en faisant passer le datagramme vers sa destination, et en enregistrant les informations de routage.

    Le premier octet represente le type d'option. Le second octet est la longueur-option qui inclut l'ensemble (type, longueur, pointer et route data). Le troisieme octet est le pointeur dans les informations de routage (route data).

    Les donnees de routage sont composees d'un serie d'adresses internet de 32 bits. Si le pointeur est plus grand que leur taille la source de routage est vide et le routage est basee sur le champ d'adresse de destination.

    Ceci doit etre copie lors d'une fragmentation.
>Strict Source and Record Route
        +--------+--------+--------+---------//--------+
        |10001001| length | pointer|     route data    |
        +--------+--------+--------+---------//--------+
         Type=137
l

    Ceci fournit un moyen pour la source du datagramme internet de fournir un routage de l'information a utilise par les passerelles en passant le datagramme a la destination, et en enregistrant les informations a propos du chemin utilise.

    Comme tout a l'heure on retrouve les memes types de constituant.
>Record Route
        +--------+--------+--------+---------//--------+
        |00000111| length | pointer|     route data    |
        +--------+--------+--------+---------//--------+
          Type=7
l

    Ceci fournit un moyen d'enregistrer le chemin emprunte par le datagramme internet. Comme precedemment on retrouve les memes types de constituant. Ne pas copie lors d'une fragmentation. (Le copier seulement dans le premier fragment).
>Stream Identifier
        +--------+--------+--------+--------+
        |10001000|00000010|    Stream ID    |
        +--------+--------+--------+--------+
         Type=136 Length=4
l

    Ceci fournit un moyen pour l'identifieur de flux 16 bits SATNET (qui est le nom d'un reseau) d'etre apporte a des reseaux qui ne supportent pas le concept de flux.

    Doit etre etre copie lors d'une fragmentation.
>Internet Timestamp
        +--------+--------+--------+--------+
        |01000100| length | pointer|oflw|flg|
        +--------+--------+--------+--------+
        |         internet address          |
        +--------+--------+--------+--------+
        |             timestamp             |
        +--------+--------+--------+--------+
        |                 .                 |
                          .
                          .
        Type = 68
l

    L'option longueur designe le nombre d'octets (on prend en compte les octets designant le type, la longueur, le pointeur, depassement/indicateur) (taille maximum : 40 octets).

    Le pointeur est le nombre d'octets depuis le debut de cette option jusqu'a la fin du "timestamp" + 1. La valeur legale la plus petite est 5.

    L'overflow (depassement) (oflw) (4 bits) est le nombre de modules IP qui ne peuvent pas enregistrer les timestamp par manque de place.

    Les valeurs de l'indicateur (Flag) (flg) (4 bits) sont

     Ne doit pas etre copie lors d'une fragmentation.
>Padding: variable

    L'en-tete internet padding est utilise pour assurer que l'en-tete internet se termine avec bloc de 32 bits.
>Conclusion

    Voilà ceci termine le premier article de la serie d'articles sur les protocoles de communication. J'espere que cet article vous a interesse ! Si vous voulez apporter votre point de vue, des suggestions/rectifications, vous pouvez me contacter a : loubail@club-internet.fr N'hesitez pas a venir visiter mon site : http://www.multimania.com/loubail : vous y trouverez de nombreuses sources/programmes ;)
Cet article est la propriété de loubail. La copie et la diffusion sont libres sauf dans un but lucratif sans accord explicite de l'auteur.