[Ethereum] What underlying protocols are used to send packets between nodes, and how are messages encrypted

devp2pencryptionprotocolrlpxtransactions

In Ethereum, when we make transactions, which underlying protocol is used to send the packages over the network? And another question, are those messages are encrypted or not?
TCP, UDP, others? All?

Is there a reference you can show me that provides this information? I was unable to find it.

Best Answer

Ethereum uses DevP2P, which is a general protocol of discovery and connection of nodes, with an ethereum subprotocol defined on top of it (as opposed to the subprotocol of swarm, whisper, etc).

You can read the following links to get a deeper view:

If you are more curious, these are the libraries you need to peek on

The connections are made with a TCP simple dial. After the connections are established, a handshake occurs and the messages are encrypted using the nodekey, a 512-bit key each node has. The latter can be defined by yourself, or auto-generated by your node if this one can't find it during start up.