IPv4 is the perfect example of a unnecessarily constraining mid-layer. The
designers arbitrarily decided that 32 bit fixed length addresses would be
good enough indefinitely, when in practice both the fixed length constraint
and the 32 bit constraint were causing serious problems within less than
So to fix this enormous mess, the IETF goes out and designs another
protocol, IPv6, a protocol which is incompatible in almost every way
imaginable with the protocol it is trying to replace, to the point that
many think widespread migration is never going to happen. And IPv6 is
showing signs of premature obsolescence already, in considerable part due
to the effective waste of 64 bits of its 128 bit addresses.
To say nothing of the standard BSD socket interface, which makes it more or
less impossible to write a layer 3 transparent application program, i.e.
one that would work with a layer 3 protocol that hasn't been invented yet.
And so on...