Ethereum peers are addressed in two forms: signed node records carry endpoint fields for discovery, and composed multiaddrs carry endpoints for libp2p dialing.
ENR endpoint fields
An ENR carries endpoint information in its key-value pairs. The standard keys
are ip (a 4-byte IPv4 address), tcp and udp (big-endian ports), and the
IPv6-specific ip6, tcp6, and udp6. When no tcp6 or udp6 port is
provided, the tcp or udp port applies to both addresses. A signed record
keeps its endpoint information valid as long as the signature verifies.
Consensus ENR requirements
A consensus client's ENR MUST contain the compressed secp256k1 public key.
It MAY carry an IPv4 and/or IPv6 address, a quic/quic6 port for the local
libp2p QUIC (UDP) listener, a tcp/tcp6 port for the local libp2p TCP
listener, and a udp/udp6 port for the local discv5 listener.
Multiaddrs
A multiaddr is a composed, self-describing address string that libp2p implementations use to dial and listen. Consensus clients convert the ENR records returned by discv5 into multiaddrs for their libp2p transports. The libp2p addressing specification defines the composition rules; the libp2p stack page states which transports a consensus peer must dial.
The node record page owns the ENR envelope itself.