If you separate locators completely from end-point identifiers,
the logical conclusion is NOT to move the function to the
transport layer but to split the IP layer into two halves:
- A "lower" IP that routers packets much as today, and uses
IP addresses as locators.
- An "upper" IP that provides end-point identifiers to the
transport protocols and eventually to the hosted applications,
and maps these identifiers to locators before passing them
to the "lower" IP.
There are a couple of issues with any proposal of that nature, and the
main one is privacy. Having a unique identifier exposed to the network
means that anybody on the path can track the presence and location of
users, with consequence ranging from annoying (e.g. variations of
telemarketing) to downright dramatic (e.g. missile auto-aining to a cell
phone). To meet the privacy requirement, you would want addresses (as
incorporated in the header) to disclose as little as possible about
their owner. In a mobility or multi-homing situation, you may well want
to hide from the network any correlation between addresses that happen
to be used by the same entity.