I have tried to make connection between several nodes in my private network, but I do it with a direction enode, but Ethereum network does it without knowing my address enode, I want to know what kind of p2p communication protocols used so that all nodes are communicate with each other, and if that code is free.