It's also friends with the two socket classes to allow calling virtual protected member functions...
Ntohs, etc. functions would be easy to get rid of compared to thinking how to do that differently.
And Packet (from its description in docs) seems to be meant mainly for networking, not as a binary data store in general.
There are plenty of nice, easy and human readable formats to save data as, that might be nicer (but less cool
) for development and debugging.