La fragmentation et le réassemblage ont été exclusivement expliqués dans la RFC 791. Passez par le Internet Protocol Specification RFC. Le RFC comporte différentes sections expliquant la fragmentation et le réassemblage de l'échantillon. Tous vos doutes et questions sont bien pris en compte. Ans 1: En ce qui concerne les longueurs du paquet: Le paquet d'origine contient 4000 octets. Ce paquet est un paquet entièrement IP et contient donc également l'en-tête IP. Ainsi, la longueur de la charge utile est en réalité de 4000 - (longueur d'en-tête IP, c'est-à-dire 20).
réelle Longueur Payload = 4000 - 20 = 3980
Maintenant, le paquet est fragmenté dû au fait que la longueur est supérieure à la MTU (1500 octets).
Ainsi, le 1er paquet contient 1500 octets qui inclut l'en-tête IP + la fraction utile.
1500 = 20 (en-tête IP) + 1480 (Payload Data)
De même pour l'autre paquet.
Le troisième paquet comprend les renseignements suivants restant à gauche sur les données (3,98 mille - 1480 -1480) = 1020
longueur Ainsi du paquet est 20 (en-tête IP) + 1020 (charge utile) = 1040
2 Ans : Le décalage est l'adresse ou le localisateur d'où les données commencent par référence à la charge utile de données d'origine. Pour IP, la charge utile de données comprend toutes les données après l'en-tête IP et l'en-tête Options. Ainsi, le système/routeur prend la charge utile et la divise en parties plus petites et conserve la trace du décalage en référence au paquet d'origine, de sorte que le réassemblage peut être effectué.
Comme indiqué dans le RFC page 12.
"Le champ de décalage fragment indique au récepteur la position d'un fragment dans le datagramme d'origine. Le fragment de décalage et la longueur déterminent la partie du datagramme original couverte par Le fragment more-fragments indique (en réinitialisant) le dernier fragment Ces champs fournissent des informations suffisantes pour réassembler les datagrammes "
Le décalage de fragment est mesuré en unités de 8 octets chacune. Il a un champ de 13 bits dans l'en-tête IP. Comme indiqué dans la page RFC 17
« Ce champ indique où dans le datagramme ce fragment fragment appartient.Procédé décalage est mesuré en unités de 8 octets (64 bits). Le premier fragment a décalage d'origine. »
Ainsi, comme vous l'avez demandé dans la question d'où vient cette 8, c'est la norme qui est définie pour la spécification du protocole IP, où 8 octets sont pris comme une valeur. Cela nous aide également à transmettre de gros paquets via cela.
Page 28 du RFC écrit: * Les fragments sont comptés en unités de 8 octets. La stratégie de fragmentation est conçue de telle sorte qu'un datagramme non fragmenté ait toutes les informations de fragmentation nulles (MF = 0, décalage de fragment = 0). Si un datagramme Internet est fragmenté, sa partie de données doit être brisée sur les limites de 8 octets. Ce format permet 2 ** 13 = 8192 fragments de 8 octets chacun pour un total de 65 536 octets. Notez que cela est compatible avec le champ de longueur totale Datagram (bien sûr, l'en-tête est compté dans la longueur totale et non dans les fragments). *
Merci! Cela a clairement répondu à la première partie de ma question, mais en ce qui concerne la deuxième partie, pourquoi divisons-nous 1480 par 8 pour obtenir la compensation? – JimmyK
Je vais mettre à jour la réponse. –
Un grand merci beaucoup, ça répond à tout! Je me demandais juste, est-ce que nous divisons TOUJOURS par 8? Y a-t-il des circonstances qui nous amèneraient à diviser par un nombre différent? – JimmyK