Avant d'entrer dans le détail d'IP Frag, il faut bien comprendre que les données pures IP sont encapsulées et qu'il faudra toujours trainer ces 20B supplémentaires de header lors du forwarding. Si l'interface de sortie offre un IP MTU de 1024B, ça signifie qu'on pourra envoyer 1024-20=1004B de data. Pourquoi avoir limité tes paquets à 1000B ?
Voici comment se déroule l'algorithme IP Frag.
1) Le routeur reçoit le paquet IP et isole le champ data par décapsulation : 2068B - 20B = 2048B.
2) Le routeur calcule le mombre de paquets nécessaires pour fragmenter le paquet original :
nbre de pkts = ENT(2048/1004)+1 = 3 pkts
3) Le routeur réserve ses buffers :
pkt1 = 1004B data + 20B header
pkt2 = 1004B data + 20B header
pkt3 = 40B data + 20B header
On retrouve bien les 2048B de data IP du paquet original en utilisant au maximum l'IP MTU de l'output interface.
4) Le routeur construit ensuite les headers des 3 paquets. Voyons comment sont renseignés les champs.
* longueur totale
Cf 3)
* 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_pkt1 = MF_pkt2 = 1 et MF_pkt3 = 0)
d'où drapeau_pkt1 = 001
drapeau_pkt2 = 001
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)
* identification
Tous les fragments construits possèdent l'identifiant du paquet original.
En conclusion,
pkt1
Version : 4
Longueur d'en-tête : 5
Type de service : 0
Longueur totale : 1024
Identification : 12345
Drapeau : 001
Décalage fragment : 0
pkt2
Version : 4
Longueur d'en-tête : 5
Type de service : 0
Longueur totale : 1024
Identification : 12345
Drapeau : 001
Décalage fragment : 123
pkt3
Version : 4
Longueur d'en-tête : 5
Type de service : 0
Longueur totale : 60
Identification : 12345
Drapeau : 000
Décalage fragment : 246
Steph
Partager