DATAGRAMME IP

Résolu/Fermé
Stoicien Messages postés 78 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 14 mars 2014 - Modifié par Stoicien le 1/12/2012 à 05:13
Stoicien Messages postés 78 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 14 mars 2014 - 1 déc. 2012 à 05:14
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

Stoicien Messages postés 78 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 14 mars 2014 7
1 déc. 2012 à 05:14
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