IP-Fragmentierung (MTU)

Peter Griffin

Commander
Registriert
Jan. 2010
Beiträge
2.829
Mich würde mal interessieren, wie IP-Fragmente in Abhängigkeit von der MTU berechnet werden. Angenommen, es handelt sich um ein IP-Paket mit einer Paketlänge von 812 Byte und das Netz hat eine MTU von 600, dann heißt das ja, dass das Paket in kleinere Pakete fragmentiert werden muss. Aber wie sieht hier genau dieser Algorithmus aus? Ich weiß nur, dass zunächst Ethernet- und IP-Header abgezogen werden (Ethernet-Header müsste 14 Byte und IP-Header 20 Byte groß sein) und dann wird durch 8 geteilt (ggf. der nächstkleinere Wert, also grundsätzlich immer ein Vielfaches von 8).

Aber ich bin mir da halt nicht so sicher und würde gerne mal wissen, wie das genau abläuft. Auf Wikipedia habe ich schon nachgeschaut, aber irgendwie ist mir das Verfahren immer noch nicht ganz schlüssig.

Danke im Voraus! :)
 
Passt schon, der Teil der ins erste Paket an Daten reinpasst (wie du geschrieben hast abzüglich Overhead) wird reingepackt, der Rest dann in Paket 2, 3, 4, .... das letzte Paket beinhaltet den Rest.
 
Okay, also:
812-14-20=778
Damit habe ich den Payload von dem 812 Byte großen Paket.

778 ist kein Vielfaches von 8. Aber der nächstkleinere Wert, der ein Vielfaches von 8 ist, ist 776. Also rechne ich 776/8=97. Das wäre dann der Payload von dem Fragment.
Dann wieder die Header dazu (14+20) und dann habe ich ein IP-Fragment von 131 Byte?

Habe ich das so richtig verstanden?
 
https://tools.ietf.org/html/rfc791 schrieb:
To fragment a long internet datagram, an internet protocol module
(for example, in a gateway), creates two new internet datagrams and
copies the contents of the internet header fields from the long
datagram into both new internet headers. The data of the long
datagram is divided into two portions on a 8 octet (64 bit) boundary
(the second portion might not be an integral multiple of 8 octets,
but the first must be). Call the number of 8 octet blocks in the
first portion NFB (for Number of Fragment Blocks). The first
portion of the data is placed in the first new internet datagram,
and the total length field is set to the length of the first
datagram. The more-fragments flag is set to one. The second
portion of the data is placed in the second new internet datagram,
and the total length field is set to the length of the second
datagram. The more-fragments flag carries the same value as the
long datagram. The fragment offset field of the second new internet
datagram is set to the value of that field in the long datagram plus
NFB.

auf seite 26 der rfc ist ein beispiel.
 
Zuletzt bearbeitet:
Ja.
Ergänzung ()

Die Anzahl der Pakete bei einem Download eines Windows-Iso willst du gar nicht wissen :=)
 
deine payload ist wie bereits gesagt 812-20-14=778. deine MTU ist 600. laut RFC gilt:

(3) NFB <- (MTU-IHL*4)/8;
(4) Attach the first NFB*8 data octets;

600-5*4=580. so gross kann die payload des ersten fragments sein (wenn du einen ip header ohne options nutzt -> IHL=5). die payload des zweiten framents ist dann 778-580=198
 
Zurück
Oben