The current p2p implementation of Bitcoin makes its users easily identifiable, as they broadcast their IP addresses to all peers on the network, including nodes set up with the intent to monitor the network and persecute its users.
With this in mind, one may want to disable connections to untrusted third parties, and allow connections only to a few trusted friends. This is the concept of a friend-to-friend (F2F) network (vs a P2P network), and it is described on Wikipedia
http://en.wikipedia.org/wiki/Friend-to-friend in great detail. It has been already implemented in various file sharing programs such as
http://anomos.info/wp/,
http://www.turtle4privacy.org/new/, etc
In such a setup the edges of graph of the Bitcoin network will actually represent physical relationships between the participants in the real world, and the network overall will be much harder to disrupt by brute-force attacks. Even if a malicious third party takes over 51% of the computing power, their blockchain will be rejected by the trust-based f2f network. However, the drawback of this approach is that it would be much harder to build the network initially as more work is required to identify and add friends, whereas with the p2p approach the user just installs the program and is ready to go.
For a stronger bitcoin infrastructure it will be beneficial to keep both the P2P protocol because of its ease of use, and add an F2F protocol because of its resilience. To that end, it is important to decouple the core of bitcoin from the implementation details of the communication protocol.
If problems arise with the p2p approach, one should be able to easily switch to the f2f backend, and connect only to a trusted circle of friends. In case of an emergency law allowing the government to turn off the entire internet completely (like in Egypt right now), then an offline communcation protocol should be put in place, where the user should be able to do off-line transport by transferring packets on flash drives between computers, or via the mail. Although significantly slower, the bitcoin network will still continue to function.
So, are there any plans to decouple the communication protocol from the implementation of bitcoin? Maybe different communication protocols should be handled as plugins that one could easily install or disable depending on his anonymity needs?