# Header fields for IP fragments?

I am reading about computer networking and wanted to solve some related problems provided in the book. However, for this problem, no solution has been provided by the authors so I do not know my attempt is correct or if there might be some mistakes that I can learn from. So I will try to reach out to you guys :)

The problem is:

Consider sending a 1,600-byte datagram into a link that has an MTU of 500 bytes. Suppose the original datagram is stamped with the identification number 291. How many fragments are generated? What are the values in the various fields in the IP datagram(s) generated related to fragmentation?

My solution is: (I assume 20-byte IP headers)

• What book is this question from? Feb 1, 2020 at 9:30
• "computer networking a top down approach" 7th edition Feb 2, 2020 at 16:34

The fragment offset needs to be a multiple of 8 as its field can only store the upper 13 bits. See RFC 791:

Fragments are counted in units of 8 octets. The fragmentation strategy is designed so than an unfragmented datagram has all zero fragmentation information (MF = 0, fragment offset = 0). If an internet datagram is fragmented, its data portion must be broken on 8 octet boundaries.

Accordingly, the 2nd fragment starts at offset 496.

It can carry only 480 more payload bytes, so the 3rd frag starts at 976, and the 4th at 1456.

• Thank you! "The fragment offset needs to be a multiple of 8 as its field can only store the upper 13 bits" - could you elaborate a little bit? I think that I get it but not 100%. This was not mentioned in the book that I read "computer networking a top down approach" Feb 2, 2020 at 16:33
• @dip I've added a reference to RFC 791 to the answer.
– Zac67
Feb 2, 2020 at 16:47
• Wait, just came up with a question: You say that the 2nd fragment starts at offset 496. I assume this means that its offset is 496. If so, why? I mean 480 (as I wrote in my answer) is indeed a multiple of 8 - so how can that not be correct when the size of the previous fragment is 480? Feb 2, 2020 at 20:35
• @dip You' want to use the largest packet inside the MTU limit you can send - that's 496 bytes for the first fragment. Of course, you could send everything in smaller fragments, down to 8 bytes each, but that would produce tons of excess overhead.
– Zac67
Feb 2, 2020 at 20:45
• Ahhh okay, cool. So my original answer for the 2nd fragment is technically not wrong? Just to confirm :) Feb 2, 2020 at 21:32