DATAGRAMME IP

Résolu
Bonjour, je suis un peu confus concernant la manière de détermination de la longueur totale dans un datagramme IP.

Un datagramme IP contenant 3028 octets de données est émis sur un réseau A de MTU=500. En passant par un routeur R1, il atteint le réseau B de MTU=1024 octets. La structure du datagramme dans le réseau A est présentée cidessous :
Version : 4
Longueur d'en-tête : 5
Type de service : 0
Longueur totale : ????????
Identification : 1234
Drapeau : 010
Décalage fragment : 0
Durée de vie : 32



La théorie, c'est quand on sait tout mais que rien ne marche.
La pratique, c'est quand tout marche, mais qu'on sait pas pourquoi..." Albert Einstein

1 réponse

  1. Voici comment je l'ai résolu :

    a- Le routeur calcule le nombre de paquets nécessaires pour fragmenter le paquet original :

    nombre de paquets = ENT(3028/ 480)+1 = 7 paquets

    b- Le routeur réserve ses buffers :

    Paquet 1= 480 B data + 20 B header
    Paquet 2= 480 B data + 20 B header
    Paquet 3= 480 B data + 20 B header
    Paquet 4= 480 B data + 20 B header
    Paquet 5= 480 B data + 20 B header
    Paquet 6= 480 B data + 20 B header
    Paquet 7= 148 B data + 20 B header

    On retrouve bien les 3028 B de data IP du paquet original en utilisant au maximum l'IP MTU de l'input interface.

    c- Le routeur construit ensuite les headers des 3 paquets. Voyons comment sont renseignés les champs.
    * longueur totale
    Paquet 1= 480 B data + 20 B header
    Paquet 2= 480 B data + 20 B header
    Paquet 3= 480 B data + 20 B header
    Paquet 4= 480 B data + 20 B header
    Paquet 5= 480 B data + 20 B header
    Paquet 6= 480 B data + 20 B header
    Paquet 7= 148 B data + 20 B header

    * drapeau (3 bits)
    - le 1er bit n'est pas utilisé et toujours égal à 0
    - le DF bit est toujours mis à 0 dans le cadre d'une IP Frag
    - le MF (More Fragment) bit est mis à 1 sur tous les fragments hormis le dernier.
    Donc :
    MF(Paquet 1) = MF(Paquet 2) = MF(Paquet 3)= MF(Paquet 4) = MF(Paquet 5) = 1 ;
    MF(Paquet 6) = 1 et MF(Paquet 7) = 0.
    D'où :
    drapeau(Paquet 1) = drapeau(Paquet 2) = drapeau(Paquet 3) = drapeau(Paquet 4) =001 ;
    drapeau(Paquet 5) = drapeau(Paquet 6) = 001 et drapeau(Paquet 7) = 000.
    drapeau_pkt3 = 000
    * offset/décalage
    L'offset permet à la machine destinataire de reconstituer le datagramme original. Exprimé en multiple de 8B, c'est un pointeur qui indique la position du fragment dans le datagramme original. Voici le détail des offsets :

    offset_pkt1 = 0 (octets 1 à 1004 du datagramme original)
    offset_pkt2 = 1004/8 = 123 (octets 1005 à 2008 du datagramme original)
    offset_pkt3 = 2008/8 = 246 (octets 2009 à 2048 du datagramme original)

    offset(Paquet 1) = 0 (1 octet à 480 octets du datagramme original)
    offset(Paquet 2)= 480/8=60 (octets 481 à 960 du datagramme original)
    offset(Paquet 3)= 960/8=120 (octets 961 à 1440 du datagramme original)
    offset(Paquet 4)= 1440/8 =180 (octets 1441 à 1920 du datagramme original)
    offset(Paquet 5)=1920/8=240 (octets 1921 à 2400 du datagramme original)
    offset(Paquet 6)=2400/8=300 (octets 2401 à 2880 du datagramme original)
    offset(Paquet 7)=2880/8=360 (octets 2881 à 3028 du datagramme original)

    * identification
    Tous les fragments construits possèdent l'identifiant du paquet original.
    En conclusion,

    Paquet 1
    Version : 4
    Longueur d'en-tête : 5
    Type de service : 0
    Longueur totale : 500
    Identification : 1234
    Drapeau : 001
    Décalage fragment : 0

    Paquet 2
    Version : 4
    Longueur d'en-tête : 5
    Type de service : 0
    Longueur totale : 500
    Identification : 1234
    Drapeau : 001
    Décalage fragment : 60

    Paquet 3
    Version : 4
    Longueur d'en-tête : 5
    Type de service : 0
    Longueur totale : 500
    Identification : 1234
    Drapeau : 001
    Décalage fragment : 120

    Paquet 4
    Version : 4
    Longueur d'en-tête : 5
    Type de service : 0
    Longueur totale : 500
    Identification : 1234
    Drapeau : 001
    Décalage fragment : 180

    Paquet 5
    Version : 4
    Longueur d'en-tête : 5
    Type de service : 0
    Longueur totale : 500
    Identification : 1234
    Drapeau : 001
    Décalage fragment : 240

    Paquet 6
    Version : 4
    Longueur d'en-tête : 5
    Type de service : 0
    Longueur totale : 500
    Identification : 1234
    Drapeau : 001
    Décalage fragment : 300

    Paquet 7
    Version : 4
    Longueur d'en-tête : 5
    Type de service : 0
    Longueur totale : 500
    Identification : 1234
    Drapeau : 000
    Décalage fragment : 360
    0