Warum die ip-Fragmente müssen in vielfachen von 8 bytes
In dem Buch Computer-Vernetzung James F. Kurose Fünfte Ed -, ch4 erwähnt
ip-Fragmente müssen in vielfachen von 8 bytes, und weil die Flags in der IP-header nimmt 3 bits. Ich verstehe nicht, warum ip-Fragmentierung muss ein Vielfaches von 8 bytes.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Jedes fragment außer dem letzten muss ein Vielfaches von 8 bytes der Daten.
Fragment Offset kann halten 8192 (2^13) - Einheiten, aber das Datagramm nicht haben kann, 8192 * 8 = 65536 bytes Daten da "Total Length" - Feld des IP-header zeichnet die Gesamtgröße einschließlich der header und Daten.
Einem IP-header ist mindestens 20 Byte lang, so dass der maximale Wert für "Fragment Offset" ist beschränkt auf 8189, die Raum lässt für die 3 bytes in dem letzten fragment.
Hoffe, das hilft.
Beachten, dass Fragment-Offset-Feld wird ausgedrückt in 8-byte-Einheiten, nicht in bytes.
Dies ist der Grund, warum die payload-Größe in jedem von dem fragment, mit Ausnahme des letzten fragments, muss Vielfaches von 8 bytes.
Als Fragment-Offset codiert ist auf 13bits, ergibt sich, dass die Reichweite beträgt zwischen 0 und 8191 Einheiten von 8 bytes. Da jedoch die Gesamtlänge berücksichtigt auch den IP-Header, Fragment Offset maximale Grenze ist in der Tat 8189 Einheiten, nicht 8191 Einheiten, siehe unten:
Gesamtlänge kodiert auf 16 bits, das bedeutet, es ist begrenzt auf 65535 bytes.
Dann, wie der IP-header ist mindestens 20 Byte ergibt sich, dass die Nutzlast ist begrenzt auf maximal 65535 Byte - 20 Byte = 65515 bytes.
Die Aufteilung dieser 65515 bytes in 8-byte-Einheiten ergibt sich, dass es sein könnte maximal 8189 Einheiten, damit die Fragmentierung der Offset ist begrenzt auf maximal 8189 Einheiten.
Einer IP-fragment mit dem Fragment-Offset-Wert gesetzt zu diesem Maximalwert von 8189, könnten eine Nutzlast von maximal 3 bytes:
Maximal 65535 bytes - mindestens 20 bytes - (8189-Einheiten * 8 Byte pro Einheit) = maximal 3 bytes
Rurre
Was Wayne sagte, sowie die Tatsache, dass der offset tatsächlich verwendet wird in der end-hosts, so dass Sie effizient zu speichern, die Fragmente im Arbeitsspeicher effizient, das heißt in einer Zeile. Offset zeigt die relative position des fragments in Bezug auf die ganze Datagramm. Deshalb ausgeglichen werden muss, die IP-Fragmente müssen in vielfachen von 8 bytes, weil das, was Sie tatsächlich tun, ist eine rechts-Verschiebung um 3 bits (also die 13 bits).
Hier (https://cs.nyu.edu/courses/fall98/G22.2262-001/class11.txt) ist es gegeben, dass : fragment offset wird gemessen in Einheiten von 8 bytes (64 bits). Das ist, weil das fragment-offset-Feld 3 bits kürzer ist als die Gesamtlänge Feld ich.e 16 bits (und 2^3 ist 8).