Die Fragmentierung und Reassembly wurde ausschließlich in der RFC 791 erklärt. Gehen Sie durch die Internet Protocol Specification RFC. Der RFC enthält verschiedene Abschnitte, die die Fragmentierung und das Zusammensetzen der Beispiele erläutern. Alle deine Zweifel und Fragen sind gut darin enthalten.
Ans 1: In Bezug auf die Länge des Pakets: Das ursprüngliche Paket enthält 4000 Bytes. Dieses Paket ist ein vollständiges IP-Paket und enthält daher auch den IP-Header. Somit ist die Nutzdatenlänge tatsächlich 4000 - (IP Header Length i. E. 20).
Actual Payload Length = 4000 - 20 = 3980
nun das Paket fragmentiert ist, aufgrund der Tatsache, dass die Länge größer als die MTU (1500 Bytes).
Also das erste Paket enthält 1500 Bytes, die IP-Header + Payload Fraction enthält.
1500 = 20 (IP-Header) + 1480 (Data Payload)
ähnlich für das andere Paket.
das dritte Paket wird über Daten enthält Zustand Links (3980 - 1480 -1480) = 1020
Somit Länge des Pakets 20 (IP Header) + 1020 (Payload) = 1040
Am 2 : Der Offset ist die Adresse oder der Locator, von wo aus die Daten mit Bezug auf die ursprüngliche Datennutzlast beginnen. Für IP umfasst die Datennutzlast alle Daten, die hinter dem IP-Header und dem Options-Header stehen. Somit nimmt das System/Router die Nutzlast und teilt sie in kleinere Teile auf und behält die Spur des Versatzes mit Bezug auf das ursprüngliche Paket bei, so dass eine Wiederzusammenfügung erfolgen kann.
Wie in der RFC Seite gegeben 12.
"Das Fragment-Offset-Feld sagt dem Empfänger die Position eines Fragments in dem ursprünglichen Datagramm. Der Fragment-Offset und Länge durch den Teil des ursprünglichen Datagramms abgedeckt bestimmen Dieses Fragment stellt das letzte Fragment (durch Zurücksetzen) dar. Diese Felder stellen ausreichende Informationen zum erneuten Zusammensetzen von Datagrammen bereit.
Der Fragment-Offset wird in Einheiten von je 8 Byte gemessen. Es hat 13 Bit Feld im IP-Header. Wie gesagt in der RFC Seite 17
"zeigt dieses Feld in dem Datagramm in dem dieses Fragmente Offset gehört.Verfahren Fragment in Einheiten von 8 Bytes gemessen wird (64 Bits). Das erste Fragment Null-Offset hat."
So, wie Sie in der Frage gefragt haben, woher diese 8 kam, ist es der Standard, der für die IP-Protokollspezifikation definiert wurde, wo 8 Oktette als ein Wert genommen werden. Dies hilft uns auch dabei, große Pakete zu übertragen.
Seite 28 des RFC schreibt: * Fragmente sind in Einheiten von 8 Bytes gezählt. Die Fragmentierungsstrategie ist so ausgelegt, dass ein unfragmentiertes Datagramm alle Zertrümmerungsinformationen aufweist (MF = 0, Fragment-Offset = 0). Wenn ein Internet-Datagramm fragmentiert ist, muss sein Datenteil an 8 Oktettgrenzen unterbrochen sein. Dieses Format ermöglicht 2 ** 13 = 8192 Fragmente von 8 Oktetts für jeweils insgesamt 65.536 Oktette. Beachten Sie, dass dies mit der dem Datagramm Gesamtlängenfeld (natürlich der Header in der Gesamtlänge gezählt wird und nicht in den Fragmenten). *
Danke! Das hat den ersten Teil meiner Frage klar beantwortet, aber was den zweiten Teil betrifft, warum teilen wir 1480 durch 8, um den Offset zu bekommen? – JimmyK
Ich werde die Antwort aktualisieren. –
Vielen Dank, das beantwortet alles! Ich frage mich nur, teilen wir IMMER immer durch 8? Gibt es Umstände, die dazu führen würden, dass wir uns durch eine andere Nummer teilen? – JimmyK