Now we've basically ruined IPv4, peer to peer communication doesn't work for enough users to make it useless, forcing the centralized server-client model. It's not just hardware with bad defaults - try accessing a (non-localhost) website hosted on a port 6666 in Chrome. You can't, Chrome has a blacklist of "insecure" ports. I am baffled such a concept even exists, ports aren't secure or insecure, they are a channel for data. Then I look at websockets and laugh, We rebuilt udp over http over tcp, just so web developers can send arbitrary data again...
I get very upset when I see the same sort of ideas taking hold in IPv6, we have another chance not to ruin this, and yet we seem to want to force the broken IPv4 model, with firewalled NATs, blocked ports, and more broken default settings.