The Author of this posting offers the information contained within this posting without consideration and with the reader's understanding that there's no implied or expressed suitability or fitness for any purpose. Information provided is for informational purposes only and should not be construed as rendering professional advice of any kind. Usage of this posting's information is solely at reader's own risk.
In no event shall Author be liable for any damages whatsoever (including, without limitation, damages for loss of use, data or profit) arising out of the use or inability to use the posting's information even if Author has been advised of the possibility of such damage.
From where do we come upto 8 bytes.
Because that's what the standard defines.
The thing which is confusing is the statement " The Fragments are specified in units of 8 bytes, which is why Fragment length must be multiple of 8" .
Why Fragments are specified in units of 8 bytes ?
If you're asking why the standard chose increments of 8 bytes, I don't know if that's actually documented, but if not, likely just for two primary reasons. First, no one saw the need to deal with fragments in smaller allocations, i.e. less overhead. Second, it allows you to track size with a smaller binary number.
For the latter, consider IP segments can be (about) 2 ** 16 in size. So, to track this size, we need a 16 bit field. But if want to reduce the size of the size field, say by 3 bits (for the DF flags), we need to scale the counter by 2 ** 3 (or 8).
Something that's often overlooked years or decades later, specifications like these were defined for what was considered practical with current and near term hardware. How fast some technology evolves can come as a surprise. For example, when the IBM PC came out, there was the quote, supposedly made by Bill Gates (which he says he didn't) of "640K ought to be enough for anyone." But even if Bill didn't make such a quote, many couldn't image the need for a larger address space any time soon.